[SWS-855] SPRING WEB SERVICES 2.1.3 is not generating content type as application/xop+xml for MTOM. Created: 06/Dec/13  Updated: 30/Dec/14  Resolved: 06/Feb/14

Status: Resolved
Project: Spring Web Services
Component/s: None
Affects Version/s: 2.1.3
Fix Version/s: 2.2.RC1

Type: Defect Priority: Critical
Reporter: Govinda Reddy Assignee: Arjen Poutsma
Resolution: Cannot Reproduce Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Spring ws 2.1.3
Websphere application server
JDK 1.6


Spring WS isnot generating raw message as below mentioned

Accept-Encoding: gzip,deflate
Content-Type: application/soap+xml;charset=UTF-8;action="urn:ihe:iti:2007:RetrieveDocumentSet"
Content-Length: 1566
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.1.1 (java 1.5)
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing">
  <!--The following header applies for a Synchronous Web Services Exchange Request 
        Please note that a soap message can only have one header section. -->

Any client accessing this web service expects Content-Type as application/xop+xml.

Due to this content type mismatch client is not receiving the response ant throwing error as below mentioned

System.ServiceModel.ProtocolException: The content type application/xop+xml;type="application/soap+xml" of the response message does not match the content type of the binding (multipart/related; type="application/xop+xml"). If using a custom encoder, be sure that the IsContentTypeSupported method is implemented properly.”


<xs:element name="DocumentContent" type="xs:base64Binary"/>

Spring config

<bean id="messageFactory" class="org.springframework.ws.soap.saaj.SaajSoapMessageFactory">
		<description>A message factory to support SOAP 1.2</description>
		<!--  <constructor-arg ref="soapMessageFactory" />		 -->
		<property name="soapVersion">
			<util:constant static-field="org.springframework.ws.soap.SoapVersion.SOAP_12" />

<bean id="messageReceiver"
		<property name="endpointAdapters">
				<property name="marshaller" ref="marshaller" />
				<property name="unmarshaller" ref="marshaller" />
		<property name="endpointMappings" ref="endpointMapping" />

	<bean id="endpointMapping"
	<!-- 	<property name="messageSenders">
				class="org.springframework.ws.transport.http.HttpUrlConnectionMessageSender" />
		</property> -->
		<property name="postInterceptors">
							<ref bean="soapEnvelopePayloadInterceptorRef" />


	<bean id="marshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
		<property name="contextPaths">
				<value> package2</value>
		<property name="mtomEnabled" value="true" />

Please let me know how to fix this issue.

Comment by Arjen Poutsma [ 06/Feb/14 ]

I am having problems reproducing this. Can you attach a simple, minimal test case that reproduces this behavior?

Comment by Dustin Clark [ 30/Dec/14 ]

This is also happening to us in a Grails app and Spring WS 2.2.0. The ContentType header is set correctly while running locally, but running on Weblogic (10.3.6), the header is set to text/xml.

<Dec 30, 2014 12:52:45 PM CST> <Notice> <Stdout> <BEA-000000> <2014-12-30 12:52:45,931 [[ACTIVE] ExecuteThread: '3' for queue: 'weblogic.kernel.Default (self-tuning)'] TRACE MessageTracing.sent  - Sent request [------=_Part_1_370067740.1419965565920
Content-Type: text/xml; charset=utf-8
Content-Transfer-Encoding: 8bit
Content-ID: <soapPart>
2014-12-30 12:43:23,021 [http-bio-8081-exec-14] TRACE MessageTracing.sent  - Sent request [------=_Part_4_1021751216.1419965003018
Content-Type: application/xop+xml; charset=utf-8; type="text/xml"

Can we re-open?

Comment by Dustin Clark [ 30/Dec/14 ]

Disregard. Pulling in saaj-impl 1.3.23 and preferring application classes for javax.xml.soap.* resolved this issue.

Generated at Thu Nov 15 16:38:09 UTC 2018 using JIRA 7.9.2#79002-sha1:3bb15b68ecd99a30eb364c4c1a393359bcad6278.