IllegalArgumentException - '没有servlet上下文分派给'异步servlet的失败'错误

时间:2015-10-17 15:07:04

标签: asynchronous jetty undertow continuation

当我试图发送httpresponse时,我收到以下错误。

 java.lang.IllegalArgumentException: UT010046: No servlet context at  to dispatch to    
 at io.undertow.servlet.spec.AsyncContextImpl.dispatch(AsyncContextImpl.java:173)  [undertow-servlet-1.1.0.Final.jar!/:1.1.0.Final]
 at org.eclipse.jetty.continuation.Servlet3Continuation.resume(Servlet3Continuation.java:152) ~[jetty-continuation.jar:8.1.3.v20120416]
 at com.xyz.xyzapp.apihandler.util.AsyncJobWaitingAPIHandler$MultiJobCompletionContext.onListenerCompletion(AsyncJobWaitingAPIHandler.java:460) ~[xyzapp-apihandler.jar:1.4.1-2015.10.dev]
 at com.xyz.xyzapp.apihandler.util.AsyncJobWaitingAPIHandler$MultiJobCompletionListener.onCompletion(AsyncJobWaitingAPIHandler.java:492) ~[xyzapp-apihandler.jar:1.4.1-2015.10.dev]
 at com.xyz.xyzapp.job.JobEngine$4.onEvent(JobEngine.java:274) ~[xyzapp-job.jar:1.4.1-2015.10.dev]
 at com.xyz.xyzapp.job.JobEngine$4.onEvent(JobEngine.java:269) ~[xyzapp-job.jar:1.4.1-2015.10.dev]
 at com.xyz.xyzapp.core.event.multicast.LocalMulticastEventManager$1.run(LocalMulticastEventManager.java:134) ~[xyzapp-core.jar:1.4.1-2015.10.dev]
 at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:53) ~[spring-context.jar:3.2.9.RELEASE]
 at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_51] 
 at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_51]
 at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) [na:1.8.0_51]
 at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) [na:1.8.0_51]     
 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_51]    
 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_51]

我使用Jetty.Continuation(8.1.3)暂停HTTPrequest。我有一个部署在wildfly(8.2.0.Final)中的spring(3.2.9)应用程序。 Spring servlet通过web-fragment.xml配置,表明servlet是异步的

<servlet>
    <servlet-name>apis</servlet-name>
    <servlet-class>com.xyz.xyzapp.server.common.spring.ClassloaderOverridingDispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
    <async-supported>true</async-supported>
</servlet>

当其中一个工作(工作是内部框架)完成时,它需要回复客户端(无论谁在监听) 那份工作完成了。在此工作流程中,我收到上述错误。

我确保野生动物正在运行,客户实际上在等待响应。

这与Jboss 6.1.0.Final/Tomcat合作。

可能是什么问题?我需要在standalone-full.xml中添加任何配置吗?似乎已经关闭了HTTPrequest,不确定。

1 个答案:

答案 0 :(得分:0)

当我使用此处发布的示例https://examples.javacodegeeks.com/enterprise-java/jetty/jetty-continuations-example/时,它对我来说完全适用于相同版本的jboss和jetty。然后我修改了示例war以侦听'/'根上下文,问题开始显现。事实证明,这是一个导致此异常的问题。 https://issues.jboss.org/browse/UNDERTOW-352

我们升级到8.2.1.Final版本的野生蝇,它已经进行了修复并将码头升级到最新以解决问题。