Hi all,
I'm using the resend exchange feature of ServiceMix (method resendExchange of JBIContainer) and I have the following problem: I have a very simple SA composed of

HTTP BC -> Transformer SE -> Screen BC

I saved the exchange sent from the HTTP BC to the Transformer SE, and later I resent it. What happens is that the exchange is sent (with status Active), the transformer elaborates it and send another exchange to the Screen BC, and finally the Transformer SE send the Done exchange to the HTTP BC. And now the problem: when the HTTP BC receives the Done exchange, it says "what is this ?? ah, no no no, this is not my exchange..." with this exception:

ERROR - HttpComponent                  - Error processing exchange InOnly[
 id: ID:boccalon-1470-1181286796962-62:0
 status: Done
 role: consumer
 service: {http://servicemix.org/cheese}myTransformertransfi
 endpoint: myTransformertransfi
 operation: ACTIONS
 in: ....content of message here.......
]
java.lang.IllegalStateException: Exchange not found
at org.apache.servicemix.http.processors.ConsumerProcessor.process(ConsumerProcessor.java:104) at org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycle.java:489) at org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:463) at org.apache.servicemix.common.BaseLifeCycle.onMessageExchange(BaseLifeCycle.java:46) at org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:593) 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 - HttpComponent - 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:370) at org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.send(DeliveryChannelImpl.java:417) at org.apache.servicemix.common.BaseLifeCycle.onMessageExchange(BaseLifeCycle.java:58) at org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:593) 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)


In fact, it's right: it didn't send that exchange because I resent an old exchange, but.... Is there a way to avoid this problem ? The resend feature is very useful for me because it allows to restart a failed SA in the middle, and not from the beginning, that in some cases can be a problem because the previous components may have changed the database (for example). A listener could intercept the Done exchange for the HTTP BC and block it (for example) ?
Do you have any idea ?

Thanks

--
Gianfranco Boccalon
Engineering Ingegneria Informatica S.p.A.
Direzione Centrale Ricerca e Innovazione
Direzione Architetture e Consulenza
35127 PADOVA
Corso Stati Uniti 23/I
Tel. +39.049.8692508
Cell. 335.7813507
Fax +39.049.8692566
E-mail: [EMAIL PROTECTED]

Reply via email to