Overview of the JMS Transport Layer
<author: Dave Chappell chappell@sonicsoftware.com>
The JMS transport layer allows SOAP messages to be carried over reliable messaging
between Axis clients and Axis services. As illustrated in figure 1, this transport layer can
be seamlessly plugged into the Axis engine as an alternative to HTTP. This allows an
axis developer to use normal Axis API’s to perform synchronous request/reply,
document-style message-based request/response, and one-way invocations across a
reliable delivery mechanism based on JMS messaging semantics.
Client
Sender
Axis
Engine
JMS
Sender
JMS
Listener
Axis
Engine
Service
JMS
Messaging
Figure 1: SOAP over JMS as an alternate transport to HTTP.
In addition to providing the base plug-in code for the transport, the JMS transport layer
also provides a subsystem that allows many conveniences when connecting to a JMS
provider, including:
• JMS provider-independent JNDI abstraction support for JMS Administered
objects i.e. ConnectionFactories and JMS destinations.
• A mechanism of bypassing JNDI and using direct instantiation of
ConnectionFactory and Topic and Queue destinations, for those JMS providers
that support such a capability.
• Generic Endpoint abstraction layer for managing Topic and Queue destinations.
• Thread pooling and Session management, providingthread-safe concurrent
sending and receiving.