Remote Procedure Calls with SOAP

Interchange has built-in support for SOAP, the Simple Object Access Protocol defined originally by Microsoft and embraced and extended in an open fashion by the W3 standards organzation. It is based on XML and is the leading e-commerce communication mechanism, supported by every major company involved in e-commerce.

SOAP allows you to write programs in any language which can directly access functions on Interchange. It is possible to order an item, enter address/shipping information, and trigger an order via remote procedure call. And much more.

In addition, Interchange provides a SOAP client that allows you to do the same with other XML-based SOAP servers.

It is beyond the scope of this document to describe exactly how SOAP works. For more information about SOAP, see the following:

        http://www.w3.org/TR/SOAP/

All of Interchange's SOAP functions are based on Paul Kulchenko's excellent SOAP::Lite module set for Perl. See information about it at:

        http://www.soaplite.com/

There are many other sources of information about SOAP. Check your neighborhood search engine.

WARNING: The SOAP server is in an alpha state. This means that the interface may change at any time, and that all features are not fully tested.

Interchange SOAP features

SOAP interchange.cfg global directives

SOAP
Whether SOAP is enabled on this server. A yes/no directive.
        SOAP    Yes

Default is No.

SOAP_StartServers
How many SOAP RPC servers should be started in initial operation. More may be started if traffic gets heavy. A positive integer.
        SOAP_StartServers  5

Default is 1.

SOAP_Socket
The socket(s) that should be enabled to receive SOAP calls. This is an array -- if you wish to have multiple sockets monitored specify them.
        SOAP_Socket 7780 7781

Default is 7780. If you want to monitor only a certain IP address, instead of all attached interfaces (the default), specify the port like:

        SOAP_Socket  127.0.0.1:7780 127.0.0.1:7781

If your transport software supports it, you may use UNIX-domain sockets by specifying them as an absolute file path:

        SOAP_Socket  7780 /var/run/interchange/socket.soap

As shown above, you can monitor both INET and UNIX domain sockets.

SOAP_Perms
The permissions that are applied to any UNIX domain sockets and files listing current socket connections. If they are world writable, a warning will be issued on startup.
        SOAP_Perms   0660

Default is 0600.

SOAP_MaxRequests
Because SOAP servers process requests in the foreground, there is a possibility for memory consumption growth. To prevent this, every so often the SOAP server will ``die'' and a new one is spawned to replace it. This directive determines how many transactions a SOAP server will serve before dying.
        SOAP_MaxRequests 100

Default is 50.

SOAP_Host
This is the list of hosts that are allowed to connect to the SOAP server.
        SOAP_Host  127.0.0.1 10.* 205.133.134.19

Wildcards can be used. Default is localhost 127.0.0.1.

SOAP catalog.cfg directives

SOAP
Whether SOAP calls can be used to access this catalog. A yes/no directive.
        SOAP  Yes

Default is No.

SOAP_Enable
Enabling of certain parameters. (Not fully implemented yet.)
        SOAP_Enable   interpolate 1

The above would allow embedded Perl code to be interpreted as a part of a SOAP RPC call.