严重 [http-nio-8080-exec-4] org.apache.catalina.core.StandardWrapperValve.invoke

Immer_L6 2018-05-22 10:09:50
问题如上,严重 [http-nio-8080-exec-4] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [PrepareAndExecuteServlet] in context with path [] threw exception 这个报错调了好久,就是出不来,有没有小伙伴遇到过的
...全文
9321 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Immer_L6 2018-05-22
  • 打赏
  • 举报
回复 1
这是debug设置 return instance 上的断点 不知道这样有没有获取到 我这里访问的是 preIndex.action 它会加载数据库中数据 并以每页5条的数据显示出来
Immer_L6 2018-05-22
  • 打赏
  • 举报
回复
引用 6 楼 yjsl__ 的回复:
ActionContext.getInstance().setRequest(request);没获取到ActionContext的实例对象
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 = new ThreadLocal<>();
    private ActionContext() {
        Map<String,Object> map = new HashMap<>();
        threadLocal.set(map);
    }
    private static ActionContext instance = new ActionContext();
    public static ActionContext getInstance() {
        return instance;
    }
    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");
    }
}
yjsl__ 2018-05-22
  • 打赏
  • 举报
回复
ActionContext.getInstance().setRequest(request);没获取到ActionContext的实例对象
Immer_L6 2018-05-22
  • 打赏
  • 举报
回复
引用 2 楼 yjsl__ 的回复:
ActionContext19行空指针
空指针的话,我debug了好久,看不出来哪里有问题……
Immer_L6 2018-05-22
  • 打赏
  • 举报
回复
package com.gem.struts.core;

import com.gem.fruit.util.StringUtil;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.*;

/**
 * 中央控制器
 */
@WebServlet(name = "PrepareAndExecuteServlet", urlPatterns = "*.action")
public class PrepareAndExecuteServlet extends HttpServlet {

    private ActionMapper mapper = new ActionMapper();

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        response.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");

        ActionContext.getInstance().setRequest(request);
        ActionContext.getInstance().setResponse(response);

        //获取统一 request 参数 保存在 Map 中去
        Map<String, String> paramsMap = showParams(request);

        String servletPath = request.getServletPath();
        if (StringUtil.isNoEmpty(servletPath)) {
            String path = servletPath.substring(1);
            int index = path.lastIndexOf(".action");
            path = path.substring(0, index);
            //获取 path 所对应的 action 类 实例对象
            Object actionObj = mapper.getMap().get(path);
            //回调set方法 将对象的
            invokeSetMethod(actionObj, paramsMap);
            if (actionObj != null) {
                ReflectUtil.invokeMethod(actionObj, "execute");
            } else {
                response.sendRedirect("error.jsp");
            }
        }
    }


    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }

    private void invokeSetMethod(Object actionObj, Map<String, String> params) {
        Set<String> keySet = params.keySet();
        Iterator<String> iterator = keySet.iterator();
        while (iterator.hasNext()) {
            String propertyName = iterator.next();
            String propertyValue = params.get(propertyName);
            String setMethodName = "set" + propertyName.substring(0, 1).toUpperCase() + propertyName.substring(1);
            ReflectUtil.invokeMethod(actionObj, setMethodName, propertyValue);
        }

    }

    private Map<String, String> showParams(HttpServletRequest request) {
        Map<String, String> params = new HashMap<>();
        Enumeration<String> parameterNames = request.getParameterNames();

        while (parameterNames.hasMoreElements()) {
            String paramName = parameterNames.nextElement();
            String paramValue = request.getParameter(paramName);
            params.put(paramName, paramValue);
        }
        return params;
    }
}
这里是我 PrepareAndExecuteServlet 页面
Immer_L6 2018-05-22
  • 打赏
  • 举报
回复
空指针的话,我debug了好久,看不出来哪里有问题
yjsl__ 2018-05-22
  • 打赏
  • 举报
回复
ActionContext19行空指针
Immer_L6 2018-05-22
  • 打赏
  • 举报
回复
Immer_L6 2018-05-22
  • 打赏
  • 举报
回复
具体解决方法可移步到我的博客文章地址https://blog.csdn.net/Immer_L6/article/details/80411084
Immer_L6 2018-05-22
  • 打赏
  • 举报
回复
首先感谢这位小伙伴的回答,这个问题已经解决
yjsl__ 2018-05-22
  • 打赏
  • 举报
回复
Tomcat自己会开新线程的,求高人解决
package question;

import java.util.HashMap;
import java.util.Map;

public class Tests {

	public static void main(String[] args) {
		ActionContext.getInstance().setRequest(1);
		ActionContext.getInstance().setRequest(2);
		
		new Thread() {
		    @Override
		    public void run() {
		    	ActionContext.getInstance().setRequest(3);
		    }
		}.start();
	}
}

class ActionContext {
	private ThreadLocal<Map<String, Object>> threadLocal = new ThreadLocal<>();

	private ActionContext() {
		Map<String, Object> map = new HashMap<>();
		threadLocal.set(map);
	}

	private static ActionContext instance = new ActionContext();

	public static ActionContext getInstance() {
		return instance;
	}

	public void setRequest(Object request) {
		Map<String, Object> map = threadLocal.get();
		System.out.println(map);
		map.put("request", request);
	}

	public void setResponse(Object response) {
		threadLocal.get().put("response", response);
	}

}
Exception in thread "Thread-0" java.lang.NullPointerException at question.ActionContext.setRequest(Tests.java:38) at question.Tests$1.run(Tests.java:15)
Immer_L6 2018-05-22
  • 打赏
  • 举报
回复
有没有小伙伴来分享一下思路啊
以下的问题是由于java的堆内存已满,需要java运行时加大java的堆内存空间 2019-10-09 18:02:32.858 [http-nio-8239-exec-6] ERROR c.a.b.c.exceptionHandler.CodeBaseExceptionHandler:69 - Handler dispatch failed; nested exception is java.lang.OutOfMemoryError: Java heap space org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.OutOfMemoryError: Java heap space at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1006) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:925) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:974) at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:877) at javax.servlet.http.HttpServlet.service(HttpServlet.java:661) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:851) at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:96) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at com.github.xiaoymin.swaggerbootstrapui.filter.SecurityBasicAuthFilter.doFilter(SecurityBasicAuthFilter.java:80) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at com.github.xiaoymin.swaggerbootstrapui.filter.ProductionSecurityFilter.doFilter(ProductionSecurityFilter.java:53) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:61) at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108) at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137) at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125) at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66) at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449) at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365) at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90) at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83) at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:387) at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362) at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:123) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:109) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:93) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:496) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:790) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1468) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:748) Caused by: java.lang.OutOfMemoryError: Java heap space

81,118

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