[ https://issues.apache.org/jira/browse/CAMEL-13357?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16798983#comment-16798983 ]
Jochen Riedlinger commented on CAMEL-13357: ------------------------------------------- Hi, I implemented a reproducer in my fork of the camel-examples. The reproducer is based on the "camel-example-cxf-proxy" example. Here it is: [https://github.com/jochenr/camel/tree/Reproducer-CAMEL-13357/examples/camel-example-cxf-proxy] To test it, please send the XML from the following file(s) via Soap-UI to the service: # [https://github.com/jochenr/camel/blob/Reproducer-CAMEL-13357/examples/camel-example-cxf-proxy/src/test/resources/non-working-request.xml] # [https://github.com/jochenr/camel/blob/Reproducer-CAMEL-13357/examples/camel-example-cxf-proxy/src/test/resources/working-request.xml] 1. does not work, while 2. works fine. If you compare the requests you see that 1. has the "xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"" namespace in the Envelope, while 2. defines it within the body. If you change the option "allowStreaming=true" to false, you can see the request 1. also works. In my opinion 1. should also work, if streaming is enabled. Best regards, Jochen > Regression - Namespaces defined on the SOAP envelope get lost in PAYLOAD mode > ----------------------------------------------------------------------------- > > Key: CAMEL-13357 > URL: https://issues.apache.org/jira/browse/CAMEL-13357 > Project: Camel > Issue Type: Bug > Components: camel-cxf > Reporter: Jochen Riedlinger > Assignee: Akitoshi Yoshida > Priority: Major > > If a request message is send to a CXF consumer or a response is returned to > the CXF provider that contains namespace definions at the SOAP envelope and > the Camel-CXF endpoint is configured in PAYLOAD mode the namespace definition > gets lost unless streaming is disabled. > If the resulting CxfPayload is then converted e.g. to String that String will > contain invalid XML (because some namespace definition is missing). > For non-streaming mode (system property > org.apache.camel.component.cxf.streaming is set to false) there are special > precautions met to set these envelope namespaces on the first DOM element of > the payload but this coding is missing for StAX. > The messages in question look like that: > <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xmlns:xs="http://www.w3.org/2001/XMLSchema"> > <soap:Body> > <ns2:getTokenResponse xmlns:ns2="http://camel.apache.org/cxf/namespace"> > <return xsi:type="xs:string">Return Value</return> > </ns2:getTokenResponse> > </soap:Body> > </soap:Envelope> > If the CxfPayload is converted to String it will lack the definition for the > xsi namespace prefix (and further XML parsing will fail). -- This message was sent by Atlassian JIRA (v7.6.3#76005)