You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cxf.apache.org by "Dennis Kieselhorst (JIRA)" <ji...@apache.org> on 2017/05/30 08:23:04 UTC

[jira] [Comment Edited] (CXF-7388) Problem with MTOM in Camel-CXF

    [ https://issues.apache.org/jira/browse/CXF-7388?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16028821#comment-16028821 ] 

Dennis Kieselhorst edited comment on CXF-7388 at 5/30/17 8:22 AM:
------------------------------------------------------------------

Well I also responded:
https://lists.apache.org/thread.html/9d27cc40cb5495ea20d75492b520b14ec128da45dad9b54175c8cefd@%3Cusers.cxf.apache.org%3E
{quote}
Is there a similar testcase in https://github.com/apache/camel/tree/master/components/camel-cxf/src/test/java/org/apache/camel/component/cxf that we can use to reproduce it?

According to comments in the CXF code this part of code was optimized to improve performance, so we need to discuss this before changing it. Can you please open an issue for it?
{quote}


was (Author: deki):
Well I also responded:
Is there a similar testcase in https://github.com/apache/camel/tree/master/components/camel-cxf/src/test/java/org/apache/camel/component/cxf that we can use to reproduce it?

According to comments in the CXF code this part of code was optimized to improve performance, so we need to discuss this before changing it. Can you please open an issue for it?

> Problem with MTOM in Camel-CXF
> ------------------------------
>
>                 Key: CXF-7388
>                 URL: https://issues.apache.org/jira/browse/CXF-7388
>             Project: CXF
>          Issue Type: Bug
>    Affects Versions: 3.1.9
>            Reporter: Joerg Kessler
>             Fix For: 3.2.0
>
>
> Hi,
> I posted this on the CXF user list without getting a response (except from Aki who supports this);
> We use CXF 3.1.9 together with Camel 2.17.4. We want to enable MTOM on the Camel-CXF producer. To test it I created a simple route using Camel test infrastructure where the producer uses a WSDL with base64 encoded payload parts. But in the log output of CXF I always get a payload like this
> Http-Method: POST
> Content-Type: multipart/related; type="application/xop+xml"; boundary="uuid:2a84a041-d9ce-4caf-a8e1-b4247e1ad6d6"; start="<ro...@cxf.apache.org>"; start-info="text/xml"
> Headers: {Accept=[*/*], breadcrumbId=[ID-WDFN32392889A-65347-1494850621554-0-1], Cache-Control=[no-cache], connection=[keep-alive], Content-Length=[487], content-type=[multipart/related; type="application/xop+xml"; boundary="uuid:2a84a041-d9ce-4caf-a8e1-b4247e1ad6d6"; start="<ro...@cxf.apache.org>"; start-info="text/xml"], Host=[localhost:8770], Pragma=[no-cache], SOAPAction=[""], User-Agent=[Apache-CXF/3.1.9]}
> Payload: --uuid:2a84a041-d9ce-4caf-a8e1-b4247e1ad6d6
> Content-Type: application/xop+xml; charset=UTF-8; type="text/xml"
> Content-Transfer-Encoding: binary
> Content-ID: <ro...@cxf.apache.org>
> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><typ:testXop xmlns:typ="http://cxf.apache.org/mime/types"><typ:name>?</typ:name><typ:attachinfo>U1VDQ0VTUw==</typ:attachinfo></typ:testXop></soap:Body></soap:Envelope>
> --uuid:2a84a041-d9ce-4caf-a8e1-b4247e1ad6d6--
> This is not MTOM. The endpoint configuration is
>     <cxf:cxfEndpoint id="clientEndpoint" address="http://localhost:8770/cxf/mtom" bus="ClientBus" wsdlURL="wsdl/mtom_xop.wsdl">
>         <cxf:properties>
>             <entry key="dataFormat" value="PAYLOAD" />
>             <entry key="defaultOperationName" value="testXop" />
>             <entry key="defaultOperationNamespace" value="http://cxf.apache.org/mime"/>
>             <entry key="mtom-enabled" value="true" />
>         </cxf:properties>
>     </cxf:cxfEndpoint>
> Here I even used a WSDL that is used in the CXF MTOM tests. Then I compared the execution of the relevant interceptors in Camel-CXF and CXF and found one difference:
> In AbstractOutDatabindingInterceptor. writeToOutputStream() it is checked that the data binding is implemented by the class org.apache.cxf.jaxb.JAXBDataBinding. That is correct for CXF but Camel-CXF sets in CxfEndpoint the  binding to org.apache.camel.component.cxf.HybridSourceDataBinding which is derived from JAXBDataBinding but of course is a different class. This seems to prevent the completion of the MTOM conversion. I changed the code locally so that now all subclasses are accepted and now the attachment processing gets really called. But now the next problem apears; HybridSourceDataBinding.createWriter() raises an exception:
> java.lang.UnsupportedOperationException: The type java.io.OutputStream is not supported.
> 	at org.apache.camel.component.cxf.HybridSourceDataBinding.createWriter(HybridSourceDataBinding.java:87)
> I guess the method getSupportedWriterFormats of JAXBDataBinding/HybridSourceDataBinding should prevent something like this but in this case it does not work.
> I am also unsure whether the problem is now really in CXF or in Camel-CXF. Therefore please forward it to Camel if the problem is locarted there. 
> Best Regards,
> Jörg



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)