[ https://issues.apache.org/activemq/browse/SM-782?page=comments#action_37723 ] Guillaume Nodet commented on SM-782: ------------------------------------
I think the problem comes from the fact that the endpoint is re-deployed. In such a case, another instance of the endpoint will be created, so that the pendingMessages map will be lost. For InOnly meps, it should be easy, as you said, to bypass this in case of DONE status. For ERROR status, well, not sure yet. For other meps, a better may be to extract the needed informations and put them as properties (they must be serializable) on the exchange, so that the jms component does not need to keep any state (hence, another component should be able to handle the answer if needed). > Re-deploy with In-Only Mep > -------------------------- > > Key: SM-782 > URL: https://issues.apache.org/activemq/browse/SM-782 > Project: ServiceMix > Issue Type: Bug > Components: servicemix-jms > Affects Versions: 3.1 > Environment: Linux x86/ Java (1.5.0_09) > Reporter: Grégoire A. > > First deploy JMS-endpoint with target InOnly Service like Mail. > Run several call. > redeploy the same JMS-endpoint without modification. > And recall the service, u should have this exception. > It could be a safe thread pb, this error is launched in 75% of the cases. > I think the context of the message cannot be refind. > ERROR - JmsComponent - Error > processing exchange InOnly[ > id: ID:jjp-34393-1166462101789-6:229 > status: Done > role: consumer > service: {urn:fr.gouv.hello}mailSender > endpoint: mailSender > in: <?xml version="1.0" > encoding="UTF-8"?><ns1:HashString > xmlns:ns1="http://tempuri.org/HashService/HashClass" > xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" > xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" > xmlns:ZSI="http://www.zolera.com/schemas/ZSI/" > xmlns:xsd="http://www.w3.org/2001/XMLSchema" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><ns1:Str>Message > Change dans BPEL 4 JMS Service > </ns1:Str><ns1:HashType>MD5</ns1:HashType></ns1:HashString> > ] > java.lang.NullPointerException > at > org.apache.servicemix.jms.multiplexing.MultiplexingConsumerProcessor.process(MultiplexingConsumerProcessor.java:105) > at > org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycle.java:490) > at > org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:464) > at > org.apache.servicemix.common.BaseLifeCycle.onMessageExchange(BaseLifeCycle.java:46) > at > org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:610) > at > org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:174) > at > org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:176) > at > org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134) > at > edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:665) > at > edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:690) > at java.lang.Thread.run(Thread.java:595) > ERROR - JmsComponent - Error setting > exchange status to ERROR > javax.jbi.messaging.MessagingException: illegal call > to send / sendSync > at > org.apache.servicemix.jbi.messaging.MessageExchangeImpl.handleSend(MessageExchangeImpl.java:571) > at > org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.doSend(DeliveryChannelImpl.java:350) > at > org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.send(DeliveryChannelImpl.java:397) > at > org.apache.servicemix.common.BaseLifeCycle.onMessageExchange(BaseLifeCycle.java:58) > at > org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:610) > at > org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:174) > at > org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:176) > at > org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134) > at > edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:665) > at > edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:690) > at java.lang.Thread.run(Thread.java:595) > and this is my configuration > <jms:endpoint service="hello:jmsReceiver" > endpoint="HELLOJmsReceiver" > targetService="hello:mailSender" > role="consumer" > destinationStyle="queue" > jmsProviderDestinationName="jms/queue/hello" > connectionFactory="#jmsFactory" > defaultMep="http://www.w3.org/2004/08/wsdl/in-only" /> > FYI: when you block SMX with in a debugger, it seems to > work fine. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: https://issues.apache.org/activemq/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira
