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)