Hi Ron,
You can't set operation for the cxf bc provider since cxf bc provider
may provide more than one operations, it's normally interface in the
wsdl has several operations
But you can set operation in the eip exchange-target
something like
<eip:targets>
<eip:exchange-target service="front:GetCustomerService"
interface="front:GetCustomerPortType" operation="front:GetCustomer"/>
</eip:targets>
Freeman
Ron Gavlin wrote:
Using the current 3.2 branch, I have hot deployed the cxf-wsdl-first sample. In a
separate flow, I have a file:poller -> eip:pipeline(transformer = cxfbc:provider)
-> file:sender. My input file for this flow contains:
<jbi:message xmlns:jbi="http://java.sun.com/xml/ns/jbi/wsdl-11-wrapper"
version="1.0">
<jbi:part>
<tns:GetPerson
xmlns:tns="http://servicemix.apache.org/samples/wsdl-first/types">
<tns:personId>world</tns:personId>
</tns:GetPerson>
</jbi:part>
</jbi:message>
When this flow is processed, the cxfbc:provider throws the following NPE:
May 14, 2008 1:59:44 AM org.apache.cxf.transport.jbi.JBITransportFactory
setDeliveryChannel
INFO: configuring DeliveryChannel: [EMAIL PROTECTED]
May 14, 2008 1:59:45 AM org.apache.cxf.transport.jbi.JBITransportFactory
setDeliveryChannel
INFO: configuring DeliveryChannel: [EMAIL PROTECTED]
java.lang.NullPointerException
at
java.util.concurrent.ConcurrentHashMap.hash(ConcurrentHashMap.java:157)
at
java.util.concurrent.ConcurrentHashMap.get(ConcurrentHashMap.java:730)
at
org.apache.cxf.service.model.BindingInfo.getOperation(BindingInfo.java:126)
at
org.apache.servicemix.cxfbc.CxfBcProviderMessageObserver.onMessage(CxfBcProviderMessageObserver.java:93)
at
org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:1988)
at
org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1824)
at
org.apache.servicemix.cxfbc.CxfBcProvider.process(CxfBcProvider.java:201)
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:172)
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)
The problem is that the CxfBcProviderMessageObserver's messageExchange has a
null operation. On the cxfbc:provider, how is the operation supposed to be set?
I do not see it as a configurable property on the cxfbc:provider.
Thanks in advance for your assistance.
- Ron