Sunday, January 23, 2011

the version of incoming SOAP message does not match the one returned from provider: FabricProvider

The fault code value says "env:VersionMismatch"

The entire stacktrace is:

Error oracle.webservices.service OWS-04086 oracle.j2ee.ws.common.WebServiceException: the version of incoming SOAP message does not match the one returned from provider: FabricProvider
at oracle.j2ee.ws.server.provider.ProviderProcessor.doRequestProcessing(ProviderProcessor.java:602)
at oracle.j2ee.ws.server.WebServiceProcessor.processRequest(WebServiceProcessor.java:232)
at oracle.j2ee.ws.server.WebServiceProcessor.doService(WebServiceProcessor.java:192)
at oracle.j2ee.ws.server.WebServiceServlet.doPost(WebServiceServlet.java:459)
at oracle.integration.platform.blocks.soap.FabricProviderServlet.doPost(FabricProviderServlet.java:507)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)


http://download.oracle.com/docs/cd/E12839_01/core.1111/e10113/chapter_ows_messages.htm

OWS-04086: {0}
Cause: An unexpected error occured
Action: None

Level: 1

Type: ERROR

Impact: Configuration


I have literally NO CLUE. Probably I am passing a SOAP 1.2 to SOA Suite, and it returns me a SOAP 1.1. I will figure this out...

Here http://www.w3.org/TR/soap12-part1/ it says:

If a SOAP node receives a message whose version is not supported it MUST generate a fault (see 5.4 SOAP Fault) with a Value of Code set to "env:VersionMismatch".


Also here http://www.w3.org/TR/soap12-part1/#version it says:
A SOAP/1.1 node receiving a SOAP Version 1.2 message will according to SOAP/1.1 generate a version mismatch SOAP fault based on a SOAP/1.1 message construct.

The oracle.j2ee.ws.server.provider.ProviderProcessor class is in C:\Oracle1\Middleware\oracle_common\modules\oracle.webservices_11.1.1\wsserver.jar

Unfortunately, by looking at the code of this class, there is no way to set a debug flag to trace the message returned.



SOAP1.1 uses http://schemas.xmlsoap.org/soap/envelope/
SOAP1.2 uses http://www.w3.org/2003/05/soap-envelope

If I change the NS of my message to http://schemas.xmlsoap.org/soap/envelope/
I get:

oracle.fabric.common.FabricException: oracle.j2ee.ws.saaj.soap.SOAPVersionMismatchException: Mime Header Content-Type: application/soap+xml requires SOAP envelope namespace: http://www.w3.org/2003/05/soap-envelope: Mime Header Content-Type: application/soap+xml requires SOAP envelope namespace: http://www.w3.org/2003/05/soap-envelope



which makes sense since the WSDL is a SOAP 1.2 and hence the WebService uses 1.2 headers - which are not compatible with 1.1

We have a real issue here for support of SOAP 1.2 services in SOA Suite- evidently come internal component is only SOAP 1.1 compliant and doesn't recognize SOAP 1.2 messages.

1 comment:

nasreen basu said...

nice piece of information, I had come to know about your internet site from my friend vinay, delhi,i have read atleast 12 posts of yours by now, and let me tell you, your website gives the best and the most interesting information. This is just the kind of information that i had been looking for, i'm already your rss reader now and i would regularly watch out for the new post, once again hats off to you! Thanx a ton once again, Regards, obiee training in hyderebad