Generation of WSDL files

A Web Services Description Language (WSDL) document specifies the interface to a web service, and enables a web service client to start it. A WSDL document that is generated from a message model defines web service requests and responses in terms of the messages that you have defined in that message model.

Tip: If you need to generate a WSDL document, you must first enable message set development in the IBM® Integration Toolkit. For more information, see Enabling message set development.

You can generate a WSDL document for a message model that resides in a message set.

Use message model files with target namespaces when you generate WSDL. If you do not, IBM Integration Bus uses the WSDL target namespace as the default target namespace.

In the main WSDL document, operations are defined in terms of logical messages, which are themselves defined in terms of the elements and types that are defined in these message model files.

WSDL operations are grouped into a logical interface or portType, and are then associated with a binding which defines the physical format of the messages. You can select only one of the following bindings when you generate WSDL:

  • SOAP (over JMS)
  • SOAP (over HTTP)

A WSDL service definition specifies the endpoint where the service is available. You can elect to have the service, binding, and portType definitions generated as a single file or as separate files. Tools that use WSDL are typically more tolerant of the single-file format. If you select single-file, you can also choose whether the associated XML Schema is generated from the message model as a separate file or in-line.

Considerations for deploying a WSDL file with regular expression definitions

The W3C XML Schema standard specifies how to define regular expressions using the pattern facet of simple type definitions in XML schemas, and WSDL files. Regular expressions can include a quantifier that specifies how many instances of a character, group, or character class must be present in the input, in order for a match to be found.

When the WSDL is deployed to an integration server, it is compiled into a binary file, which the IBM Integration Bus XMLNSC parser uses to validate input messages at run time. The total size of the binary file is the accumulated size of each regular expression, which depends on the quantifier ranges in each expression. A large binary file requires the integration server JVM heap size to be large enough to enable the WSDL file to be successfully deployed.

The following is an example where the quantifier is exceptionally large:
<xsd:simpleType name="VeryLargeBoolean">
    <xsd:restriction base="xsd:string">
       <xsd:pattern value="([T|t][R|r][U|u][E|e])|([F|f][A|a][L|l][S|s][E|e]){0,2147483647}" />
    </xsd:restriction>
</xsd:simpleType>
The quantifier in this example is {0,2147483647}, which during deployment will generate a binary file that is at least 2 GB in size.
The accumulated size of the regular expressions can cause a very large binary file to be created at deployment time, which might exhaust the integration server JVM heap storage. In the example shown above, the deployment failed with the following sequence of error messages:
  BIP4041E: Integration server '<Server name>' received an administration
  request that encountered an exception.

  BIP5044E: A failure occurred while the integration server was preparing
  the XML and DFDL schema files that are contained in the application
  <Application Name>.

  BIP5043E: The XMLNSC compiler ran out of memory during the preprocessing
  of XML Schema files for the XMLNSC domain.  

If this problem occurs, modify the range of the quantifiers in the regular expressions to generate a smaller number of pattern matching instances, and therefore a smaller binary WSDL file.