EclipseLink 2.2.0, build 'v20110202-r8913' API Reference

org.eclipse.persistence.sessions.coordination.jms
Class JMSPublishingTransportManager

java.lang.Object
  extended by org.eclipse.persistence.sessions.coordination.TransportManager
      extended by org.eclipse.persistence.sessions.coordination.broadcast.BroadcastTransportManager
          extended by org.eclipse.persistence.sessions.coordination.jms.JMSPublishingTransportManager
Direct Known Subclasses:
JMSTopicTransportManager

public class JMSPublishingTransportManager
extends BroadcastTransportManager

Purpose: Provide a transport implementation for the Remote Command Module (RCM) that publishes to a JMS topic.

Description: This class manages two connections: an external connection for publishing to JMS, and a local connection which can be used to process JMS messages received from an application JMS listener.

Author:
Chris Delahunt
Since:
EclipseLink 2.1

Field Summary
protected  java.lang.String connectionFactoryName
           
static java.lang.String DEFAULT_CONNECTION_FACTORY
           
static java.lang.String DEFAULT_TOPIC
           
protected  boolean reuseJMSTopicPublisher
           
 
Fields inherited from class org.eclipse.persistence.sessions.coordination.broadcast.BroadcastTransportManager
topicName
 
Fields inherited from class org.eclipse.persistence.sessions.coordination.TransportManager
connectionsToExternalServices, DEFAULT_CONTEXT_FACTORY, DEFAULT_DEDICATED_CONNECTION_KEY, DEFAULT_DEDICATED_CONNECTION_VALUE, DEFAULT_IIOP_URL_PORT, DEFAULT_IIOP_URL_PROTOCOL, DEFAULT_NAMING_SERVICE, DEFAULT_REMOVE_CONNECTION_ON_ERROR_MODE, DEFAULT_URL_PORT, DEFAULT_URL_PROTOCOL, DEFAULT_USER_NAME, JNDI_NAMING_SERVICE, localConnection, localContextProperties, namingServiceType, rcm, REGISTRY_NAMING_SERVICE, remoteContextProperties, shouldRemoveConnectionOnError
 
Constructor Summary
JMSPublishingTransportManager(RemoteCommandManager rcm)
          PUBLIC: Creates a JMSPublishingOnlyTopicTransportManager
 
Method Summary
protected  org.eclipse.persistence.internal.sessions.coordination.jms.JMSTopicRemoteConnection createConnection(boolean isLocalConnectionBeingCreated)
          INTERNAL: This method creates JMSTopicRemoteConnection to be used by this TransportManager.
 void createConnections()
          INTERNAL: JMSTopicTransportManager doesn't use DiscoveryManager, therefore this method is called during RCM initialization to create all the necessary connections.
 void createExternalConnection()
          INTERNAL: JMSPublishingTransportManager has maximum one external connection.
 void createLocalConnection()
          INTERNAL: JMSPublishingTransportManager has only two connections: one local and one external.
 java.util.Hashtable getConnectionsToExternalServicesForCommandPropagation()
          INTERNAL: In case there's no external connection attempts to create one.
 boolean getReuseJMSTopicPublisher()
          PUBLIC: flag used to toggle between j2EE/JMS spec compliant behavior and legacy behavior.
protected  javax.jms.Topic getTopic(javax.naming.Context remoteHostContext)
          INTERNAL:
protected  javax.jms.TopicConnectionFactory getTopicConnectionFactory(javax.naming.Context remoteHostContext)
          INTERNAL:
 java.lang.String getTopicConnectionFactoryName()
          PUBLIC: Return the JMS Topic Connection Factory Name for the JMS Topic connections.
 java.lang.String getTopicHostUrl()
          PUBLIC: Return the URL of the machine on the network that hosts the JMS Topic.
 void initialize()
          INTERNAL: Initialize default properties.
 void removeLocalConnection()
          INTERNAL: No-op, as the local connection does not need to be removed from JMSPublishingTransportManager.
 void setNamingServiceType(int serviceType)
          ADVANCED: This function is not supported for naming service other than JNDI or TransportManager.JNDI_NAMING_SERVICE.
 void setShouldReuseJMSTopicPublisher(boolean reuseJMSTopicPublisher)
          PUBLIC: flag used to toggle between j2EE/JMS spec compliant behavior and legacy behavior.
 void setTopicConnectionFactoryName(java.lang.String newTopicConnectionFactoryName)
          PUBLIC: Configure the JMS Topic Connection Factory Name for the JMS Topic connections.
 void setTopicHostUrl(java.lang.String jmsHostUrl)
          PUBLIC: Configure the URL of the machine on the network that hosts the JMS Topic.
 
Methods inherited from class org.eclipse.persistence.sessions.coordination.broadcast.BroadcastTransportManager
addConnectionToExternalService, connectBackToRemote, createConnection, createDiscoveryManager, getTopicName, setTopicName
 
Methods inherited from class org.eclipse.persistence.sessions.coordination.TransportManager
decrypt, discardConnections, encrypt, getConnectionsToExternalServices, getConnectionToLocalHost, getContext, getInitialContextFactoryName, getLocalContextProperties, getNamingServiceType, getPassword, getRemoteCommandManager, getRemoteContextProperties, getRemoteHostContext, getUserName, removeAllConnectionsToExternalServices, removeConnectionToExternalService, setEncryptedPassword, setEncryptionClassName, setInitialContextFactoryName, setLocalContextProperties, setPassword, setRemoteContextProperties, setShouldRemoveConnectionOnError, setUserName, shouldRemoveConnectionOnError
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

