Creating a custom SOAP processor without SOAP enveloped response

I have an application that makes its business objects available through a service called XML Gateway. I have written an adapter that takes these SOAP requests and publishes them to webMethods Broker.

My challenge is sending a properly formatted response to XML GW to say that its requests have been successfully handled by my adapter. According to the software company that sells XML GW, the response should not be wrapped in a SOAP envelope. This is the first time I have seen a web service implemented this way.

My question is, is it possible to write a custom SOAP processor where the response is not wrapped in a SOAP envelope? I don’t believe it is possible to map a node to my soapResponseData variable in my pipeline. These objects are two different types.

Chris,

Well, a web service does not have to use the soap protocol, but that’s usually implied. Sounds like XML Gateway just needs an XML document to be posted somewhere.

Is XML Gateway sending you a soap message, but not allowing you to send a soap response?

Mark

Exactly. I think I am going to have to write a service that takes an XML payload from a HTTP post, and sends an XML response. The XML payload will be a SOAP request.

So, let me get this straight, XML Gateway sends you a soap request (XML payload enclosed in a Soap envelope), but won’t accept a reply to that XML request as a soap message? Is that right? If so, that’s pretty weird and not compliant with the Soap spec.

Because an IS soap processor (either the default processor or your custom processor are logically “inside” the soap content-handler, I don’t think you can receive a soapData object but return plain old XML.

You can certainly write an IS service that will accept an XML document that just happens to be a soap message. You would just convert that XML doc to an xml string and then create your soapData object using pub.soap.utls:stringToSoapData. When your service finishes, it would just format the response XML document and perhaps use pub.flow:setResponse to ensure that it is the only thing returned to the client.

Mark

XML Gateway sends a soap request, but does not accept a soap response. It’s as weird as it sounds.

I will try the IS service that takes XML document as input.

I needed to put another post on this thread. I can’t believe how easy it is to create a flow service that receives XML as input. I just created a service that takes an input variable called “node” of type Object. My XML response is sent back with pub.flow.setResponse.

I have been developing flow for a few years and have never had to create this type of service.

Chris,

A service to process a posted XML doc was part of my first first IS project over 5 years ago. This just goes to show you how broad and versatile the IS really is. Not to mention all of the other products.

Mark