Hi, I'm running servicemix 3.3.2, cxf 2.2.6, in jdk 1.5, linux. We use a ServicemixClientFacade inside a cxf enpoint to invoke another cxf component running inside servicemix.
Profiling the application for memory usage and allocations I found that huge soap messages cause a lot of temporary allocations inside the DocLiteralInterceptor class (and also a significant CPU cost). We are using huge messages, containing up to 4MB of bae64 endoded data, to keep compatibility with systems where attachments are not supported (eg. websphere 6.0 with no patches) and as a workaround for this problem: http://servicemix.396122.n5.nabble.com/JBIConduitOutputStream-does-not-copy-attachments-td4665737.html Checking the code for DocLiteralInInterceptor I think that all the parsing and decoding costs could be avoided entering the if on line 76 http://grepcode.com/file/repo1.maven.org/maven2/org.apache.cxf/cxf-rt-core/2.2.6/org/apache/cxf/interceptor/DocLiteralInInterceptor.java So I'm trying to understand if and how this can be done. Maybe adding another interceptor right before the DocLiteralInterceptor or placing the right data inside the NormalizedMessage I send in the first place. I'm confused because the message inside the interceptor is not the NomalizedMessage I send but a "conversion" happens and I'm still debugging the code to better understand the details. The same happens for the MessageExchange and the Exchange. Is BindingOperationInfo initialization a good idea? Is there any example around on how to do this? Thanks, bye Lorenzo
