Wiretap between cxf-bc and cxf-se
martinmurphy Jan 29, 2008 5:07 PMShould it be possible for me to place a eip:wiretap between a cxf-bc and cxf-se. I was interested in seeing if the message on the NMR between these two points was normalized or if it was still the SOAP message. I used the cxf-wsdl-first demo and took the message in and set the inListener to a JMS queue and this was normalized. The cxf-se was set as the target and I can see using jconsole that the message does reach this endpoint, but the client gets a SOAP fault back.
In the servicemix console, I can see that this was caused by a null pointer expection in the cxf service engine:
Caused by: java.lang.NullPointerException
at org.apache.servicemix.cxfse.CxfSeEndpoint.process(CxfSeEndpoint.java:173)
at org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycle.java:538)
at org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:490)
at org.apache.servicemix.common.BaseLifeCycle.onMessageExchange(BaseLifeCycle.java:46)
at org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:610)
at org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java: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:134)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
at java.lang.Thread.run(Thread.java:595)
I'm using 3.3.0.6, so I think the null pointer is on:
JBIDestination jbiDestination = jbiTransportFactory
.getDestination(exchange.getService().toString()
+ exchange.getInterfaceName().toString());
I wonder if somehow insert the wiretap for an in-out has resulted in a problem in send back the result?
This worked fine until I added the wiretap
Perhaps I need to specify more information in my wiretap target. How would I specify interface name?
<eip:wire-tap service="person:wiretapIn" endpoint="endpoint">
<eip:target>
<eip:exchange-target service="person:PersonService" />
</eip:target>
<eip:inListener>
<eip:exchange-target service="test:jmsWiretapOut" />
</eip:inListener>
</eip:wire-tap>
Thanks!
- Martin