[
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)