bvkeirsb wrote: > > The EIP wiretap doesn't support InOut, only InOnly/RobustInOnly I > believe (going from memory here). You won't be able to use the wiretap > as an InOut. >
Thanks for answer. I guess it should support the in-out mep, as I can read in documentation: A WireTap component can be used to forward a copy of the input message to a listener in a proxy fashion. This component implements the WireTap pattern. It can handle all four standard MEPs, but will only send an In-Only MEP to the listener. The originating service must be configured to send messages to the WireTap directly. In the case of an In-Out MEP, this means that the WireTap needs to be configured to send the exchange along to the destination service. Yes, your workaround is valid, but anyway I would know if this could be an issue, for future implementations. Thanks bvkeirsb wrote: > > Maybe you'd want to wrap your echo endpoint into a pipeline? > > Wiretap (inonly) --> pipeline (inonly --> inout - this would be your > echo, or potentially a static routing slip or so --> inonly) --> final > endpoint (inonly) > > Bart Vankeirsbilck > -----Original Message----- > From: dellekappa [mailto:[EMAIL PROTECTED] > Sent: Monday, November 19, 2007 10:57 AM > To: [email protected] > Subject: using wiretap inside static routing slip flow > > > Hi, > I'm trying to configure an eip wiretap inside a static routing slip > flow. > The wiretap is not the last endpoint of static routing slip flow, so I > build > an "echo" endpoint (servicemix-bean), has its target-exchange, that > simply > sends back the message received, in order to let the wiretap using an > in-out > mep. > My configuration is as follow: > > <eip:static-routing-slip service="tns:Service" endpoint="flow-routing"> > <eip:targets> > <eip:exchange-target service="tns:Service" > endpoint="first_endpoint" /> > <eip:exchange-target service="tns:Service" > endpoint="trace_endpoint" /> > <eip:exchange-target service="tns:Anagrafica" > endpoint="last_endpoint" /> > </eip:targets> > </eip:static-routing-slip> > > <eip:wire-tap service="tns:Service" endpoint="trace-endpoint"> > <eip:target> > <eip:exchange-target service="tns:Service" > endpoint="echo-endpoint"/> > </eip:target> > <eip:inListener> > <eip:exchange-target service="tns:Service" endpoint="trace-queue" > /> > </eip:inListener> > </eip:wire-tap> > > and this is the code inside the echo component: > > public class MessageEchoBean implements MessageExchangeListener { > > @Resource > private DeliveryChannel channel; > > public void onMessageExchange(MessageExchange exchange) throws > MessagingException { > if (exchange.getStatus() == ExchangeStatus.ACTIVE) { > MessageUtil.transferInToOut(exchange, exchange); > channel.send(exchange); > } > } > > but I get thi error at runtime: > > ERROR - BeanComponent - Error processing exchange > RobustInOnly[ > id: ID:10.2.132.34-1165892ac50-8:2 > status: Active > role: provider > service: {http://myorganization.namespace}Service > endpoint: echo-endpoint > in: mymessagexxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx > ] > javax.jbi.messaging.MessagingException: Out not supported > at > org.apache.servicemix.jbi.messaging.MessageExchangeImpl.setMessage(Messa > geExchangeImpl.java:357) > at > org.apache.servicemix.jbi.util.MessageUtil.transferTo(MessageUtil.java:1 > 21) > at > org.apache.servicemix.jbi.util.MessageUtil.transferToOut(MessageUtil.jav > a:107) > at > org.apache.servicemix.jbi.util.MessageUtil.transferInToOut(MessageUtil.j > ava:103) > at > codin.sismed.coop.util.MessageEchoBean.onMessageExchange(MessageEchoBean > .java:21) > at > org.apache.servicemix.bean.BeanEndpoint.onProviderExchange(BeanEndpoint. > java:224) > at > org.apache.servicemix.bean.BeanEndpoint.process(BeanEndpoint.java:200) > at > org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeC > ycle.java:538) > at > org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBas > eLifeCycle.java:490) > at > org.apache.servicemix.common.BaseLifeCycle.onMessageExchange(BaseLifeCyc > le.java:46) > at > org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(D > eliveryChannelImpl.java:610) > at > org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.j > ava:170) > at > org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java > :167) > at > org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:1 > 34) > at > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecuto > r.java:650) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.ja > va:675) > at java.lang.Thread.run(Thread.java:595) > > It seems that the wiretap sends a Robust-In-Only exchange to the > BeanComponent. > As I understand, all the components inside a static rouintg slip should > use > an in-out mep, and > looking at the documentation the wiretap should support the in-out mep, > but > I cannot find a way make it work. Am I missing something? > > Any suggestion would be appreciated > > Thanks > > Giulio > -- > View this message in context: > http://www.nabble.com/using-wiretap-inside-static-routing-slip-flow-tf48 > 37197s12049.html#a13838679 > Sent from the ServiceMix - User mailing list archive at Nabble.com. > > > -- View this message in context: http://www.nabble.com/using-wiretap-inside-static-routing-slip-flow-tf4837197s12049.html#a13854503 Sent from the ServiceMix - User mailing list archive at Nabble.com.
