JMS endpoint URL syntax

As part of an emerging industry-standard SOAP over JMS protocol, a Java™ Message Service (JMS) endpoint URL syntax has been defined. A JMS endpoint URL is used to access Java API for XML Web Services (JAX-WS) or Java API for XML-based RPC (JAX-RPC) web services with the JMS transport. This URL specifies the JMS destination and connection factory, as well as the port component name for the Web service request. This endpoint URL is similar to the HTTP endpoint URL, which specifies the host and port as well as the context root and port component name.

Supported configurations: This product supports an emerging industry standard SOAP over JMS protocol. The SOAP over JMS specification provides a standard set of interoperability guidelines for using a JMS-compliant transport with SOAP messages to enable interoperability between the implementations of different vendors. Using this standard, a mixture of client and server components from different vendors can interoperate when exchanging SOAP request and response messages over the JMS transport for both Java API for XML Web Services (JAX-WS) and Java API for XML-based RPC (JAX-RPC) web services. By using the JMS transport, your enterprise beans based web service clients and servers can communicate through JMS queues and topics instead of through HTTP connections.

IBM® and other vendors have been working on the W3C SOAP over JMS specification since 2005. The specification has been submitted to W3C and a working group is established. The current member submission of this document was jointly published in October, 2007. The application server supports the current draft specification from W3C.

Supported configurations: A JMS endpoint URL has the following general form:
jms:jndi:<destination-jndi-name>?<property>=<value>&<property>=<value>&...
The URL consists of the jms: transport type, followed by the jndi: variant type, followed by the JNDI name of the destination queue or topic, followed by the query string containing a list of property and value pairs that are used to specify various JMS endpoint information. The jndi: variant means that JNDI is used to locate object names in the endpoint URL string.

The properties supported in the URL string are described in the following tables:

Table 1. Destination-related properties (required). Use these properties to specify destination-related properties for a JMS endpoint URL.
Property name Description
jndiConnectionFactoryName Specifies the JNDI name of the connection factory that is used by the client runtime to establish a connection to the JMS messaging engine.
targetService Specifies the name of the port component to which the request is dispatched.
Table 2. JNDI-related properties (optional). Use these properties to specify JNDI-related properties for a JMS endpoint URL.
Property name Description
jndiInitialContextFactory Specifies the name of the initial context factory class to use. This value maps to the java.naming.factory.initial property.
jndiURL Specifies the JNDI provider URL. This value maps to the java.naming.provider.url property.
Table 3. JMS-related properties (optional). Use these properties to specify JMS-related properties for a JMS endpoint URL.
Property name Description
deliveryMode Indicates whether the request message is persistent or not. The valid values are PERSISTENT and NON_PERSISTENT. The default value is NON_PERSISTENT.
timeToLive Specifies the lifetime, in milliseconds, of the request message. A value of 0 indicates an infinite lifetime. If this parameter is not specified, then the JMS-defined default value is used.
priority Specifies the JMS priority associated with the request message. Specify this value as a positive integer from 0, the lowest priority, to 9, the highest priority. If this parameter is not specified, then the JMS-defined default value is used.
replyToName Specifies the JNDI name of the JMS destination to which the response message is sent. Using this optional property enables the client to use a previously defined, permanent queue rather than a temporary queue, for receiving replies.
messageType Specifies the message type to use with the request message. A value of BYTES indicates the javax.jms.BytesMessage object is used. A value of TEXT indicates javax.jms.TextMessage object is used. The default value is BYTES.

The required properties jndiConnectionFactoryName and targetService must be in the JMS endpoint URL string. The remaining properties are optional.

If you set values for the deliveryMode, timeToLive, and priority properties on the JMS request, these values are propagated from the JMS request message to the corresponding JMS reply message.

See the SOAP over Java Message Service specification in the web services specifications and APIs documentation to learn more about this industry standard.