Logo WHITE MESA SOFTWARE
Home   Download   Links   Documentation
 

White Mesa SOAP Server: Important Notes

Version 3.2

Supported operating systems are Windows 2000 and Windows XP.

The SOAP server is a Windows NT Service and is controlled via the "Services" applet. In Win2K and XP, this is found under the "Administrative Tools" folder in the Control Panel. Here the server can be started, stopped, etc.

The C++ SOAP server control panel app is found in the "White Mesa SOAP Server" Program Group found in the Start Menu under "Programs". Of course the server must be running for it to connect.

The browser based control panel app is available by pointing you browser to the file cp_app.htm found in the docroot subdirectory. For remote access, the SOAP server itself will gladly serve it up for you. If the server is running on a host named "example.org" on port 80 then point your browser at the URL "http://example.org/cp_app.htm".

Links to the browser based test clients for:

  • SOAP 1.1 "rpc" style tests (test-soap11/interop_index.htm)
  • SOAP 1.1 "document" style tests (test-soap11/interopdoc_index.htm)
  • SOAP 1.2 Test Collection (test-soap12/soap12-test-index.htm)
  • WS-Routing test (test-soap11/echoString_ws-rp.htm)
  • SOAP Digest Authentication tests (test-soap11/digest_auth_index.htm)
  • SOAP 1.1 and 1.2 "rpc/literal" tests (test-rpc-lit/rpc-lit-test-index.htm)

are found in the "White Mesa SOAP Server" Program Group found in the Start Menu under "Programs".

The C++ DIME test client app is found in the Start Menu under "Programs", in the same Program Group as the SOAP server control panel.

The installation will provide the WSDL files for supporting various services. In the "port" element, contained within the "services" element of each of these files, the URL for service access is given. As installed, these URL's will use "localhost" (normally mapped to the loopback address 127.0.0.1) as the hostname. It's a good idea to edit the URL (use Notepad) to replace this with the proper hostname (mapped to the network IP address of the server machine). Since the C++ control panel client app relies on finding the service URL in the WSDL file for the control panel service, this must be done if it is to be run on a different machine than the server. In this way remote monitoring and control of the server is possible.

The control panel requires a user name and password that are used for the Digest Authentication scheme. Such pairs are stored on the server machine in the XML configuration file for the SOAP Digest Authentication Server auth-config.xml.

The installation creates a single such pair (or account) in which the user name is "admin" and the password is "foo". This account exists in the security realm "wmss@localhost", and the Control Panel application is assigned to this security realm. Connecting to the server with the control panel app immediately after installation requires typing "admin" in the "User ID" and "foo" in the "Password" fields on the login dialog opened by the the control panel when the "Connect" button is clicked.

First logon after installation.

To change the password, or create a new account, simply update the XML file auth-config.xml, which is decribed in the documentation for the White Mesa SOAP Digest Authentication Server. The authentication scheme is a good demonstration of the server's header processing mechanism.

The server's configuration file:

This is found in the root installation directory along with the main server executable file wmsoapsvc.exeand is named wmss-config.xml. The server will not function if this file is renamed or is not present in the same directory as the executable. It's a good idea to back it up regularly. Here is an example configuration file as it would appear immediately after installation. It can be divided into three sections:

  • A global properties section.
  • A list of service endpoint definitions.
  • A list of MIME type to file extension mappings.

Global properties:

  • The listenAddress element may be used to specify the IP address (in dotted quad form, e.g. 127.0.0.1) of the interface that the SOAP Server is bound to at startup. If empty then the first available interface is used. There is no default. It is a value of type "string".
  • The listenPort element contains the TCP port number at which the SOAP Server will be listening. 80 is the default. It is an integer value.
  • The numWorkThreads element specifies the number of working threads that will be spawned at startup to handle socket i/o for the SOAP Server. 8 is the default. It is value of type "int".
  • The maxClients element specifies the number of concurrent client HTTP connections that are allowed at any time. Once the number of active connections reaches this value, the SOAP Server refuses further HTTP connection requests. The default is 16, you may wish to tweak this to suit your situation. It is a value of type "int".
  • The clientTimeout element specifies the maximum time in seconds that a client HTTP connection will be kept open. Connections that exceed this time are forcibly closed by the SOAP Server. The default is 60, you may wish to tweak this value to suit your situation. It is a value of type "int".
  • The watchdogInterval element specifies the interval in seconds between invocations of the watchdog function which performs periodic housekeeping chores within the SOAP Server, such as flushing log file buffers, etc. The default is 15. It is a value of type "unsigned int".
  • The wsdlCacheSize element specifies the size of the WSDL document cache. WSDL descriptions (or rather the internal representation resulting from parsing the WSDL file) are cached by the server to speed up processing, so that subsequent invocations of the same service endpoint don't require a load and parse of the WSDL doc. You may wish to tweak this value to suit your situation. The default is 20. It is a value of type "int".
  • The docBasePath element specifies the document root directory used by the SOAP Server when servicing HTTP GET requests for document resources. The default is the path to the "docroot" directory created by the installation program. It is a value of type "string".
  • The defaultDocument element specifies the default document to be returned for HTTP GET requests when none is specified. The default is the path to the file "default.htm" created by the installation program. It is a value of type "string".
  • The enableNameLookup element specifies whether or not the SOAP Server will attempt to perform a reverse DNS lookup on the IP address of a connecting client in order to write it into the HTTP log. Enabling this feature results in a significant performance degradation at runtime. The default is "false". It is a value of type "boolean".
  • The enableServerLog element specifies whether or not the SOAP Server's HTTP request log is enabled. The default is "true". It is a value of type "boolean".
  • The serverLogPath element specifies the path to the SOAP Server's HTTP request log. The default is the path to the file "server.log" created by the installation program. It is a value of type "string".
  • The enableTraceLog element specifies whether or not the SOAP Server's SOAP message trace log is enabled. The default is "false". It is a value of type "boolean".
  • The traceLogPath element specifies the path to the SOAP Server's SOAP trace log. The default is the path to the file "trace.log" created by the installation program. It is a value of type "string".
  • The enableUserAgentLog element specifies whether or not the SOAP Server's User Agent log is enabled. The default is "false". It is a value of type "boolean".
  • The userAgentLogPath element specifies the path to the SOAP Server's User Agent log. The default is the path to the file "useragent.log.log" created by the installation program. It is a value of type "string".
  • The logRotationInterval element specifies the interval in HOURS at which any open log files are rotated. If the value is "0" then log rotation is disabled. Rotated logs are renamed with the date and time of rotation encoded in the filename. If a log named "server.log" is rotated, it will be named as follows: server_yymmddHHMMGMT.log where "yy" is the year without century, "mm" the month as a number 0-12, "dd" is the day as a number 1-31, "HH" the hour 0-24, "MM" the minute, and "GMT" indicates that this is GMT time. The default is "0", i.e. no rotation. It is a value of type "unsigned int".

