Guiseppe,
If you use an HTTP endpoint to send the message to your Validate
endpoint (which is able to receive and send InOut), there is nothing
else you need to do. If your validate sets the 'out' NormalizedMessage
it receives from the routing-slip as the 'out' NormalizedMessage to the
exchange it received in the first place, everything should work fine and
your HTTP client should get the response.
Gert
beppe82 wrote:
I use InOnly between FTP and TOXML, InOut among the others...
StaticRoutingSlip accepts just InOut exchanges, and after the last component
in the routing table has elaborated the message, an "out" message should be
sent to VALIDATE, correct?
VALIDATE could receive messages also from an http component (soap endpoint),
not only from TOXML: in the case the message was received from
http-component, I would like to send the out message to it... is it clear?
Thank you for your help, Giuseppe
Gert Vanthienen wrote:
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