我有一个启用了 spring-boot-starter-actuator 的 spring-boot 应用程序。 如果我将 war 文件部署到 tomcat 容器中,我会在遇到未映射的 uri 时发生堆栈溢出。
2014-06-03 17:24:28,312 WARN [http-bio-8080-exec-3] o.s.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/catalog/products] in DispatcherServlet with name 'dispatcherServlet'
Exception in thread "http-bio-8080-exec-3" java.lang.StackOverflowError
at org.apache.catalina.core.ApplicationHttpRequest.setAttribute(ApplicationHttpRequest.java:281)
at org.apache.catalina.core.ApplicationHttpRequest.setAttribute(ApplicationHttpRequest.java:281)
at org.apache.catalina.core.ApplicationHttpRequest.setAttribute(ApplicationHttpRequest.java:281)
at org.apache.catalina.core.ApplicationHttpRequest.setAttribute(ApplicationHttpRequest.java:281)
at org.apache.catalina.core.ApplicationHttpRequest.setAttribute(ApplicationHttpRequest.java:281)
at org.apache.catalina.core.ApplicationHttpRequest.setAttribute(ApplicationHttpRequest.java:281)
at org.apache.catalina.core.ApplicationHttpRequest.setAttribute(ApplicationHttpRequest.java:281)
at org.apache.catalina.core.ApplicationHttpRequest.setAttribute(ApplicationHttpRequest.java:281)
at org.apache.catalina.core.ApplicationHttpRequest.setAttribute(ApplicationHttpRequest.java:281)
at org.apache.catalina.core.ApplicationHttpRequest.setAttribute(ApplicationHttpRequest.java:281)
at org.apache.catalina.core.ApplicationHttpRequest.setAttribute(ApplicationHttpRequest.java:281)
at org.apache.catalina.core.ApplicationHttpRequest.setAttribute(ApplicationHttpRequest.java:281)
at org.springframework.boot.context.web.ErrorPageFilter.setErrorAttributes(ErrorPageFilter.java:164)
at org.springframework.boot.context.web.ErrorPageFilter.handleException(ErrorPageFilter.java:131)
at org.springframework.boot.context.web.ErrorPageFilter.doFilter(ErrorPageFilter.java:104)
at org.springframework.boot.context.web.ErrorPageFilter.doFilter(ErrorPageFilter.java:85)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:749)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:487)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:412)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:339)
at org.springframework.boot.context.web.ErrorPageFilter.handleException(ErrorPageFilter.java:135)
at org.springframework.boot.context.web.ErrorPageFilter.doFilter(ErrorPageFilter.java:104)
at org.springframework.boot.context.web.ErrorPageFilter.doFilter(ErrorPageFilter.java:85)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:749)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:487)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:412)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:339)
我尝试实现 ErrorController,但没有成功。有人看到类似的问题吗?可能是什么原因造成的?
但是,如果我使用嵌入式 tomcat 服务器运行,则显示白色标签错误页面时一切看起来都很好。由于各种操作原因,我需要在 tomcat 容器中运行该应用程序。非常感谢任何帮助。
更新: 我将其缩小为一个包装 servlet 请求和响应的过滤器。我无法解释为什么当这个过滤器和执行器都包含在 tomcat 容器中时它会出现问题。当其中任何一个不包括在内时,它都可以正常工作。我创建了一个示例应用程序,其中的代码刚好可以在 Sample Code 中复制它
最佳答案
看起来这是 Spring Boot 1.1.4 的错误。查看https://github.com/spring-projects/spring-boot/issues/1343 .已在 1.1.5 版中修复。
关于带有 Spring Boot 执行器和 Tomcat 的 java.lang.StackOverflowError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24025352/