You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@servicemix.apache.org by Ron Gavlin <rg...@yahoo.com> on 2008/05/14 08:25:11 UTC

servicemix-cxf-bc provider NPE invoking cxf-wsdl-first sample

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:      org.apache.servicemix.common.EndpointDeliveryChannel@d5714b
May 14, 2008 1:59:45 AM org.apache.cxf.transport.jbi.JBITransportFactory setDeliveryChannel
INFO: configuring DeliveryChannel:      org.apache.servicemix.common.EndpointDeliveryChannel@d5714b
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


Re: servicemix-cxf-bc provider NPE invoking cxf-wsdl-first sample

Posted by Freeman Fang <fr...@gmail.com>.
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:      org.apache.servicemix.common.EndpointDeliveryChannel@d5714b
> May 14, 2008 1:59:45 AM org.apache.cxf.transport.jbi.JBITransportFactory setDeliveryChannel
> INFO: configuring DeliveryChannel:      org.apache.servicemix.common.EndpointDeliveryChannel@d5714b
> 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
>
>
>