Spring Framework中的NullPointerException(或什么?)

| 我遇到了一个非常奇怪的问题,我根本不知道从哪里开始。在我们的工作应用程序中,我们的页面之一似乎会任意失败-也就是说,有时它会起作用,有时却不会。 该Web应用程序正在运行Java 6,Spring 2.5.6和Hibernate 3.2.6。此外,我们正在使用Javax.servlet 3.0版(可能是相对的)。 由于堆栈跟踪非常有限,问题似乎变得很棘手,该堆栈跟踪似乎不涉及我们的任何自定义代码(我们所有的类均以com.isworld。*开头)。 提交表单并处理请求后,加载页面后发生错误。请参阅下面的stacktrace:
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.NullPointerException
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:583)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:511)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:265)
org.acegisecurity.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:107)
org.acegisecurity.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:72)
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:124)
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
org.acegisecurity.wrapper.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:81)
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142)
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271)
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
org.acegisecurity.ui.logout.LogoutFilter.doFilter(LogoutFilter.java:110)
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249)
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
org.acegisecurity.util.FilterChainProxy.doFilter(FilterChainProxy.java:149)
org.acegisecurity.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:98)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)

root cause

java.lang.NullPointerException
这就是stacktrace的全部内容。 我不希望你们中的任何一个提出这个问题的解决方案,但希望您能指出我的方向-我没有更多的想法...     
已邀请:
        Spring Framework是开源的,对吗?因此,让我们看一下
FrameworkServlet
的583行有什么... 我们可以找到以下内容:
try {
    doService(request, response);
//omit a few catches...
} catch (Throwable ex) {
    failureCause = ex;
throw new NestedServletException(\"Request processing failed\", ex); //line 583
}
因此,异常来自“ 3”方法,并且由Spring Framework正确处理。让我们来看看麻烦的
doService
方法...
FrameworkServlet.doService
是抽象的,但已在
DispatcherServlet
中实现,您很可能在项目中使用它。此外,它调用\'doDispatch \',将对请求的处理分派给控制器。 我的直觉告诉我,我们一直在这里狩猎的讨厌的
NPE
一直隐藏在您的控制器代码中...     
        在您的IDE中将断点设置为NullPointerException的“抛出时停止”(如有必要,请附加远程调试器)     
        我与@Hoof有相同的症状。但就我而言,这是在我的开发笔记本电脑中。重新启动tomcat的根本原因后,现在再次可以看到它的Stacktrace。     
        因此,在Servlet执行期间会发生NullPointerException,而Spring框架会捕获此异常,该框架似乎并没有显示它。 您需要知道此NullPointerException发生的位置。 这是进一步调查的两种可能方法: 在Spring源代码中更改FrameworkServlet.java,以便显示引起异常的堆栈跟踪。 用try / catch包装您的servlet,以捕获所有异常,如下所示: 尝试{   ...您的Servlet代码... } catch(RuntimeException e){   e.printStackTrace(); }     

要回复问题请先登录注册