Soap over JMS - what does it mean and why should I care?

by Kevin Bedell

Related link:

I'm a big proponent of using Web Services. I'm convinced that they are just a better way of getting certain things done. In particular, I think that Web Services provide a great way of integrating two systems that are built using different technologies.

But there's a problem. Some applications require very high
reliability for individual transactions. Soap over HTTP is limited in this type of application. The basic problem is that HTTP itself just doesn't provide guaranteed delivery. It wasn't designed to and it doesn't look as if, without modification to the protocol, it ever will. (In fact, href="">the
HTTPR proposal from IBM is designed to meet this challenge. Unfortunately it is still just a proposal...)

One way that companies are beginning to get over this challenge is by running SOAP over JMS. What is SOAP over JMS? There are a couple answers to this question.

The first answer lies in using JMS as a replacement for HTTP as the underlying transport for SOAP communications. Using Apache Axis, this means sending messages using the Axis API's, but having the actual communications to the SOAP server be processed using JMS instead of being sent over HTTP. This is a great improvement in reliability for mission critical applications.

The second answer (for Axis again) is using HTTP for communications between the SOAP client and server, but having the SOAP messages be persisted in JMS inside the Web Service client before they are sent; this way they are persisted until the HTTP communications return successfully. In a different situation, it could also mean persisting the SOAP Messages using JMS inside the Web Service server application once they are received. These two features still allow for integration with other Web Service architectures, such
as .NET, but provide additional reliability by using JMS.

One approach to enhancing the reliability of Web Service
communications is to use JMS as the underlying transport directly when communicating inside your enterprise (on the 'Intranet'), and then bridge from JMS to HTTP at the 'edge' of the enterprise (when going to the 'Internet' or an 'Extranet').

These features are either already a part of Axis 1.0, or are on the horizon. For more information see href="">this
article recently posted on the Open Enterprise Trends site or the Apache Axis site at .


2002-10-15 23:33:18
JMS - what does it mean
Funny, your little article fail to explain just that. What is JMS and what does it mean?
Maybe I am supposed to know...
But the title sure had me fooled.
2002-10-16 08:07:30
JMS - what does it mean
Gosh - don't I feel silly.

JMS stands for Java Messaging Service. JMS is a part of SUN's J2EE (Java 2 Enterprise Edition) standard. J2EE includes Servlets, Java ServerPages, Enterprise Java Beans (EJB's) and a number of other java enterprise techologies.

JMS provides a 'messaging' capability to J2EE - meaning that it allows you to send objects between systems or programs with assurances that the message will actually arrive.

It's convenient to think of JMS as the Java answer to IBM's MQSeries - another popular messaging technology - though some would argue with the comparison.

The point of this article is that JMS provides a more robust and reliable method of transporting SOAP messages than HTTP. JMS was designed with high reliability in mind, HTTP wasn't.

Thanks for reading! Hope this helps!


2002-10-17 14:57:48
JMS - what does it mean
2003-04-13 23:18:16
JMS in collaborative scenarios
I was wondering how JMS would be used in a collaborative scenario, between me and my B2B partner.

The reason why I am asking this asking is that, does it require my partner also to have a JMS queue, if not not will this work?


2003-08-05 05:17:51
Added value WSIF with SOAP over JMS
We are planning to use either SOAP over JMS or SOAP over HTTP. Is there any added value in using WSIF in this case?
2006-01-08 10:40:19
sorry but I could not agree with your opinion that "this is a great improvement in reliability for mission critical applications" using JMS instead of HTTP. Because the specification of JMS didnt define the underlying transport, therefore JMS could use unreliable transport such UDP. In this case JMS isnt reliable at all. If you really need reliable transport you'll need to add something else such as WS-Reliability etc.