You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cxf.apache.org by "Daniel Kulp (JIRA)" <ji...@apache.org> on 2010/06/18 20:45:26 UTC

[jira] Resolved: (CXF-2841) WS-RM returns an exception to the client even when its retry mechanim successfully delivers the message after some transmission error

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