[ 
https://issues.apache.org/activemq/browse/SM-2009?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Freeman Fang reassigned SM-2009:
--------------------------------

    Assignee: Freeman Fang

> servicemix-cxf-bc generates NPE, mapped to IOException, when marshaling 
> messages that are document binding style in 
> --------------------------------------------------------------------------------------------------------------------
>
>                 Key: SM-2009
>                 URL: https://issues.apache.org/activemq/browse/SM-2009
>             Project: ServiceMix
>          Issue Type: Bug
>          Components: servicemix-cxf-bc
>    Affects Versions: archetypes-2010.02
>         Environment: Using fuse 4.2 servicemix distribution
>            Reporter: Kurt Westerfeld
>            Assignee: Freeman Fang
>
> We are seeing an NPE within 
> org.apache.servicemix.cxfbc.interceptors.StaxJbiWrapper, which marshals our 
> message to the bus, during unmrashaling by servicemix-cxf-se.  
> The message content of our message is document based, but sub elements of 
> message parameters are not ns-qualified (I believe this to be the problem).   
> This service implementation worked fine on servicemix 3 with prior releases 
> of servicemix-cxf-bc, and we are in the process of porting to servicemix 4 
> with OSGi bundles.
> Here is the stacktrace for the code in question (this was grabbed by my 
> debugger, but not propagated to the servicemix.log unfortunately):
>       at 
> org.apache.servicemix.cxfbc.interceptors.StaxJbiWrapper.getPrefix(StaxJbiWrapper.java:251)
>       at 
> org.apache.servicemix.soap.util.stax.StaxSource.parse(StaxSource.java:110)
>       at 
> org.apache.servicemix.soap.util.stax.StaxSource.parse(StaxSource.java:227)
>       at org.apache.cxf.staxutils.StaxUtils.copy(StaxUtils.java:391)
>       at org.apache.cxf.staxutils.StaxUtils.copy(StaxUtils.java:366)
>       at 
> org.apache.cxf.transport.jbi.JBIMessageHelper.convertMessageToInputStream(JBIMessageHelper.java:41)
>       at 
> org.apache.cxf.transport.jbi.JBIDispatcherUtil.dispatch(JBIDispatcherUtil.java:149)
>       at 
> org.apache.servicemix.cxfse.CxfSeEndpoint.process(CxfSeEndpoint.java:460)
>       at 
> org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycle.java:617)
>       at 
> org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:571)
>       at 
> org.apache.servicemix.common.AsyncBaseLifeCycle.processExchangeInTx(AsyncBaseLifeCycle.java:468)
>       at 
> org.apache.servicemix.common.AsyncBaseLifeCycle$2.run(AsyncBaseLifeCycle.java:347)
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>       at java.lang.Thread.run(Thread.java:619)
> The issue I see is that this method, "getPrefix()", is receiving a null back 
> from parts.get(part).get(reader).getNamespaceURI(), which it turns around an 
> tries to get the length on.  I stepped into the code here and found this to 
> be the case.  Should be an easy fix.
> I created a workaround in my interceptor chain by fooling the 
> servicemix-cxf-bc JbiInWsdl1Interceptor into creating a DOMSource instead of 
> a StaxJbiWrapper, by temporarily setting the message state to "client" 
> instead of "server" mode....ugly but it works.  This only works because the 
> StaxJbiWrapper will throw UnsupportedOperationException back to the caller in 
> this case.
> The NPE is being translated to an IOException as you can see below:
> java.io.IOException
>       at 
> org.apache.cxf.transport.jbi.JBIMessageHelper.convertMessageToInputStream(JBIMessageHelper.java:44)[155:org.apache.cxf.rt-transports-jbi:2.2.10.fuse-00-00]
>       at 
> org.apache.cxf.transport.jbi.JBIDispatcherUtil.dispatch(JBIDispatcherUtil.java:149)[155:org.apache.cxf.rt-transports-jbi:2.2.10.fuse-00-00]
>       at 
> org.apache.servicemix.cxfse.CxfSeEndpoint.process(CxfSeEndpoint.java:460)[156:servicemix-cxf-se:2010.02.0.fuse-01-00]
>       at 
> org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycle.java:617)[90:servicemix-common:2010.02.0.fuse-01-00]
>       at 
> org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:571)[90:servicemix-common:2010.02.0.fuse-01-00]
>       at 
> org.apache.servicemix.common.AsyncBaseLifeCycle.processExchangeInTx(AsyncBaseLifeCycle.java:468)[90:servicemix-common:2010.02.0.fuse-01-00]
>       at 
> org.apache.servicemix.common.AsyncBaseLifeCycle$2.run(AsyncBaseLifeCycle.java:347)[90:servicemix-common:2010.02.0.fuse-01-00]
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)[:1.6.0_18]
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)[:1.6.0_18]
>       at java.lang.Thread.run(Thread.java:619)[:1.6.0_18]
> Caused by: javax.xml.stream.XMLStreamException
>       at 
> org.apache.cxf.staxutils.StaxUtils.copy(StaxUtils.java:394)[138:org.apache.cxf.bundle:2.2.10.fuse-00-00]
>       at 
> org.apache.cxf.staxutils.StaxUtils.copy(StaxUtils.java:366)[138:org.apache.cxf.bundle:2.2.10.fuse-00-00]
>       at 
> org.apache.cxf.transport.jbi.JBIMessageHelper.convertMessageToInputStream(JBIMessageHelper.java:41)[155:org.apache.cxf.rt-transports-jbi:2.2.10.fuse-00-00]
>       ... 9 more

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to