【发布时间】:2016-05-10 18:33:11
【问题描述】:
我有一个在 Tomcat 7.0 服务器上运行的带有 Spring MVC 的 Web 应用程序。
应用程序运行良好,但每当我尝试调用未配置的 URL 时,我都会看到很多错误和 StackOverflowError 异常。我的日志样本:
SEVERE: Servlet.service() for servlet BatchUI threw exception
java.lang.StackOverflowError
at org.apache.catalina.core.ContainerBase.getManager(ContainerBase.java:466)
at org.apache.catalina.connector.Request.doGetSession(Request.java:2905)
at org.apache.catalina.connector.Request.getSession(Request.java:2310)
at org.apache.catalina.connector.RequestFacade.getSession(RequestFacade.java:897)
at javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:229)
at org.apache.catalina.core.ApplicationHttpRequest.getSession(ApplicationHttpRequest.java:592)
at javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:229)
at org.apache.catalina.core.ApplicationHttpRequest.getSession(ApplicationHttpRequest.java:592)
at javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:229)
at org.apache.catalina.core.ApplicationHttpRequest.getSession(ApplicationHttpRequest.java:592)
at javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:229)
我的应用初始化程序如下所示:
private static final String DISPATCHER_SERVLET_NAME = "BatchUI";
private static final String DISPATCHER_SERVLET_MAPPING = "/";
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
//Load application context
AnnotationConfigWebApplicationContext rootContext = new AnnotationConfigWebApplicationContext();
rootContext.register(SpringContextConfiguration.class);
rootContext.setDisplayName("User Interface");
//Context loader listener
servletContext.addListener(new ContextLoaderListener(rootContext));
//Dispatcher servlet
ServletRegistration.Dynamic dispatcher =
servletContext.addServlet(DISPATCHER_SERVLET_NAME, new DispatcherServlet(rootContext));
dispatcher.setLoadOnStartup(1);
dispatcher.addMapping(DISPATCHER_SERVLET_MAPPING);
}
大约 10-15 秒后,内部服务器错误返回到浏览器,但我的日志中充满了与我发布的一样的痕迹。
那么,有没有办法避免这些错误?或者可能有更好的方法来处理它们?
我正在考虑添加过滤器并检查请求以验证 URL 是否存在,如果不存在,则重定向到错误页面或其他内容。
非常感谢您的任何建议。
【问题讨论】:
标签: java spring spring-mvc tomcat7