Java 在将Spring引导应用程序作为war部署到Jetty时,如何防止无休止的循环?

Java 在将Spring引导应用程序作为war部署到Jetty时,如何防止无休止的循环?,java,spring,spring-boot,Java,Spring,Spring Boot,这类似于:但不是同一件事。我没有使用自定义错误控制器,只是一个带有百里香模板的错误网页。我使用的是弹簧靴1.1.3.RELEASE和弹簧靴执行器1.1.3.RELEASE 我有一个生成应用程序/八位字节流的方法。当一个错误发生,我运行嵌入式,我会得到一个Jetty错误页面。当我在Jetty Jetty-9.1.4.v20140401中运行部署为战争时,它会进入一个无休止的循环 如果我将products类型更改为“application/json”,它将返回预期的json响应: {"timesta

这类似于:但不是同一件事。我没有使用自定义错误控制器,只是一个带有百里香模板的错误网页。我使用的是弹簧靴1.1.3.RELEASE和弹簧靴执行器1.1.3.RELEASE

我有一个生成应用程序/八位字节流的方法。当一个错误发生,我运行嵌入式,我会得到一个Jetty错误页面。当我在Jetty Jetty-9.1.4.v20140401中运行部署为战争时,它会进入一个无休止的循环

如果我将products类型更改为“application/json”,它将返回预期的json响应:

{"timestamp":1404326345115,"status":500,"error":"Internal Server Error","exception":"java.io.IOException","message":"Cannot run program \"./makenode.sh\" (in directory \"/opt/myapp/rabbitmq\"): error=2, No such file or directory"}
如果我将其作为应用程序/八位字节流,我会陷入这个循环:

    at org.springframework.boot.context.web.ErrorPageFilter.handleErrorStatus(ErrorPageFilter.java:119)
at org.springframework.boot.context.web.ErrorPageFilter.doFilter(ErrorPageFilter.java:100)
at org.springframework.boot.context.web.ErrorPageFilter.doFilter(ErrorPageFilter.java:85)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1622)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:549)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:586)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:221)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1111)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:478)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:183)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1045)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
at org.eclipse.jetty.server.Dispatcher.forward(Dispatcher.java:261)
at org.eclipse.jetty.server.Dispatcher.forward(Dispatcher.java:101)
at org.springframework.boot.context.web.ErrorPageFilter.handleErrorStatus(ErrorPageFilter.java:119)
at org.springframework.boot.context.web.ErrorPageFilter.doFilter(ErrorPageFilter.java:100)
at org.springframework.boot.context.web.ErrorPageFilter.doFilter(ErrorPageFilter.java:85)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1622)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:549)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:586)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:221)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1111)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:478)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:183)

如果我运行embedded Jetty,则不会发生此循环。

在Boot 1.1.3中,嵌入式servlet容器被打包到可执行jar中的错误位置时出现问题:。值得尝试使用1.1.4快照来消除这一问题。也值得尝试使用Tomcat(只是为了了解可能导致问题的原因)。我最终选择了嵌入式Tomcat,而不是部署的war。简化了很多事情。