Java !从Jetty 7切换到Jetty 9时支持的异步异常
我们最近升级了jetty版本。当我们这样做时,我们的两个遗留gui war文件都停止了正常工作,这两个文件在一段时间内没有人修改过。我相信我找到了代理的根本原因(用于代理另一个端口上的restful接口),对代理的任何调用都会引发异常:Java !从Jetty 7切换到Jetty 9时支持的异步异常,java,jetty,war,Java,Jetty,War,我们最近升级了jetty版本。当我们这样做时,我们的两个遗留gui war文件都停止了正常工作,这两个文件在一段时间内没有人修改过。我相信我找到了代理的根本原因(用于代理另一个端口上的restful接口),对代理的任何调用都会引发异常: IllegalStateException: !asyncSupported 我不确定为什么1.9版会出现这种情况,但旧码头却不会。我目前无法构建war文件,这是一个只有一个开发人员才能构建的混乱文件,但我使用jetty-x解压它,并加载到web.xml文件
IllegalStateException: !asyncSupported
我不确定为什么1.9版会出现这种情况,但旧码头却不会。我目前无法构建war文件,这是一个只有一个开发人员才能构建的混乱文件,但我使用jetty-x解压它,并加载到web.xml文件的servlet部分,如下所示:
<async-supported>true</async-supported>
true
然后用jarc命令重新压缩它。这似乎没有什么帮助,尽管现在我在jetty日志文件中看到异常,而以前它们只显示在浏览器中
谁能告诉我如何激活异步支持和/或为什么jetty中的交换机会导致这种情况?啊,规范的演变
- Jetty7是Servlet2.5(那里没有异步)
- Jetty 8是Servlet 3.0(引入了异步)-规范对默认值含糊不清,因此Jetty默认为
async-supported==true
- Jetty 9是Servlet 3.1(甚至更异步)——规范已经澄清,Jetty选择了它的默认版本。根据规范,默认值为
async supported==false
提交:我还不能(目前)将此作为评论,但我想补充一点:如果您遇到此问题,并且已经适当地添加了支持异步的标记(或者正在使用Jetty 8),请确保您的筛选器也支持异步,或者没有与所讨论的servlet一起使用。我的例外情况与您相同。然后我将“
true
”附加到每个servlet和过滤器。它工作得很好。
请原谅
<filter>
<filter-name>continuation</filter-name>
<filter-class>org.eclipse.jetty.continuation.ContinuationFilter</filter-class>
<async-supported>true</async-supported>
</filter>
<servlet>
<servlet-name>cometd</servlet-name>
<servlet-class>org.cometd.annotation.AnnotationCometdServlet</servlet-class>
<load-on-startup>1</load-on-startup>
<async-supported>true</async-supported>
</servlet>
延续
org.eclipse.jetty.continuation.ContinuationFilter
真的
降临
org.cometd.annotation.annotationCometServlet
1.
真的
另一方面。如果您使用jetty9.x。您最好将comet jar更新为3.0.x或更高版本。我希望它能帮助您。对于基于Java的配置,您可以使用
@javax.servlet.annotation.WebServlet(name = "HelloWorld",urlPatterns = { "/MyServlet" },asyncSupported =true)
那么…我有没有办法在jetty配置中将jetty默认为这个,而不是war filse;sicne我现在无法重建战争?抱歉,没有快速的解决方案。请随意提交一个bug,请求进行此增强。可以通过可部署上下文xmlNice添加的自定义WebAppContext属性实现!非常感谢。