带有 Spring Boot 执行器和 Tomcat 的 java.lang.StackOverflowError

标签 java spring tomcat spring-boot

我有一个启用了 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/

相关文章:

java - 在java中通过字符串切换大小写 < 1.7

java - 如何在 hibernate 配置文件中使用环境变量?

android - Android 的 Spring : add get parameter to every request

java - Tomcat 不读取链接作为参数

java - 如何为在 Tomcat 上运行的应用程序使用 System.getProperty()

java - Gson反序列化内部部分

java - findviewbyid 在对话框中返回 null

java - Spring Validator - 使用 <form :errors 显示错误

java - 未找到带有基于 java 配置的 URI 的 HTTP 请求的映射

windows - 无法在 apache 7.0.25 的 Windows Vista 中找到 htdocs 文件夹