6 Sending Outbound JMS Messages

The following topics describe how to send JMS messages using the JMS resource adapter:

JMS Resource Adapter Outbound Communication Basics

The JMS resource adapter is a thin wrapper of the WebLogic JMS client. Users can choose to configure their connection client-id to be either RESTRICTED or UNRESTRICTED and their subscriptions to be either Sharable or Exclusive.

Defining Outbound Connections

The JMS resource adapter provides a number of predefined JMS connection factories. Each JMS connection factory interface has its own <connection-definition> element. Each <connection-definition> defines the classes and interfaces as required by the Java Connector Architecture specification and additional configuration properties.

JMS Resource Adapter Connection Factories

The JMS resource adapter supports the following connection factories:

  • WebLogic JMS non-XA ConnectionFactory

  • WebLogic JMS non-XA QueueConnectionFactory

  • WebLogic JMS non-XA TopicConnectionFactory

  • WebLogic JMS XA ConnectionFactory

  • WebLogic JMS XA QueueConnectionFactory

  • WebLogic JMS XA TopicConnectionFactory

See the <outbound-resourceadapter> element of the ra.xml file in Example JMS Resource Adapter ra.xml File.

Configuring JMS Resource Adapter Connection Factory Properties

The JMS resource adapter supports additional configuration properties that can be set in the ra.xml file or in the Java EE container of the foreign application server where the JMS resource adapter is deployed, as explained in JMS Resource Adapter Outbound Configuration Properties.

The following is an example WebLogic XA connection factory with additional configuration properties:

. . . 
<connection-definition>
          <managedconnectionfactory-class>
              weblogic.jms.ra.WLManagedXAConnectionFactory
          </managedconnectionfactory-class>
          <config-property>
            <config-property-name>LoggerName</config-property-name>
            <config-property-type>java.lang.String</config-property-type>
            <config-property-value>weblogic.jms.ra</config-property-value>
          </config-property>
          <config-property>
            <config-property-name>LogLevel</config-property-name>
            <config-property-type>java.lang.String</config-property-type>
            <config-property-value>FINEST</config-property-value>
          </config-property>
          <config-property>
            <config-property-name>group</config-property-name>
            <config-property-type>java.lang.String</config-property-type>
            <config-property-value></config-property-value>
          </config-property>
          <config-property>
            <config-property-name>rpResourceLocation</config-property-name>
            <config-property-type>java.lang.String</config-property-type>
            <config-property-value></config-property-value>
          </config-property>
          <config-property>
            <config-property-name>autoCloseSession</config-property-name>
            <config-property-type>java.lang.Boolean</config-property-type>
            <config-property-value>false</config-property-value>
          </config-property>
          <connectionfactory-interface>
              weblogic.jms.ra.WLXAConnectionFactoryInterface
          </connectionfactory-interface>
          <connectionfactory-impl-class>
              weblogic.jms.ra.WLXAConnectionFactory
          </connectionfactory-impl-class>
          <connection-interface>
              weblogic.jms.ra.WLXAConnectionInterface
          </connection-interface>
          <connection-impl-class>
              weblogic.jms.ra.WLXAConnection
          </connection-impl-class>
        </connection-definition>
. . .

JMS Resource Adapter Outbound Connection Limitations

Note the following connection management limitations:

  • The WebLogic automatic JMS client failover feature enables a JMS client to automatically reconnect to another live server instance in a cluster if a server or network failure occurs. This feature interferes with a JMS resource adapter's ability to associate the best Interposed Transaction Managers (ITMs) for managed connections. The JMS resource adapter automatically disables this feature and throws an exception if application code tries to enable automatic reconnect programmatically.

  • The UP and DOWN events are not currently supported in WebLogic Server. You also cannot create a connection to a specific WebLogic Server instance. This may result in repeated use of a bad connection because JMS resource adapter connection purging may not immediately identify bad connections before they are resused.

  • Because UP events are not currently supported in WebLogic Server, the JMS resource adapter does not support connection rebalancing.

  • The JMS resource adapter outbound implementation is not aware of the UP and DOWN events of Managed Server instances in a cluster with which an outbound application is communicating. Because of this limitation, note the following:

    • You may see the continued use of a bad connection because JMS resource adapter connection purging may not immediately identify a bad connection before it is reused.

    • The JMS resource adapter does not automatically rebalance connections.

Understanding How Outbound Messages Are Load Balanced

A WebLogic Server cluster consists of multiple Managed Server instances running simultaneously and working together to provide increased scalability and reliability. A JMS distributed destination usually has a set of members distributed across multiple Managed Server instances, with each member hosted by a separate JMS server instance. For more information, see Understanding WebLogic Server Clustering in Administering Clusters for Oracle WebLogic Server.

The following topics provide information about how the JMS resource adapter load balances outbound WebLogic JMS communication:

RMI Load Balancing Using the Connection Factory

The JMS resource adapter supports RMI object load balancing using WebLogic JMS connection factories to create connections and sessions that point to different WebLogic Server instances.

For more information, see Load Balancing in a Cluster in Administering Clusters for Oracle WebLogic Server.

Load Balancing Messages to Distributed Destinations

Load balancing to WebLogic distributed destinations (DDs) is automatically supported without additional configuration. DDs appear to the JMS resource adapter as a single, logical destination. Both a distributed destination and its members are advertised in WebLogic JNDI. When messages are load balanced to a member of a distributed destination on a WebLogic Server instance that is different from the instance that the JMS resource adapter's managed connection points to, the Interposed Transaction Manager (ITM) of the managed connection is able to enlist the messages sent to a different WebLogic Server instance, transparently relaying XA calls to the corresponding transaction coordinator on that instance, if necessary.

Note:

Individual distributed topic members must be referenced when creating, using, and unsubscribing a durable subscription.

Configuring Transaction Support for Outbound Communication

The JMS resource adapter provides outbound XA capability for applications using WebLogic JMS according to the Java Connector Architecture standard. For more information, see Transaction Support for Outbound Communication.

Configuring Authentication for Outbound Communication

Configure the authentication-mechanism element in the ra.xml file, as explained in Java Connector Architecture Security.