[ https://issues.apache.org/jira/browse/CXF-8938?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Willem Salembier updated CXF-8938: ---------------------------------- Description: CXF seems to force xop:Include tags for web services that don't require or activate MTOM, but use SOAP with Attachments (SwA). The goal of this type is to send the document as a mime part attachment, but the digest of the file should just be a base64 encoded string in the SOAP body. {code} <xsd:complexType> <xsd:sequence> <xsd:element name="Attachment" type="swaref:swaRef"/> <xsd:element name="Digest" type="xsd:base64Binary"/> </xsd:sequence> </xsd:complexType> {code} CXF generates the following including a {{xop:Include}} tag for the Digest. {code} <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <ns2:SecureDocument xmlns:ns2="http://playground.be/sample/v1"> <Attachment>5e0b9189-8ba0-4159-a4cd-3bac838cd...@apache.org</Attachment> <Digest> <xop:Include xmlns:xop="http://www.w3.org/2004/08/xop/include" href="cid:136ebfc9-72d9-4887-8548-267a24678228-1@cxf.apache.org"/> </Digest> </ns2:SecureDocument> </soap:Body> </soap:Envelope> {code} This behavior seems to come from {{org.apache.cxf.jaxb.attachment.JAXBAttachmentMarshaller}} which forces that any attachment list (even when it is empty) activates XOP. {code} public JAXBAttachmentMarshaller(Collection<Attachment> attachments, Integer mtomThreshold) { super(); if (mtomThreshold != null) { threshold = mtomThreshold.intValue(); } atts = attachments; isXop = attachments != null; } {code} XOP shouldn't be the default. In {{cxf.xml}}, I tried disabling MTOM, but I cannot get rid of the XOP tags. I didn't find a way to retrieve and customize the {{JAXBAttachmentMarshaller}} instance neither. {code} <jaxws:client name="{http://playground.be/sample/v1}SampleSOAP11" createdFromAPI="true" address="http://localhost:8080"> <jaxws:properties> <entry key="mtom-enabled" value="false"/> </jaxws:properties> </jaxws:client> {code} This is my reproducer: [^swaref.zip] was: CXF seems to force xop:Include tags for web services that don't require or activate MTOM, but use SwA attachments. The goal of this type is to send the document as a mime part attachment, but the digest of the file should just be a base64 encoded string in the SOAP body. {code} <xsd:complexType> <xsd:sequence> <xsd:element name="Attachment" type="swaref:swaRef"/> <xsd:element name="Digest" type="xsd:base64Binary"/> </xsd:sequence> </xsd:complexType> {code} CXF generates the following including a {{xop:Include}} tag for the Digest. {code} <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <ns2:SecureDocument xmlns:ns2="http://playground.be/sample/v1"> <Attachment>5e0b9189-8ba0-4159-a4cd-3bac838cd...@apache.org</Attachment> <Digest> <xop:Include xmlns:xop="http://www.w3.org/2004/08/xop/include" href="cid:136ebfc9-72d9-4887-8548-267a24678228-1@cxf.apache.org"/> </Digest> </ns2:SecureDocument> </soap:Body> </soap:Envelope> {code} This behavior seems to come from {{org.apache.cxf.jaxb.attachment.JAXBAttachmentMarshaller}} which forces that any attachment list (even when it is empty) activates XOP. {code} public JAXBAttachmentMarshaller(Collection<Attachment> attachments, Integer mtomThreshold) { super(); if (mtomThreshold != null) { threshold = mtomThreshold.intValue(); } atts = attachments; isXop = attachments != null; } {code} XOP shouldn't be the default. In {{cxf.xml}}, I tried disabling MTOM, but I cannot get rid of the XOP tags. I didn't find a way to retrieve and customize the {{JAXBAttachmentMarshaller}} instance neither. {code} <jaxws:client name="{http://playground.be/sample/v1}SampleSOAP11" createdFromAPI="true" address="http://localhost:8080"> <jaxws:properties> <entry key="mtom-enabled" value="false"/> </jaxws:properties> </jaxws:client> {code} This is my reproducer: [^swaref.zip] > CXF forces XOP for SwA SOAP services > ------------------------------------ > > Key: CXF-8938 > URL: https://issues.apache.org/jira/browse/CXF-8938 > Project: CXF > Issue Type: Bug > Components: JAXB Databinding > Affects Versions: 3.6.2 > Reporter: Willem Salembier > Priority: Major > Attachments: swaref.zip > > > CXF seems to force xop:Include tags for web services that don't require or > activate MTOM, but use SOAP with Attachments (SwA). > The goal of this type is to send the document as a mime part attachment, but > the digest of the file should just be a base64 encoded string in the SOAP > body. > {code} > <xsd:complexType> > <xsd:sequence> > <xsd:element name="Attachment" type="swaref:swaRef"/> > <xsd:element name="Digest" type="xsd:base64Binary"/> > </xsd:sequence> > </xsd:complexType> > {code} > CXF generates the following including a {{xop:Include}} tag for the Digest. > {code} > <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> > <soap:Body> > <ns2:SecureDocument xmlns:ns2="http://playground.be/sample/v1"> > > <Attachment>5e0b9189-8ba0-4159-a4cd-3bac838cd...@apache.org</Attachment> > <Digest> > <xop:Include > xmlns:xop="http://www.w3.org/2004/08/xop/include" > href="cid:136ebfc9-72d9-4887-8548-267a24678228-1@cxf.apache.org"/> > </Digest> > </ns2:SecureDocument> > </soap:Body> > </soap:Envelope> > {code} > This behavior seems to come from > {{org.apache.cxf.jaxb.attachment.JAXBAttachmentMarshaller}} which forces that > any attachment list (even when it is empty) activates XOP. > {code} > public JAXBAttachmentMarshaller(Collection<Attachment> attachments, > Integer mtomThreshold) { > super(); > if (mtomThreshold != null) { > threshold = mtomThreshold.intValue(); > } > atts = attachments; > isXop = attachments != null; > } > {code} > XOP shouldn't be the default. In {{cxf.xml}}, I tried disabling MTOM, but I > cannot get rid of the XOP tags. I didn't find a way to retrieve and customize > the {{JAXBAttachmentMarshaller}} instance neither. > {code} > <jaxws:client name="{http://playground.be/sample/v1}SampleSOAP11" > createdFromAPI="true" address="http://localhost:8080"> > <jaxws:properties> > <entry key="mtom-enabled" value="false"/> > </jaxws:properties> > </jaxws:client> > {code} > This is my reproducer: [^swaref.zip] -- This message was sent by Atlassian Jira (v8.20.10#820010)