[ 
https://issues.apache.org/jira/browse/CXF-8542?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Freeman Yue Fang resolved CXF-8542.
-----------------------------------
    Resolution: Fixed

> MTOM: Exceptions while reading the DataHandler's InputStream are not signaled 
> to the client
> -------------------------------------------------------------------------------------------
>
>                 Key: CXF-8542
>                 URL: https://issues.apache.org/jira/browse/CXF-8542
>             Project: CXF
>          Issue Type: Bug
>          Components: JAX-WS Runtime
>    Affects Versions: 3.4.3
>            Reporter: Joern Gebhardt
>            Assignee: Freeman Yue Fang
>            Priority: Major
>
> If the DataHandler's InputStream throws an exception while transferring the 
> data to the client, the client gets no clue that it has received incomplete 
> data. Instead, the client believes that it has received the full data.
>  I'd expect to get an exception while reading the {{InputStream}} from the 
> {{DataHandler}}.
> Here's what happens on the server side:
>  The IOException is caught in the {{AttachmentOutEndingInterceptor}} that 
> transforms it into an {{Fault}} runtime exception:
> {code:java}
> Interceptor for 
> {http://example.com}MyWebService#{http://example.com/ws}GetBinaryData has 
> thrown exception, unwinding now 
> org.apache.cxf.interceptor.Fault: Could not write attachments.
>     at 
> org.apache.cxf.interceptor.AttachmentOutInterceptor$AttachmentOutEndingInterceptor.handleMessage(AttachmentOutInterceptor.java:123)
>     at 
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308)
>     at 
> org.apache.cxf.interceptor.OutgoingChainInterceptor.handleMessage(OutgoingChainInterceptor.java:90)
>     at 
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308)
>     at 
> org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
> ...
> {code}
> This {{Fault}} is caught by the {{PhaseInterceptorChain}} which in turn 
> returns {{false}} which is ignored by the {{ChainInitiationObserver}}. I.e. 
> it seems to make no difference if the InputStream can be read correctly or if 
> an exception is thrown while reading it.
> As I'm no CXF developer and cannot see the full picture I might be mistaken 
> by my analysis. However, from the client's perspective the MTOM data seems to 
> be correctly retrieved from the server which is not the case.
> Is there anything that can be done to make sure that the client receives an 
> exception if the InputStream gets unexpectedly aborted on the server side?



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to