[
https://issues.apache.org/jira/browse/CAMEL-9103?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16856111#comment-16856111
]
Freeman Fang commented on CAMEL-9103:
-------------------------------------
For the async mode, I believe the problem comes from the test soap response
itself
currently it's
{code}
<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:wsa="http://www.w3.org/2005/08/addressing"
xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
<env:Header>
<wsa:Action>http://www.w3.org/2005/08/addressing/soap/fault</wsa:Action>
</env:Header>
<env:Body>
<env:Fault>
<faultcode>env:Client</faultcode>
<faultstring>Rejected by policy.</faultstring>
<faultactor>urn:nav:ikt:plattform:samhandling:t5_pepgwsbs:OutboundPartnerSecurityGateway</faultactor>
</env:Fault>
</env:Body>
</env:Envelope>
{code}
and per MAPCodec.markPartialResponse method, this message lack of RelatesTo
ws-addressing header, so it's a partial response(empty message). And per the
spec, reply message must have RelatesTo header, we can see more details from
discussion CXF-3916.
If I add a
{code}
<wsa:RelatesTo>1234567</wsa:RelatesTo>
{code}
header into soapfault.xml, the sync/async behavior are identical. So IMO, this
is a testcase problem which uses invalid soap resp message.
Freeman
> camel-cxf does not handle soapfaults with ws-addressing headers in async mode
> -----------------------------------------------------------------------------
>
> Key: CAMEL-9103
> URL: https://issues.apache.org/jira/browse/CAMEL-9103
> Project: Camel
> Issue Type: Bug
> Components: camel-cxf
> Affects Versions: 2.15.3
> Reporter: Bjørn Hilstad
> Assignee: Freeman Fang
> Priority: Minor
> Attachments: camel-jboss-web.7z
>
>
> I am invoking a SOAP 1.1 webservice with WS-Addressing using camel-cxf. When
> the webservice returns a soapfault that includes a ws-addressing header
> (<wsa:Action>http://www.w3.org/2005/08/addressing/soap/fault</wsa:Action>)
> which I believe is allowed per spec (ws-addressing) I can see in logs that
> cxf processes the response but the response never reaches Camel (would be
> handled by the DefaultErrorHandler). The thread just hangs forever.
> I have been able to get the same test to work if I configure the camel
> endpoint for cxf to use synchronous=true.
> I am attaching a maven project that contains a test that reproduces the
> issue. The test uses wiremock as a stub to return the response.
> If the endpoint in the camelcontext is changed to use synchronous=true the
> test succeeds (it gets the soapfault that is expected).
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)