使用 ThreadLocal 在项目中 出现报错
严重 [http-nio-8080-exec-4] org.apache.catalina.core.StandardWrapperValve.invoke
具体问题可以查看我提问题的链接https://bbs.youkuaiyun.com/topics/392383155
这里贴上我的解决方法
package com.gem.struts.core;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
import java.util.Map;
public class ActionContext {
private ThreadLocal<Map<String, Object>> threadLocal = ThreadLocal.withInitial(() -> new HashMap<>());
private static ActionContext context = new ActionContext();
public static ActionContext getContext() {
return context;
}
public void setRequest(HttpServletRequest request) {
threadLocal.get().put("request", request);
}
public void setResponse(HttpServletResponse response) {
threadLocal.get().put("response", response);
}
public HttpServletRequest getRequest() {
return (HttpServletRequest) threadLocal.get().get("request");
}
public HttpServletResponse getResponse() {
return (HttpServletResponse) threadLocal.get().get("response");
}
}
很感谢 我那帖子的回答者,他最后那段代码,提到了线程Tomcat问题,于是乎在百度搜索相关内容,链接https://www.cnblogs.com/dolphin0520/p/3920407.html
这里重启Tomcat运行成功,我的编辑器提示我划线的部分可以用其他代码代替
根据它的提示我又在百度上搜了关于 ThreadLocal.withInitial()
链接https://www.cnblogs.com/protected/p/7395717.html 最后看到的就是我贴上去的代码了,貌似这种写法是在8之后有的。总之问题解决了,起码项目每个功能都能跑起来,如果有更好的解决方法和思路,可以互相交流……