connectionFactoryName

protected java.lang.String connectionFactoryName

reuseJMSTopicPublisher

protected boolean reuseJMSTopicPublisher

DEFAULT_TOPIC

public static final java.lang.String DEFAULT_TOPIC
See Also:
Constant Field Values

DEFAULT_CONNECTION_FACTORY

public static final java.lang.String DEFAULT_CONNECTION_FACTORY
See Also:
Constant Field Values
Constructor Detail

JMSPublishingTransportManager

public JMSPublishingTransportManager(RemoteCommandManager rcm)
PUBLIC: Creates a JMSPublishingOnlyTopicTransportManager

Method Detail

createConnection

protected org.eclipse.persistence.internal.sessions.coordination.jms.JMSTopicRemoteConnection createConnection(boolean isLocalConnectionBeingCreated)
                                                                                                        throws RemoteCommandManagerException
INTERNAL: This method creates JMSTopicRemoteConnection to be used by this TransportManager. Don't confuse this method with no-op createConnection(ServiceId serviceId).

Throws:
RemoteCommandManagerException

createConnections

public void createConnections()
INTERNAL: JMSTopicTransportManager doesn't use DiscoveryManager, therefore this method is called during RCM initialization to create all the necessary connections.

Overrides:
createConnections in class BroadcastTransportManager

createExternalConnection

public void createExternalConnection()
INTERNAL: JMSPublishingTransportManager has maximum one external connection. Verify there are no external connections, create a new external connection, add it to external connections' map.


createLocalConnection

public void createLocalConnection()
INTERNAL: JMSPublishingTransportManager has only two connections: one local and one external. In case the local connection doesn't exist, this method creates it and holds it to be used when processing incoming JMS messages. The stored local connection on JMSPublishingTransportManager does not connect to topicConnection, and instead must be used from an MDB when a message is received

Specified by:
createLocalConnection in class TransportManager

getConnectionsToExternalServicesForCommandPropagation

public java.util.Hashtable getConnectionsToExternalServicesForCommandPropagation()
INTERNAL: In case there's no external connection attempts to create one. Returns clone of the original map.

Overrides:
getConnectionsToExternalServicesForCommandPropagation in class TransportManager

getReuseJMSTopicPublisher

public boolean getReuseJMSTopicPublisher()
PUBLIC: flag used to toggle between j2EE/JMS spec compliant behavior and legacy behavior. Default value false causes external JMSTopicRemoteConnection to cache the TopicConnectionFactory and obtain TopicConnections, TopicSession and TopicPublishers every time executeCommand is called, and then closing them immediately. This is JMS and J2EE compliant, as the TopicConnection is never reused in different threads. True causes TopicConnection, TopicSession and TopicPublisher to be cached within the JMSTopicRemoteConnection and used for every executeCommand call. These objects can potentially used concurrently, which the JMS spec does not force providers to support.


getTopic

protected javax.jms.Topic getTopic(javax.naming.Context remoteHostContext)
INTERNAL:


getTopicConnectionFactory

protected javax.jms.TopicConnectionFactory getTopicConnectionFactory(javax.naming.Context remoteHostContext)
INTERNAL:


getTopicConnectionFactoryName

public java.lang.String getTopicConnectionFactoryName()
PUBLIC: Return the JMS Topic Connection Factory Name for the JMS Topic connections.


getTopicHostUrl

public java.lang.String getTopicHostUrl()
PUBLIC: Return the URL of the machine on the network that hosts the JMS Topic. This is a required property and must be configured.


initialize

public void initialize()
INTERNAL: Initialize default properties.

Overrides:
initialize in class TransportManager

removeLocalConnection

public void removeLocalConnection()
INTERNAL: No-op, as the local connection does not need to be removed from JMSPublishingTransportManager. An application must close the connection directly if it is using the local connection as a listener.

Specified by:
removeLocalConnection in class TransportManager

setNamingServiceType

public void setNamingServiceType(int serviceType)
ADVANCED: This function is not supported for naming service other than JNDI or TransportManager.JNDI_NAMING_SERVICE.

Overrides:
setNamingServiceType in class TransportManager

setShouldReuseJMSTopicPublisher

public void setShouldReuseJMSTopicPublisher(boolean reuseJMSTopicPublisher)
PUBLIC: flag used to toggle between j2EE/JMS spec compliant behavior and legacy behavior. Default value false causes external JMSTopicRemoteConnection to cache the TopicConnectionFactory and obtain TopicConnections, TopicSession and TopicPublishers every time executeCommand is called, and then closing them immediately. This is JMS and J2EE compliant, as the TopicConnection is never reused in different threads. True causes TopicConnection, TopicSession and TopicPublisher to be cached within the JMSTopicRemoteConnection and used for every executeCommand call. These objects can potentially used concurrently, which the JMS spec does not force providers to support.

Parameters:
reuseJMSTopicPublisher -

setTopicConnectionFactoryName

public void setTopicConnectionFactoryName(java.lang.String newTopicConnectionFactoryName)
PUBLIC: Configure the JMS Topic Connection Factory Name for the JMS Topic connections.


setTopicHostUrl

public void setTopicHostUrl(java.lang.String jmsHostUrl)
PUBLIC: Configure the URL of the machine on the network that hosts the JMS Topic. This is a required property and must be configured.


EclipseLink 2.2.0, build 'v20110202-r8913' API Reference