Support Contact Us
The Road to Enterprise-Class SOA

Using HTTP and JMS for Web Services
The Road to Enterprise-Class SOA Executive Summary
One early misconception in IT was that Web services were equal to a Service-oriented architecture (SOA). The reality is that SOA is more. Though SOAP is an increasingly common format for messages, an SOA often requires many underlying transports. The selection of these underlying transports is one of the most important decisions in the creation of an SOA. To support the requirements of business-critical applications, the transports employed must be flexible, reliable and scalable. They must also support different types of synchronous or asynchronous service communication. HTTP and Java Message Service (JMS) are two of the most widely used standards-based transports for SOAP messages.
This paper examines the benefits and trade-offs of HTTP and JMS, highlights where each transport is best suited and demonstrates how each can be used as part of an SOA.

Enterprise SOA Communication Requirements
Flexibility, reliability, scalability. These are three attributes that any transport method must provide in an enterprise SOA to take maximum advantage of all connected services. In an SOA, a transport needs to be able to convey messages in real time (synchronously) to provide responsiveness to users or systems. Yet often an enterprise also requires the flexibility to communicate asynchronously with services. One reason may be that the services aren’t always available. Another may be an unreliable or occasionally connected network, such as a wireless connection. In both cases, synchronous transmission will result in failure unless the services themselves are written to perform additional “retries” and error handling. Additionally, communication between processes in an SOA is not always point to-point, or one-to-one. Often, a service needs to send a message to several other processes or systems at the same time, a one-to-many association. While a service can also be written to communicate with multiple “consumers,” this adds complexity to the service itself and tightly couples the service to the end points. In many cases, services also require a transport to be reliable. Without reliable message delivery provided by the transport, additional verification must be built in at the application level. Finally, transports must scale. The transport itself should not impose limitations upon the ability to deliver messages as the number of messages, message senders and message receivers increases.