Guiseppe,
I'm kind of confused by the "...be sent back to the Web Service...".
The message exchange seems to originate from an FTP poller, if you
schema at the top of your message is correct. This would explain why
you get the exception below, because the FTP poller sends InOnly message
exchanges. You cannot add an 'out' NormalizedMessage to an InOnly
MessageExchange.
If the first component was e.g. an HTTP Provider endpoint and every
other component in the process is working with InOut MessageExchanges,
things would work out fine, I suppose.
Gert
Beppe wrote
Hi, I have the following scenario:
ftp-poller --> to-xml-se --> validate-se --> static-routing-slip
validate-se can be used by a Web Service too.
Static routing slip is configured to forward each message it receives to
sp1, sp2, sp3, ..., sp7.
In theory, when sp7 fills and sends the out message, it should be sent to
validate-se, correct?
Now, I would like this message (the out message that arrives to validate-se)
be sent back to the Web Service.
First, how can I know the "sender" service which sent the IN message to
validate-se (to-xml-se or WS)?
Second, for now I remembered the exchange with the WS by setting a local
variable in validate-se.MyEndpoint (for now I distinguish between to-xml-se
and WS looking at the mep used :( ); when validate-se receives the OUT
message by sp7, it does the following:
this.wsExchange.setMessage(exchange.getMessage("out"), "out");
channel.send(this.wsExchange);
This method works, in the sense that the WS receives the response message,
but validate-se raise the following exception:
15:19:27,484 | Error processing exchange InOut[
id: ID:giuseppe-laptop-4111-1184246290890-14:77
status: Active
role: consumer
service: {http://giuseppe.org}routingSlip
endpoint: endpoint
in: <?xml version="1.0" encoding="UTF-8"?>
out: <?xml version="1.0" encoding="UTF-8"?><status>completed!</status>
]
javax.jbi.messaging.MessagingException: Out not supported
at
org.apache.servicemix.jbi.messaging.MessageExchangeImpl.setMessage(MessageExchangeImpl.java:317)
at cedac.validate.MyEndpoint.process(MyEndpoint.java:211)
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)
I know this post is a bit confused, but I hope you can help me!
Thanks, Giuseppe