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



Reply via email to