[ https://issues.apache.org/jira/browse/CXF-6863?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Kai Rommel updated CXF-6863: ---------------------------- Attachment: 0001-WS-RM-3.x-fix-for-retransmission-works-with-attachme.patch Hello Aki, find attached a patch file to solve the issue. Kai > WS-RM 3.x does not work with attachments upon a network error > ------------------------------------------------------------- > > Key: CXF-6863 > URL: https://issues.apache.org/jira/browse/CXF-6863 > Project: CXF > Issue Type: Bug > Components: WS-* Components > Affects Versions: 3.1.3, 3.0.9 > Reporter: Akitoshi Yoshida > Attachments: > 0001-WS-RM-3.x-fix-for-retransmission-works-with-attachme.patch > > > When sending messages with an attachment, the CXF 3.x WS-RM code may lose > message at the client side when a network error occurs. This was working with > CXF 2.x WS-RM. > This problem is related to the change CXF-4866 which changed the way how the > outgoing message is captured. Previously, the entire message was buffered and > captured, which isolated this capturing from network issue. In 3.x, only the > SOAP part is captured in this way and not the attachments. As a result, an > exception will be thrown during the attachment serialization when a network > error occurs and the message will not be correctly placed in the > retransmission queue. > By comparing CXF 3.x and 2.x code, > In 3.x., AttachmentSerializer.writeProlog will directly writes to the IO and > this can trigger a Fault from AttachmentOutInterceptor.handleMessage. > URLConnectionHTTPConduit$URLConnectionWrappedOutputStream(AbstractThresholdOutputStream).write(byte[], > int, int) line: 61 > URLConnectionHTTPConduit$URLConnectionWrappedOutputStream(AbstractWrappedOutputStream).write(byte[]) > line: 60 > CacheAndWriteOutputStream.write(byte[]) line: 89 > AttachmentSerializer.writeProlog() line: 182 > AttachmentOutInterceptor.handleMessage(Message) line: 77 > whereas in CXF 2.x, AttachmentSerializer.writeProlog will write to the > buffered WriteOnCloseOutputStream, as its RetransmissionInterceptor inserts > WriteOnCloseOutputStream to isolate itself from any network issue. > WriteOnCloseOutputStream(CachedOutputStream).write(byte[]) line: 466 > CacheAndWriteOutputStream.write(byte[]) line: 89 > AttachmentSerializer.writeProlog() line: 172 > AttachmentOutInterceptor.handleMessage(Message) line: 72 > CXF 2.x, RetransmissionInterceptor inserted WriteOnCloseOutputStream to > capture the message entirely. > There seem to be other issues with attachments handling in CXF 3.x. Along > with other issues CXF-6646, I am not sure how we should fix all these issues. -- This message was sent by Atlassian JIRA (v6.3.4#6332)