Introduction
This document describes how to configure and use Incoming SOAP Web Services in ADITO. It covers endpoint formatting, configuration prerequisites, authentication methods, and detailed behavior of SOAP response properties.
Endpoint Format
SOAP web services are accessible at the following URL pattern:
http://<host>:<port>/services/soap/<webserviceProcessName>
To retrieve the WSDL definition for a SOAP web service, append ?wsdl
to the endpoint URL:
http://<host>:<port>/services/soap/<webserviceProcessName>?wsdl
Example
- Service endpoint:
http://aditoserver:8080/services/soap/customerService
- WSDL URL:
http://aditoserver:8080/services/soap/customerService?wsdl
The <webserviceProcessName>
corresponds to the name of the process configured in ADITO.
Configuration
To enable a SOAP web service endpoint in ADITO, ensure the following:
- The process exists under the Processes node.
- The process has its
style
property set toSOAP_DOCUMENT
. - At least one authentication method is enabled (see Authentication).
Server Host Configuration
When configuring the jditoWebserviceServerHost
parameter:
- Setting the host to
localhost
restricts the server to listen only on local addresses (localhost
,127.0.0.1
, etc.). - Leaving the field empty allows the server to listen on all network interfaces (e.g.,
server.adito.de
,192.168.0.200
,localhost
, etc.).
Timeout Configuration
You can adjust the timeout for incoming web services by setting the expert parameter jditoWebserviceIdleTimeout
in the server instance configuration. The value is specified in milliseconds.
Authentication
ADITO supports the following authentication methods for SOAP web services:
- Anonymous access
- Basic Authentication
- User Token
At least one authentication method must be enabled to allow access to SOAP web services.
Response Behavior
Starting with version 2023.1.3, two process properties control the SOAP web service response structure:
Property | false (default) | true |
---|---|---|
soapOmitEmptyResult | Always include the <result></result> node, even if empty or missing | Omit the <result></result> node if the function returns no value |
soapUseRawXmlResult | Wrap the returned value inside a <result></result> node | Insert the returned XML directly into the SOAP body without wrapping |
Example: Input "foo"
This example demonstrates how the response varies based on the combination of soapOmitEmptyResult
and soapUseRawXmlResult
settings.
1. Default behavior (soapOmitEmptyResult
: false
, soapUseRawXmlResult
: false
)
The response wraps the returned value inside a <return>
node.
<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"
xmlns:tns="http://adito/webservice">
<soap:Body>
<tns:getXMLResponse xmlns:tns="http://adito/webservice">
<return>foo</return>
</tns:getXMLResponse>
</soap:Body>
</soap:Envelope>
2. Raw XML Result enabled (soapOmitEmptyResult
: false
, soapUseRawXmlResult
: true
)
The returned value is inserted directly without wrapping <return>
node.
<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"
xmlns:tns="http://adito/webservice">
<soap:Body>
<tns:getXMLResponse xmlns:tns="http://adito/webservice">
foo
</tns:getXMLResponse>
</soap:Body>
</soap:Envelope>
3. Omit Empty Result enabled (soapOmitEmptyResult
: true
, soapUseRawXmlResult
: false
)
Since the input is not empty, the <return>
node is included as usual.
<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"
xmlns:tns="http://adito/webservice">
<soap:Body>
<tns:getXMLResponse xmlns:tns="http://adito/webservice">
<return>foo</return>
</tns:getXMLResponse>
</soap:Body>
</soap:Envelope>
Example: Input ""
(empty string)
This example shows the SOAP response for an empty string input under different settings.
1. Default behavior (soapOmitEmptyResult
: false
, soapUseRawXmlResult
: false
)**: The <return>
node is present but empty.
<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"
xmlns:tns="http://adito/webservice">
<soap:Body>
<tns:getXMLResponse xmlns:tns="http://adito/webservice">
<return></return>
</tns:getXMLResponse>
</soap:Body>
</soap:Envelope>
2. Raw XML Result enabled (soapOmitEmptyResult
: false
, soapUseRawXmlResult
: true
)
The returned value is inserted directly without wrapping <return>
node. As it is empty, the body is also empty.
<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"
xmlns:tns="http://adito/webservice">
<soap:Body>
<tns:getXMLResponse xmlns:tns="http://adito/webservice">
</tns:getXMLResponse>
</soap:Body>
</soap:Envelope>
3. Omit Empty Result enabled (soapOmitEmptyResult
: true
, soapUseRawXmlResult
: false
)
Since the input is empty and soapOmitEmptyResult is enabled, the <return>
node is omitted from the response.
<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"
xmlns:tns="http://adito/webservice">
<soap:Body>
<tns:getXMLResponse xmlns:tns="http://adito/webservice">
</tns:getXMLResponse>
</soap:Body>
</soap:Envelope>
Note on empty string return (""
):
- With
soapOmitEmptyResult
enabled, the<return>
node is omitted entirely if empty. - With
soapUseRawXmlResult
enabled, the response body is empty inside the<tns:getXMLResponse>
node.
Note on raw XML return (e.g., <someResult>foo</someResult><bool>true</bool>
):
- With default settings, the XML is wrapped inside
<return>
. - With
soapUseRawXmlResult
enabled, the XML is inserted directly, preserving the structure.
Namespace Requirement
SOAP documents can only be processed correctly if the nodes use the ADITO namespace:
xmlns:adito="http://adito/webservice"
ADITO requires this exact URL to map the input to the SOAP function and its parameters. Using a different URL will cause internal processing errors.
The alias prefix (adito
) can be different, but the namespace URL must match exactly, for example:
xmlns:CUSTOM="http://adito/webservice"
Parallel Execution
Web service calls in ADITO are processed in parallel. Sequential execution is not supported.