Service endpoint definitions:

These are created when configuring an new service with the Control Panel application, and are usually maintained in the same way. Alternatively the same may be done by editing the configuration file directly. Ill-formed service endpoint definitions will be ignored by the SOAP Server.

  • The requestURI element specifies the relative URI by which the service endpoint will be invoked. For instance, if a service is defined with request URI "/foo" on host "example.org" then a client would access the service using URL "http://example.org/foo". URIs of the form "/foo/*" are allowed to support the SOAP 1.2 "Web Method" feature. The significance of the wildcard character "*" is that the SOAP Server will map any incoming request URI beginning with the path component "/foo" to the service defined as "/foo/*". So a SOAP message sent to URL "http://example.org/foo/bar/whatever" would be dispatched to that service endpoint. The value must always begin with a leading "/" character. It is a value of type "anyURI".
  • The wsdlService element specifies the name of the WSDL "service" definition which applies to the service endpoint. It is a value of type "string".
  • The wsdlPort element specifies the name of the WSDL "port" definition which applies to the service endpoint. The WSDL "port" must be contained within the WSDL "service" definition mentioned above. It is a string value.
  • The wsdlDocURL element specifies the URL of the WSDL document which contains the WSDL "service" and "port" definitions mentioned above. The URL schemes "http://" and "file://" are supported. The White Mesa SOAP Server and client side libraries use this URL to load the WSDL document for the service at runtime. It is a value of type "anyURI".
  • The bodyProcessingProgId element specifies the ProgId of the COM component designated to process the contents of the SOAP Body element for the service. It will implement the methods of an "rpc" style service, or process the literal Body element contents for a "document" style service. It may be empty for a service acting only as an intermediary. It is a value of type "string".
  • The headerProcessingProgIds element specifies a list of zero or more ProgIds identifying Header processors to be called by the SOAP Server during message processing. The list consists of a sequence of "progId" elements, of type "string".
  • The roles element specifies a list of zero or more URIs whose purpose is establish which roles are supported by the service. The SOAP Server uses this information to determine which Header blocks are targeted at the service during Header processing. The list consists of a sequence of "uri" elements of type "anyURI".
  • The nodeURI element specifies the absolute URI of the service. The SOAP Server uses this information when generating Fault messages for the service if it is acting as an intermediary. For instance, if a service is defined with request URI "/foo" on host "example.org" then the nodeURI should be specified as "http://example.org/foo". This value may be empty if the service acts only as the ultimate receiver in a message path. It is a value of type "anyURI".
  • The nextHopURL element specifies the URL of the next SOAP processing node in the message path if the service is intended to act as an intermediary. This value MUST be empty if the service acts only as the ultimate receiver in a message path. It is a value of type "anyURI".
  • The enabled element specifies whether or not the service is enabled. If the value is "false", request messages directed at the service endpoint result in an HTTP 404 "Not Found" error. In this way a service can be turned "on" or "off" as needed. It is a value of type "boolean".
  • The enableExplictTyping element specifies whether or not the SOAP Server places explicit typing information (e.g. xsi:type="xsd:string") on accessor elements in SOAP RPC response messages. This is a "compatibility" mode which may be necessary to interoperate with clients who depend on the presence of explicitly typed method parameters to process the response correctly. This setting has effect only if the service is an "rpc" style service. The default is "false". It is a value of type "boolean".
  • The enableNodeType element specifies whether or not the SOAP Server places SOAP 1.2 "nodeType" information (e.g. enc:nodeType="struct") on accessor elements in SOAP RPC response messages. This is a "compatibility" mode which may be necessary to interoperate with clients who depend on the presence of this information to process the response correctly. This setting has effect only if the service is a SOAP 1.2 "rpc" style service. The default is "false". It is a value of type "boolean".

MIME type mappings:

The mimeMappings element contains a sequence of "item" elements, each of which specify an association between a MIME media type and a filename extension. The filename extension is found in the "extension" element, and the associated MIME type in a "mimeType" element. Normally these mappings are maintained using the Control Panel application. The SOAP Server uses this information when processing HTTP GET requests for document resources. A number of mappings for common filename extensions are created by the installation program.

Home   Download   Links   Documentation

Copyright © 2003 by Robert Cunnings.   cunnings@whitemesa.com  Last modified: June 29, 2003