A web server virtual directory can be enabled for SOAP by specifying a user on behalf of which SOAP requests made to the endpoint will run. At that point, all stored procedures granted to the user will be available for SOAP invocation at the given endpoint.
This takes care of automatically generating a WSDL file based on the procedures published. The procedure language offers SOAP-specific declarations for exactly declaring the SOAP types, the call style, whether RPC or document literal, return-values and any other SOAP related attributes of a procedure.
The Virtuoso SOAP server parses the incoming requests and dispatches them to the stored procedures associated with the endpoint. It serializes any return values or output parameters, formats exception messages and generally takes care of the SOAP plumbing. If WS Security is enabled for the end point, it also validates signatures and decrypts and encrypts messages. All SOAP data types are supported, including structures and arrays and combination of these. The XML Schema types for the WSDL can be declared so as to produce exactly the desired interface.
Virtuoso's Conductor administration interface has an interactive SOAP testing page that allows specifying call parameters based on a service's WSDL. The development cycle simply consists of reloading the definition of the SQL procedure after editing, no compiling or restarting of servers is needed.
Virtuoso/PL has both synchronous and asynchronous methods for invoking remote SOAP services.
Scripts for the SOAP Interop levels 1-4 are included in the test-suite bundled with the Virtuoso source tree. Virtuoso SOAP has been tested with Microsoft's web services products and others.