Can't pass array of documents from CAF page to IS service

Can someone please help with a problem passing SOAP data from CAF to IS ?

In webMethods 7.1.2, I have a CAF page with a web service connector binding. The web service provider is implemented in webMethods developer using a flow service and a web service provider descriptor. One of the inputs to the flow service is an array of documents.

When the CAF page is submitted, the array of documents is not passed to the IS service. I took a look at SOAP Monitor, and MWS is indeed passing the entire array of documents in the SOAP request, but the document array isn’t getting to the IS service.

In developer I tried adding a pub.flow:savePipelineToFile service as the first flow step, and I learned a curious thing. Instead of receiving an array of documents, it is receiving a document containing a single sub-document. The sub-document is the last element of the array of documents that was passed from CAF.

Then I tried creating a consumer web service descriptor in developer to call the web service, and it worked.

It seems that something about the way that CAF/MWS is passing the SOAP request is not compatible with IntegrationServer.

Do you know what I did wrong? If it is a defect, what can I do to work around it? Is there a setting or configuration that I can change?

Thanks,
Scott

After some serious amount of trial-and-error with soapUI, I found the offending line in the SOAP request:

CAF sends:

  <soap:Envelope xmlns:n2='namespace_goes_here'

Working SOAP sends:

  <soap:Envelope xmlns='namespace_goes_here'

For some reason, IntegrationServer doesn’t like the :n2 part of xmlns:n2

But how can I make the :n2 go away or otherwise get the web service call to work?

Hi,
Check the .map file that is generated as part of generating the webservice connector in MWS. All the namespace declarations are present in the map file

I removed all occurrences of “:n2” in the map file and redeployed the application. Still it is sending the same SOAP request, with the same problem.

Is there something I need to do to get it to re-read the new map file?

More on this. The envelope definition from CAF is like this:

soap:Envelope xmlns:n2='http://namespace_goes_here" ...

and the method name goes like this:

customerInfo xsi:type='n2:customerInfo'

If i change the method call as follows, then it works:

n2:customerInfo xsi:type='n2:customerInfo'

Using other (non-SAG) tools to generate SOAP requests, they always add this extra text, and then it works.

The problem is that this is all wrapped up inside of CAF itself. I am unable to modify it by changing the map or wsdl files.

This looks like a defect in webMethods.

FYI, I was able to work around this defect by deleting and then recreating the Web Service Descriptor in Developer, using the RPC option instead of Doc Literal. Then I regenerated from the bindings view in Designer. After that it works.

1 Like

Great…this worked for me…Thanks a lot scott.

Its bug. Apply latest Glue Fix. Then it works for Doc/Lit webservices.