Many WebLogic Server deployments use WebLogic clustering to achieve scalability and reliability. When designing JMS applications, it is important to understand JMS semantics within a WebLogic cluster. Please note that the WebLogic Server's JMS implementation continues to improve its clustering offerings.
This section discusses the WebLogic 6 JMS implementation. It is recommended that users consult their WebLogic Server manuals for a discussion of the clustering offerings of their WebLogic Server.
WebLogic 6 introduces the concept of a JMS Server. A JMS Server includes administered JMS objects such as connection factories, connections, and destinations. Each WebLogic Server may include multiple JMS Servers, but each JMS Server is deployed on a single WebLogic Server. Each JMS Server uses an associated backing store. Deploying multiple JMS Servers within a single WebLogic Server allows multiple applications to each access a separate JMS instance (see Figure 710).
Figure 710 Multiple JMS Servers within a WebLogic Server Instance
JMS destinations are assigned to a single JMS Server. Because JMS Servers exist on a single WLS instance, each JMS destination exists on a single WLS instance. The server achieves scalability by distributing destinations to different WebLogic Server instances in the cluster. Because the destinations reside on different WebLogic Server instances, the JMS Server work is effectively load-balanced throughout the cluster.
Although destinations exist on a single WebLogic Server instance, the message producers and consumers for a given destination can exist anywhere in the cluster or even in client applications.
When a WebLogic Server instance fails, all JMS destinations within the failed server become unavailable. All temporary destinations and nonpersistent messages are lost during a server failure. Note that only the failed server will be affected~destinations on other servers in the cluster continue to operate. When the failed WebLogic Server is restarted, the associated JMS destinations will again become available. All persistent messages and permanent destinations are again available.
If a JMS client is connected to a failed JMS Server, its connection exception listener receives a JMSException. Any attempt to send or receive messages will also receive a JMSException. The client application must reconnect to an available JMS Server to restart JMS operations.