Hi, I am invoking a soap service (ServiceA) that invokes another soap service (ServiceB) using CXF with dataFormat=PAYLOAD. ServiceB, using MTOM, returns a base64Binary field (pdfContent) that is to be returned from ServiceA to the client (using MTOM).
CXF ENDPOINT /<cxf:cxfEndpoint xmlns:s="http://ws.a.service/v1" id="ServiceAEndpoint" address="/ServiceA_v1" endpointName="s:ServiceASoap_v1" serviceName="s:ServiceA_v1" serviceClass="service.a.ws.ServiceAV1" wsdlURL="wsdl/serviceA_v1.0.wsdl"> <cxf:properties> <entry key="schema-validation-enabled" value="true" /> <entry key="mtom-enabled" value="true" /> </cxf:properties> </cxf:cxfEndpoint> <cxf:cxfEndpoint xmlns:s="http://ws.b.service/v1" id="ServiceBEndpoint" address="/ServiceB_v1" endpointName="s:ServiceBSoap_v1" serviceName="s:ServiceB_v1" serviceClass="service.b.ws.ServiceAV1" wsdlURL="wsdl/serviceB_v1.0.wsdl"> <cxf:properties> <entry key="schema-validation-enabled" value="true" /> <entry key="mtom-enabled" value="true" /> </cxf:properties> </cxf:cxfEndpoint>/ CAMEL ROUTE /<route id="ABRoute_v1"> <from uri="cxf:bean:ServiceAEndpoint?dataFormat=PAYLOAD/> <removeHeaders pattern="*"/> <setHeader headerName="operationName"> <simple>getPdf</simple> </setHeader> <to uri="xslt:xslt/getPdf.xsl"/> <to uri="cxf:bean:serviceB?dataFormat=PAYLOAD"/> <to uri="xslt:xslt/getPdfResponse.xsl"/> <process ref="getDocumentResponseProcessor"/> </route> getPdfResponse.xsl /<xsl:template match="serviceB:getPdfResponse"> <serviceA:getDocumentResponse> ..../ <serviceA:documentFile> <xop:Include xmlns:xop="http://www.w3.org/2004/08/xop/include"> <xsl:attribute name="href"> <xsl:value-of select="serviceB:pdfContent/xop:Include/@href"/> </xsl:attribute> </xop:Include> </serviceA:documentFile> ... </serviceA:getDocumentResponse>/ getDocumentResponseProcessor /final Message in = exchange.getIn(); LOG.info("Attachments: {}", in.getAttachments().size()); List<Source> elements = new ArrayList<>(); elements.add(in.getBody(Source.class)); CxfPayload<SoapHeader> cxfPayload = new CxfPayload<>(new ArrayList<>(),elements, null); in.setBody(cxfPayload);/ CXF throws the following fault: *| INFO | ault-workqueue-2 | GetDocumentResponseProcessor ... | Attachments: 1 | WARN | qtp585654247-71 | PhaseInterceptorChain | 74 - org.apache.cxf.cxf-core org.apache.cxf.interceptor.Fault: Could not generate the XML stream caused by: org.xml.sax.SAXParseException: cvc-type.3.1.2: Element 'serviceA:documentFile' is a simple type, so it must have no element information item [children].. at org.apache.cxf.databinding.source.XMLStreamDataWriter.write(XMLStreamDataWriter.java:99)[74:org.apache.cxf.cxf-core:3.0.4.redhat-621083] at org.apache.cxf.databinding.source.XMLStreamDataWriter.write(XMLStreamDataWriter.java:54)[74:org.apache.cxf.cxf-core:3.0.4.redhat-621083]* I am using Apache Camel 2.15.1, Blueprint and JBoss Fuse 6.2.1. Regards, Giacomo -- View this message in context: http://camel.465427.n5.nabble.com/camel-cxf-PAYLOAD-and-MTOM-error-tp5794073.html Sent from the Camel - Users mailing list archive at Nabble.com.