[
https://issues.apache.org/jira/browse/CXF-2841?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Daniel Kulp resolved CXF-2841.
------------------------------
Assignee: Daniel Kulp
Resolution: Fixed
Patch applied. Thanks!
> WS-RM returns an exception to the client even when its retry mechanim
> successfully delivers the message after some transmission error
> -------------------------------------------------------------------------------------------------------------------------------------
>
> Key: CXF-2841
> URL: https://issues.apache.org/jira/browse/CXF-2841
> Project: CXF
> Issue Type: Bug
> Components: WS-* Components
> Affects Versions: 2.2.7, 2.2.8, 2.2.9
> Environment: JDK 1.6.0_16, Windows XP
> Reporter: Aki Yoshida
> Assignee: Daniel Kulp
> Fix For: 2.2.10
>
>
> This problem can be easily reproduced in the CXF's ws-rm demo sample.
> When the target server is available at the createSequence step but becomes
> unavailable before the application message transmission, the retransmission
> of this message is performed by another thread until the message is delivered
> according to the policy, but the original client thread is getting the
> ConnectException while the retransmission is taking place in background. So
> in this case, the client gets the exception but the message can be
> successfully delivered to the target system when the target server becomes
> available.
> When the WS-RM feature is engaged and retransmission of the message is taken
> care by its runtime, the temporary exception should not be returned to the
> client.
> One way to fix this issue would be to make the RetransmissionInterceptor's
> fault handling method clear the exception object which is set in the message
> by the PhaseInterceptorChain's doInterceptor method.
> Concretely, adding the following code in
> org.apache.cxf.ws.rm.RetransmissionInterceptor's handle method seems to fix
> this issue.
> ...
> if (isFault) {
> // remove the exception set by the PhaseInterceptorChain
> so that the error does not reach the client
> // when retransmission is scheduled
> message.setContent(Exception.class, null);
> message.getExchange().put(Exception.class, null);
> }
> else {
> WriteOnCloseOutputStrea ...
> ...
> }
> Regards, Aki
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.