[
https://issues.apache.org/jira/browse/CXF-8542?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Freeman Yue Fang reassigned CXF-8542:
-------------------------------------
Assignee: Freeman Yue Fang
> 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)