Do you mean that the whole flow has been executed, but the HTTP BC
has received  a fault or error and you want to retry it ?
The problem is that the BC has some processing to do when receiving
the fault or error, so the exhcange will be terminated.  If you want to be
able
to retry, I would put a simple SE in between (the still-to-develop EIP
pattern
about error handling).

On 6/8/07, Gianfranco Boccalon <[EMAIL PROTECTED]> wrote:

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]




--
Cheers,
Guillaume Nodet
------------------------
Principal Engineer, IONA
Blog: http://gnodet.blogspot.com/

Reply via email to