gpt4 book ai didi

java - 调用不存在的 URL 时避免 StackOverflowError

转载 作者:行者123 更新时间:2023-11-30 02:56:19 26 4
gpt4 key购买 nike

我有一个在 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 是否存在,如果不存在,则重定向到错误页面或其他内容。

非常感谢您的建议。

最佳答案

修改了您的 web.xml 文件。使用以下代码。

<error-page>
<error-code>404</error-code>
<location>/error404.jsp</location>
</error-page>

关于java - 调用不存在的 URL 时避免 StackOverflowError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37146347/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com