2013-07-23 48 views
0

我正在寫使用少量工人的webapp。我決定使用JMS ActiveMQ來進行它們之間的通信。我的問題是,當我改變工人配置到Java(當配置在XML我無法運行JAR)當消息返回到Web應用程序,我有問題:春天,jms丟失的上下文

2013-07-19 21:23:23.653 [org.springframework.jms.listener.DefaultMessageListenerContainer#4-3] WARN o.s.j.l.DefaultMessageListenerContainer - Execution of JMS message listener failed, and no ErrorHandler has been set. 
java.lang.IllegalStateException: No thread-bound request found: Are you referring to request attributes outside of an actual web request, or processing a request outside of the originally receiving thread? If you are actually operating within a web request and still receive this message, your code is probably running outside of DispatcherServlet/DispatcherPortlet: In this case, use RequestContextListener or RequestContextFilter to expose the current request. 
at org.springframework.web.context.request.RequestContextHolder.currentRequestAttributes(RequestContextHolder.java:131) ~[spring-web-3.2.2.RELEASE.jar:3.2.2.RELEASE] 
at org.springframework.web.context.support.WebApplicationContextUtils.currentRequestAttributes(WebApplicationContextUtils.java:281) ~[spring-web-3.2.2.RELEASE.jar:3.2.2.RELEASE] 
at org.springframework.web.context.support.WebApplicationContextUtils.access$300(WebApplicationContextUtils.java:69) ~[spring-web-3.2.2.RELEASE.jar:3.2.2.RELEASE] 
at org.springframework.web.context.support.WebApplicationContextUtils$RequestObjectFactory.getObject(WebApplicationContextUtils.java:296) ~[spring-web-3.2.2.RELEASE.jar:3.2.2.RELEASE] 
at org.springframework.web.context.support.WebApplicationContextUtils$RequestObjectFactory.getObject(WebApplicationContextUtils.java:292) ~[spring-web-3.2.2.RELEASE.jar:3.2.2.RELEASE] 
at org.springframework.beans.factory.support.AutowireUtils$ObjectFactoryDelegatingInvocationHandler.invoke(AutowireUtils.java:179) ~[spring-beans-3.2.2.RELEASE.jar:3.2.2.RELEASE] 
at com.sun.proxy.$Proxy52.getScheme(Unknown Source) ~[na:na] 
at pl.optymalnetrasy.jms_calculate.CalculateResponseListener.getResultURL(CalculateResponseListener.java:144) ~[CalculateResponseListener.class:na] 
at pl.optymalnetrasy.jms_calculate.CalculateResponseListener.onMessage(CalculateResponseListener.java:73) ~[CalculateResponseListener.class:na] 
at org.springframework.jms.listener.adapter.MessageListenerAdapter.onMessage(MessageListenerAdapter.java:330) ~[spring-jms-3.2.2.RELEASE.jar:3.2.2.RELEASE] 
at org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:537) ~[spring-jms-3.2.2.RELEASE.jar:3.2.2.RELEASE] 
at org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:497) ~[spring-jms-3.2.2.RELEASE.jar:3.2.2.RELEASE] 
at org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:468) ~[spring-jms-3.2.2.RELEASE.jar:3.2.2.RELEASE] 
at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:325) [spring-jms-3.2.2.RELEASE.jar:3.2.2.RELEASE] 
at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:263) [spring-jms-3.2.2.RELEASE.jar:3.2.2.RELEASE] 
at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1096) [spring-jms-3.2.2.RELEASE.jar:3.2.2.RELEASE] 
at  org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1088) [spring-jms-3.2.2.RELEASE.jar:3.2.2.RELEASE] 
at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:985) [spring-jms-3.2.2.RELEASE.jar:3.2.2.RELEASE] 
at java.lang.Thread.run(Thread.java:722) [na:1.7.0_21] 

我沒有任何想法如何收回應消息回來時的上下文。

回答

0

您正試圖從JMS線程訪問Web資源,這是不允許的。

違規代碼似乎在CalculateResponseListener.getResultURL()

您需要重新構建您的應用程序以避免這種情況。

+0

好吧,但更早的時候,我在xml文件中配置它的工作。我知道是不允許的,但我不知道如何處理來自工人的迴應。在他回覆之後,我需要在webapp中做些什麼,但是不知道如何。 –