Hi Kurt,

As you're using 4.3.0-fuse-02-00, which use servicemix-cxf- bc-2010.02.0-fuse-01-00, so I suggest you should checkout the 010.02.0- fuse-01-00[1] release tag for servicemix-cxf-bc, and do some changes based on this version, then build a servicemix-cxf-bc-2010.02.0- fuse-01-00.jar from it and copy it to SMX4_HOME/system/org/apache/ servicemix/servicemix-cxf-bc/2010.02.0-fuse-01-00/servicemix-cxf- bc-2010.02.0-fuse-01-00.jar to override the old one to verify your fix. Don't build from apache side trunk as the 3 party jar dependency changes so you can't deploy it into 4.3.0-fuse-02-00

[1]https://fusesource.com/forge/svn/fuseesb/components/tags/components-pom-2010.02.0-fuse-01-00/bindings/servicemix-cxf-bc/

Freeman
On 2010-11-10, at 上午10:30, Kurt Westerfeld wrote:

I will attach a patch, but I need to test that it actually fixes the problem first. I'm little unclear on this code, whether it should return CxfJbiConstants.WSDL11_WRAPPER_PART_LOCALNAME or a blank prefix if the prefix is empty, but the namespace uri is null. (in other words, doesn't cause the wrong behavior when namespace is null?)

Since I have the servicemix-cxf-bc sources from trunk, patching, building I know how to do. Do you have steps within the karaf console to undeploy the existing module and deploy my rebuilt one? I'm a little unclear on that part since it seems to be woven into the feature bundle, etc.

"Freeman Fang (JIRA)" <[email protected]> 11/9/2010 12:38 PM >>>

[ https://issues.apache.org/activemq/browse/SM-2009?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=63211 #action_63211 ]

Freeman Fang commented on SM-2009:
----------------------------------

Hi,

Sorry I mismatch another fix in StaxJbiWrapper
I saw this problem now.
Thanks for pointing it out this issue.
Btw, wanna append a patch to fix it?

Freeman

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.



--
Freeman Fang

------------------------

FuseSource: http://fusesource.com
blog: http://freemanfang.blogspot.com
twitter: http://twitter.com/freemanfang
Apache Servicemix:http://servicemix.apache.org
Apache Cxf: http://cxf.apache.org
Apache Karaf: http://karaf.apache.org
Apache Felix: http://felix.apache.org

Reply via email to