SOAP over JMS Support in WSDL Import and Export

SOAP and JMS are supported in WSDL Import and Export for events, channels, rules, rulefunctions and catalog functions.

WSDL Import

The WSDL Import wizard generates resources for handling SOAP and JMS bindings.

Events

One Event type named /Events/SoapJms. This event inherits from SOAPEvent and provides a set of properties that may be useful for SOAP and JMS. Events are operation-specific events and they are imported similarly as for the SOAP and HTTP WSDL Import.

Serializers

Two types of serializers are available for conversion between JMS messages and SOAPEvent events. To send SOAP messages in byte format from the TIBCO BusinessEvents engine use the com.tibco.cep.driver.jms.serializer.SoapMessageSerializer serializer. To send out messages in text format, you can use the com.tibco.cep.driver.jms.serializer.SoapTextMessageSerializer serializer.

Channels

A JMS channel by default is located at /Channels/SoapJms for each different set of parameters, with one shared JMS connection resource.

By default the resource is in the Transport folder of the imported service folder. One destinations for each different set of destination parameters is designated.

By default the destination is named destinationName, which uses the serializer SoapMessageSerializer and the default event type /Event/SoapJms. See the RegisterSoapEventUris function below, which allows the deserializer know how to deserialize message into operation-specific events instead of using the destination default.

Rules

There is one rule for each operation, which is imported similarly as for the SOAP and HTTP WSDL Import.

By default, the rule replies with a SOAP fault stating that the operation is not implemented.

RuleFunctions

There is one RuleFunction for each operation, which is imported similarly as for the SOAP and HTTP WSDL Import.

If desired, the RuleFunction can be used as a preprocessor function.

The one RuleFunction is named, RegisterSoapEventUris.

By default, it is available in the Transport folder of the imported service folder. This registers in the JMS SoapMessageSerializer, and event type for each operation that is reachable by a SOAP and JMS binding. It should be invoked as a startup function.

Catalog Functions

A serializer and deserializer for SOAP and JMS has been added to the JMS destinations. This serializer handles the conversion between the JMS messages and SOAPEvent events. Two help catalog functions are provided as well:

Catalog Function Description
SOAP.registerEventUri()Voids registerEventUri(String event Uri, String destinationUri, String serviceName, String soapAction, String Preprocessor)

Associates an event type to a given input destination, target service, and SOAP action. This is used by the SOAP and JMS deserializer to generate events of specific types (eventUri) instead of using the default event type resolution mechanism.

  • eventUri: String path of an event type in the project.
  • destinationUri: String path of the TIBCO BusinessEvents destination receiving the message. If this is empty, it matches all of the destinations.
  • serviceName: String name of the target service declared in the message received. If this is empty, it matches all of the service names.
  • soapAction: String value of the SOAPAction parameter in the message received.
  • Preprocessor: String path of the preprocessor in the project.

SOAP.newCorrelationId()String newCorrelationId(String responseEventUri)

Creates a new correlation ID for use when sending a message in a request and response case. This is used by the SOAP and JMS deserializer to generate a response event of a specific type, instead of using the default event type resolution mechanism.

  • responseEventUri: String path of an event type in the project.
  • returns: String correlation ID.
In the context of TIBCO BusinessEvents, the two tasks of a message serializer are deserialization from the transport-level message to an event and serialization from an event to the transport-level message.

WSDL Export

The WSDL Export was implemented to support SOAP and JMS, but it has some limitations. The following include its limitations:

  1. It uses the TIBCO format and not W3C.
  2. It relies on the presence of an event registration startup function with a body that looks like something that is generated during WSDL Import.
  3. It relies on a folder structure that is similar to what is generated during import.
  4. It does not export all of the possible information, for example, the reply-to names.
Note: The import of a WSDL, then an export to another WSDL should result in similar WSDLs, though not identical.