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

Reply via email to