[ https://issues.apache.org/jira/browse/CXF-6430?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Colm O hEigeartaigh closed CXF-6430. ------------------------------------ > SwA: Wrong Content-Type of root part > ------------------------------------ > > Key: CXF-6430 > URL: https://issues.apache.org/jira/browse/CXF-6430 > Project: CXF > Issue Type: Bug > Components: Transports > Affects Versions: 3.0.1 > Reporter: Christian Koch > Assignee: Akitoshi Yoshida > Fix For: 3.1.1, 3.0.6, 2.7.17 > > > we are implementing an ebMS3 solution using cxf 3. The profile to be > implemented has the following requirements: > - SwA (no MTOM) > - SOAP 1.2 > - Due to the design of ebMS3 there is no WSDL > As there is no WSDL we use the javax.xml.ws.Dispatch API with > SOAPBinding.SOAP12HTTP_BINDING as binding. The message ebMS3 expects, > according to its specification looks as follows: > Content-Type: Multipart/Related; boundary=MIME_boundary; > type=application/soap+xml; > start="<car-d...@cars.example.com>" > --MIME_boundary > Content-Type: application/soap+xml; charset=UTF-8 > Content-Transfer-Encoding: 8bit > Content-ID: <car-d...@cars.example.com> > <?xml version='1.0' ?> > <S12:Envelope xmlns:S12="http://www.w3.org/2003/05/soap-envelope" > . > . > . > </S12:Envelope> > --MIME_boundary > Content-Type: image/tiff > Content-Transfer-Encoding: binary > Content-ID: <car-ph...@cars.example.com> > ...binary TIFF image of the car... > --MIME_boundary-- > However, what we produce is as follows: > Content-Type:multipart/related; type="application/soap+xml"; > boundary="MIME_boundary"; start="<car-d...@cars.example.com>"; > start-info="application/soap+xml" > Accept:*/* > User-Agent:Apache CXF 3.0.1 > Cache-Control:no-cache > Pragma:no-cache > Host:127.0.0.1:8080 > Connection:keep-alive > --MIME_boundary > Content-Type: text/xml; charset=UTF-8; type="application/soap+xml" > Content-Transfer-Encoding: binary > Content-ID: <car-d...@cars.example.com> > <?xml version='1.0' ?> > <S12:Envelope xmlns:S12="http://www.w3.org/2003/05/soap-envelope" > . > . > . > </S12:Envelope> > --MIME_boundary > Content-Type: image/tiff > Content-Transfer-Encoding: binary > Content-ID: <car-ph...@cars.example.com> > ...binary TIFF image of the car... > -- MIME_boundary-- > The difference lies in the Content-Type of the root part, which is expected > as application/soap+xml but set to text/xml. When testing against an Axis > driven implementation we get the following error: > Error while executing the transport Method RuntimeException: Invalid > Content-Type: text/xml; charset=UTF-8; type="application/soap+xml" > Our dispatch method looks like this: > public SOAPMessage dispatch(final SOAPMessage soapMessage) { > final QName serviceName = new QName("http://example.com", > "msh-dispatch-service"); > final QName portName = new QName("http://example.com", > "msh-dispatch"); > final javax.xml.ws.Service service = > javax.xml.ws.Service.create(serviceName); > service.addPort(portName, SOAPBinding.SOAP12HTTP_BINDING, > "127.0.0.1:8080"); > Dispatch<SOAPMessage> dispatch = service.createDispatch(portName, > SOAPMessage.class, javax.xml.ws.Service.Mode.MESSAGE); > Policy policy = policyFactory.parsePolicy("mypolicy.xml"); > dispatch.getRequestContext().put(PolicyConstants.POLICY_OVERRIDE, > policy); > SOAPMessage result = dispatch.invoke(soapMessage); > return result; > } -- This message was sent by Atlassian JIRA (v6.3.4#6332)