Java 在调用不存在的URL时避免StackOverflowerError
我有一个在Tomcat7.0服务器上运行的带有SpringMVC的web应用程序 应用程序运行良好,但每当我尝试调用未配置的URL时,我都会看到大量错误和Java 在调用不存在的URL时避免StackOverflowerError,java,spring,spring-mvc,tomcat7,Java,Spring,Spring Mvc,Tomcat7,我有一个在Tomcat7.0服务器上运行的带有SpringMVC的web应用程序 应用程序运行良好,但每当我尝试调用未配置的URL时,我都会看到大量错误和stackoverflowerrror异常。我的日志示例: SEVERE: Servlet.service() for servlet BatchUI threw exception java.lang.StackOverflowError at org.apache.catalina.core.ContainerBase.getMan
stackoverflowerrror
异常。我的日志示例:
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是否存在,如果不存在,则重定向到错误页面或其他内容
非常感谢您的建议。修改了您的web.xml文件。使用下面的代码
<error-page>
<error-code>404</error-code>
<location>/error404.jsp</location>
</error-page>
404
/error404.jsp
谢谢,这修复了重定向到另一个页面的问题,我仍然想知道是否可以避免出现大量StackOverflower错误异常。看看这个项目,我认为您没有以最佳方式使用spring mvc。这个项目是RESTfulAPI的基础,但它实际上使用SpringMVC