cxf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Akitoshi Yoshida (JIRA)" <>
Subject [jira] [Commented] (CXF-6863) WS-RM 3.x does not work with attachments upon a network error
Date Tue, 07 Jun 2016 13:37:21 GMT


Akitoshi Yoshida commented on CXF-6863:

Hi Dennis,
I'm not sure if we are on the same page. We are not serializing and storing the entire message
like before (or as in 2.7.x). We capture the plain soap part and the only the attachments
part separately but merge them into one blob so that we can reconstruct that state of the
message in one DB-read for later retransmission. So the security processing will take place
on the plain content and get applied on each retransmission.

So, I'm not sure if you are pointing to another issue not identified above. Please let me

regards, aki

> WS-RM 3.x does not work with attachments upon a network error
> -------------------------------------------------------------
>                 Key: CXF-6863
>                 URL:
>             Project: CXF
>          Issue Type: Bug
>          Components: WS-* Components
>    Affects Versions: 3.1.3, 3.0.9
>            Reporter: Akitoshi Yoshida
>            Assignee: 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
> 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
> 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

View raw message