JMS allows clients to use an HTTP transport for sending or receiving messages. This is done by leveraging the ORB's tunnel, which consists of a standard servlet that tunnels IIOP through HTTP. Rather than sending a standard IIOP request, a client configured for tunneling will do an HTTP POST where the IIOP request is embedded into the HTTP request. On the server side, the tunnel servlet will unwrap the IIOP request from the HTTP POST request and forward it IIOP style to the appropriate server.
The graph below illustrates a producer and a consumer application using the tunnel. The producer and consumer use JMS, which in turn is built on top of the Novell exteNd Messaging Platform's ORB. Since clients are configured for tunneling, they will send HTTP POST requests for a server accessible from the Internet. The address of the HTTP POST must match the ORB HTTP tunnel servlet, which forwards requests IIOP style to a JMS server reachable from the servlet host.
The ORB does not support bi-directional IIOP, which means that messages can not be pushed from the JMS server to the consumer applications, which is the normal case. Instead, the consumers operate in pull mode, i.e. they take initiative and issue a pull request when messages are needed on the client. The JMS client applications automatically run in pull mode when the ORB tunnel property is specified on the command line. The six steps enumerated is the graph above are described below:
First, a producer application sends a message. Since the producer is configured for HTTP tunneling, the request goes as an HTTP POST to the ORB HTTP tunnel servlet.
The servlet container's HTTP listener picks up the HTTP POST request and forwards it to the appropriate servlet. In this case the HTTP tunnel.
The tunnel unwraps the IIOP request from the HTTP POST request and forwards it to a JMS server reachable from the host where the servlet is running. The servlet engine and the JMS server are not required to reside on the same host.
A consumer application configured for HTTP issues a pull request to receive new messages.
Again, the servlet container's HTTP listener picks up the HTTP POST request and forwards it to the tunnel.
The tunnel unwraps the IIOP request from the HTTP POST request and forwards it to the JMS server. The response with messages is tunneled back to the consumer through the same route.
Copyright © 2003, 2004 Novell, Inc. All rights reserved. Copyright © 2001, 2002, 2003 SilverStream Software, LLC. All rights reserved.