SoapServerApp

SOAP Server Application Configuration

The N2SVCD SOAP Server Application listens for inbound SOAP.

The SOAP Server Application does not process any user content itself. It exists only as an agent to receive requests on behalf of another application.

Typical uses of the SoapServerApp are:

See the N2SVCD Configuration Overview for more information on how the SOAP Server Application interacts with other components.

The following configuration is used to create a SOAP Application TCP Server instance.

<?xml version="1.0" encoding="utf-8"?>
<n2svcd>
  ...
  <applications>
    ...
    <application name="SOAP-SERVER" module="SoapServerApp">
      <include><lib>../apps/rest_s/lib</lib></include>
      <parameters>
        <parameter name="trace_level" value="1"/>
        <parameter name="local_port" value="7077"/>
      </parameters>
      <config>
        <handlers>
          <handler application="Logic"/>
        </handlers>
      </config>
    </application>
    ...
  </application>
  ...
</n2svcd>

Configuration Details

The application element attributes for a SOAP Server Application instance may include the below.

For details of the various parameter types used, refer to Common Configuration.

Parameter Name Type XML Type Description
See: Common Application configuration
See: TCP Application configuration
module String Attribute [Required] SoapServerApp
include.lib String Element [Required] ../apps/rest_s/lib
parameters Array Element [Required] As per Common Configuration Application parameters.
"edr_enabled" - - This value is ignored; the SOAP Server Application does not support writing EDRs.
"socket_mode" String Attribute The SOAP Server Application supports only listen (TCP Server).
(Default = listen)
"remote_port" Positive Integer Attribute As per common TCP configuration for remote_port.
(Default = 7077)
"ping_interval" - - This value is ignored; the SOAP Server Application does not support sending of ping messages.
"quirks_mode" String Attribute The integration quirks to apply to client connections, as described in Quirks Modes.
(Default = generic)
"output_mode" Positive Integer Attribute The form of XML to output, as described in the toString LibXML documentation.
(Default = 1)
"ns_array_items" Boolean Attribute Whether array items should include their container's namespace, if any. Applies only when `quirks_mode` is `simple`.
(Default = 0)
config Object Element Container for extended configuration for this application.
.handlers Array Element Array of SOAP handler elements for selecting the owning Application for inbound SOAP requests.

SOAP Handlers

Handler rules define which application is used to process inbound SOAP Requests. Each handler Object in the config.handlers Array is configured as follows.

Parameter Name Type XML Type Description
method String Attribute [Required] The inbound HTTP method, e.g. GET, PUT, POST, DELETE.
path String Attribute A path from the URL, matched exactly against the path of the inbound request.
Only one of path or path_prefix may be specified.
path_prefix String Attribute A path from the URL, prefix matched against the path of the inbound request.
Only one of path or path_prefix may be specified.
application String Attribute [Required] The name of the application which should process matching messages.
This will normally refer to a LogicApp instance.

The handlers will be checked in order, and the first matching handler will be used.

Quirks Modes

The SOAP Server Application may operate in a “quirks mode”, which controls the extraction of received SOAP arguments into local representation and the SOAP encoding of the response parameters. These modes may also affect the selection and structure of namespaces and other SOAP attributes.

The available quirks modes are listed below.

Quirks Mode (Generic)

The generic value of quirks_mode is a default “normal” SOAP interpetation of input and output parameters which is provided as an initial starting point for integrating with other end-points.

Quirks Mode (Simple)

The simple value of quirks_mode is the same as the generic setting with some small differences.

Outbound boolean values, nil values, and array structures do not contain type declarations to SOAP types.

In addition, outbound array items:

For example, a source array of data such as:

groups => [ { name = "Group 1" } ]

… would become:

<ns:groups>
    <ns:group>
        <ns:name>Group 1</ns:name>
    </ns:group>
</ns:groups>

For item naming in array containers, the following rules are applied (in order):

  1. If the containing node is named following the pattern parent_ITEMS_AS_child, the containing node will be called parent and each item within it will be named child.
  2. If the containing node is named ...ies, assume the singular ends in y. For example, a container node queries would have individual array items named query.
  3. If the containing node is named ...s, assume the singular is formed by removing the s. For example, a container node groups would have individual array items named group.
  4. Otherwise, the individual array items are named item.

In all cases, the parent namespace identifier, if any, is only applied if ns_array_items is enabled.

Quirks Mode (NCC PI)

The ncc_pi quirks mode is intended to be compatible with the interpretation of the SOAP standard as used by Oracle’s NCC Provisioning Interface server. A SOAP server using this quirks mode should parse input and return output using an XML structure that is compatible with clients that were developed to interface with the Oracle NCC PI.

Message Handling

In addition to the common Application management messages, the SOAP Server Application uses the following messages: