Simon Fell > Its just code > Apache SOAP 2.2 with MSTK 2.0 clients using WSDL

Tuesday, January 15, 2002

The urban legend that you can't use a MSTK2.0 high level client with an Apache SOAP 2.2 server continues to circulate. Its just not true !

The trouble is, people building SOAP services with Apache SOAP stop once they have an Apache SOAP based clienting working, the Apache client will send type information in the SOAP payload, so the server can decode it without any further info. But this is not the only mode of operation, in addition, you can configure type mappings in the server that take effect when there is no type information directly in the payload. [such as with a WSDL based client like MSTK2.0]

What you need to do on the server end, is to add isd:map entries to the deploymentDescriptor, that map from elementNames to deserializer objects, and conviently, there's a samples of this in Apache SOAP 2.2, see \\samples\\interop\\deploymentDescriptor.xml, see that there's entries for each parameter used in the interopLab service, that details the deserializer to use.

So, if you have an Apache 2.2 server up and running with the samples deployed, you can try this out. For the MSTK2.0 client, you'll need a WSDL file that describes the service, fortuantly there's plenty of these kicking around, just grab one and change the soap:address to point to your server. Now run up a MSTK2.0 client, initialize it from the WSDL file, and off you go.

The Interoperability page in the Apache docs details this, and also includes details on setting up the equivilent client side mapping, if you've got an Apache client calling a MSTK2.0 server.

There's a zip file, with a suitable WSDL file, and VBScript/MSTK2.0 client here

Use tcpTrace or TcpTunnelGui to prove that there's no type information in the request.

Unfortuantly there's no WSDL generation tools for Apache SOAP 2.2, so you get to write the WSDL by hand, but its entirely doable, and it does work.