cxf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Grzegorz Grzybek (JIRA)" <j...@apache.org>
Subject [jira] [Created] (CXF-5629) In robust one-way fault the fault message is written twice
Date Thu, 20 Mar 2014 12:34:42 GMT
Grzegorz Grzybek created CXF-5629:
-------------------------------------

             Summary: In robust one-way fault the fault message is written twice
                 Key: CXF-5629
                 URL: https://issues.apache.org/jira/browse/CXF-5629
             Project: CXF
          Issue Type: Bug
    Affects Versions: 3.0.0
            Reporter: Grzegorz Grzybek


I have robust one-way operation. However the resulting soap fault is not written to response,
because the output stream is closed, as the same {{faultObserver}} is called twice:

1. in {{org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(Message)}}:
{code:java}
boolean isOneWay = false;
if (message.getExchange() != null) {
    if (message.getContent(Exception.class) != null) {
        message.getExchange().put(Exception.class, ex2);
    }
    isOneWay = message.getExchange().isOneWay() 
        && !MessageUtils.isTrue(message.getContextualProperty(Message.ROBUST_ONEWAY));
}

if (faultObserver != null && !isOneWay) {
    faultObserver.onMessage(message);
}
{code}

2. later in {{org.apache.cxf.interceptor.OneWayProcessorInterceptor.handleMessage(Message)}}:
{code:java}
if (message.getContent(Exception.class) != null) {
    // return the fault over the response fault channel
    MessageObserver faultObserver = chain.getFaultObserver();
    if (faultObserver != null) {
        message.getExchange().setOneWay(false);
        faultObserver.onMessage(message);
    } 
    return;
}
{code}

However, exchage is one-way only in second call, but the soap fault has no change to get to
client (output stream is closed).

I'm working on a patch



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Mime
View raw message