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

Reply via email to