Spring Framework中的NullPointerException(还是什么?)

Hoo*_*oof 6 java spring servlets exception servlet-filters

我遇到了一个非常奇怪的问题,我根本不知道,从哪里开始.在我们的工作应用程序中,我们的一个页面似乎有点失败 - 也就是说,有时它可以工作,有时它不会.

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
Run Code Online (Sandbox Code Playgroud)

这就是堆栈跟踪的全部内容.

我不希望你们中的任何一个人想出这个问题的解决方案,但希望你能指出我的方向 - 我没有更多的想法......

Jer*_*ome 0

因此,在 servlet 执行期间会发生 NullPointerException,并且该异常被 Spring 框架捕获,而 Spring 框架似乎并没有费心显示它。

您需要知道这个 NullPointerException 发生在哪里。

以下是进一步调查的两种可能方法:

  • 更改 Spring 源中的 FrameworkServlet.java,以便显示导致异常的堆栈跟踪。
  • 用 try/catch 包装 servlet 以捕获所有异常,如下所示:

    try { ...您的 servlet 代码 ... } catch (RuntimeException e) { e.printStackTrace(); }