[
https://issues.apache.org/jira/browse/CXF-5629?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Daniel Kulp resolved CXF-5629.
------------------------------
Resolution: Fixed
Fix Version/s: 2.7.11
3.0.0
Assignee: Daniel Kulp
> 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
> Assignee: Daniel Kulp
> Fix For: 3.0.0, 2.7.11
>
> Attachments: CXF-5629-2.7.x.patch, CXF-5629.patch
>
>
> 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)