Top Description Fields Constructors Methods
org.eclipse.persistence.internal.sessions.coordination.broadcast

public abstract Class BroadcastRemoteConnection

extends RemoteConnection
Class Inheritance
Known Direct Subclasses
org.eclipse.persistence.internal.sessions.coordination.jms.JMSTopicRemoteConnection
Imports
org.eclipse.persistence.internal.helper.Helper, org.eclipse.persistence.internal.sessions.coordination.RemoteConnection, org.eclipse.persistence.sessions.coordination.broadcast.BroadcastTransportManager, org.eclipse.persistence.sessions.coordination.Command, .RemoteCommandManager, org.eclipse.persistence.exceptions.CommunicationException, .RemoteCommandManagerException

Purpose: Base class extending RemoteConnection for broadcasting RCM protocols: JMS and Oc4jJGroups.

Description: Defines lifecycle states and most of the methods, as well as exception processing and info logging.

Author
Andrei Ilitchev
Since
OracleAS TopLink 11g (11.1.1)

Field Summary

Modifier and TypeField and Description
protected String
protected Object[]
protected Object[]
protected RemoteCommandManager
protected String
public static final String
public static final String
public static final String
protected String
Inherited from org.eclipse.persistence.internal.sessions.coordination.RemoteConnection:
serviceId

Constructor Summary

AccessConstructor and Description
protected

Method Summary

Modifier and TypeMethod and Description
protected boolean
areAllResourcesFreedOnClose()

INTERNAL: Indicates whether all the resources used by connection are freed after close method returns.

public void
close()

Overrides org.eclipse.persistence.internal.sessions.coordination.RemoteConnection.close.

INTERNAL: This method is called when connection in no longer used and it's resources should be freed.
protected abstract void
closeInternal()

INTERNAL: This method is called by close method.

protected void
public Object
public Object
executeCommand(byte[] command)

Implements abstract org.eclipse.persistence.internal.sessions.coordination.RemoteConnection.executeCommand.

INTERNAL: Publish the remote command.
protected abstract Object
executeCommandInternal(Object command)

INTERNAL: Publish the remote command.

protected void
failDeserializeMessage(String messageId, Exception exception)

INTERNAL: Call this message in case there is failure to extract the object (to be passed to processReceivedObject) from the message.

protected Object[]
getInfo()

INTERNAL:

protected Object[]
getInfoExt()

INTERNAL:

public String
getState()

INTERNAL: State of the connection.

public String
getTopicName()

INTERNAL:

public boolean
isActive()

INTERNAL: Connection is open for business.

public boolean
isClosed()

INTERNAL: Connection is closed - all resources were freed.

public boolean
isClosing()

INTERNAL: close method has been called.

protected void
logDebugAfterPublish(Object[] debugInfo, String messageId)

INTERNAL: Called from executeCommandInternal to log debugInfo right after sending the message.

protected Object[]
logDebugBeforePublish(String messageId)

INTERNAL: Called from executeCommandInternal to log debugInfo right before sending the message.

protected void
logDebugOnReceiveMessage(String messageId)

INTERNAL: Called when a message is received to log debugInfo: { toString(), messageId }.

protected void
processReceivedObject(Object object, String messageId)

INTERNAL: Process the object extracted from the received message.

protected boolean

Returns:

boolean
shouldCheckServiceId
()

INTERNAL: Return whether a BroadcastConnection should check a ServiceId against its own ServiceId to avoid the processing of Commands with the same ServiceId.

public String
Inherited from org.eclipse.persistence.internal.sessions.coordination.RemoteConnection:
getServiceIdsetServiceId

Field Detail

displayStringback to summary
protected String displayString
infoback to summary
protected Object[] info
infoExtback to summary
protected Object[] infoExt
rcmback to summary
protected RemoteCommandManager rcm
stateback to summary
protected String state
STATE_ACTIVEback to summary
public static final String STATE_ACTIVE
STATE_CLOSEDback to summary
public static final String STATE_CLOSED
STATE_CLOSINGback to summary
public static final String STATE_CLOSING
topicNameback to summary
protected String topicName

Constructor Detail

BroadcastRemoteConnectionback to summary
protected BroadcastRemoteConnection(RemoteCommandManager rcm)

Method Detail

areAllResourcesFreedOnCloseback to summary
protected boolean areAllResourcesFreedOnClose()

INTERNAL: Indicates whether all the resources used by connection are freed after close method returns. Usually that's the case. However in case of local (listening) JMSTopicRemoteConnection close merely indicates to the listening thread that it should free TopicConnection and exit. Note that it may take a while: the listening thread waits until subscriber.receive method either returns a message or throws an exception.

closeback to summary
public void close()

Overrides org.eclipse.persistence.internal.sessions.coordination.RemoteConnection.close.

INTERNAL: This method is called when connection in no longer used and it's resources should be freed. As soon as this method is called the state is CLOSING. Usually the state is CLOSED just before the method returns, but there are some special cases (see comment to areAllResourcesFreedOnClose method) when the state is still CLOSING after the method returns.

Annotations
@Override
closeInternalback to summary
protected abstract void closeInternal() throws Exception

INTERNAL: This method is called by close method. This method usually (but not always see comment to areAllResourcesFreedOnClose method) frees all the resources.

createDisplayStringback to summary
protected void createDisplayString()

INTERNAL:

executeCommandback to summary
public Object executeCommand(Command command) throws CommunicationException

Implements abstract org.eclipse.persistence.internal.sessions.coordination.RemoteConnection.executeCommand.

INTERNAL: Publish the remote command. The result of execution is returned. This method is used only by external (publishing) connection.

Annotations
@Override
executeCommandback to summary
public Object executeCommand(byte[] command) throws CommunicationException

Implements abstract org.eclipse.persistence.internal.sessions.coordination.RemoteConnection.executeCommand.

INTERNAL: Publish the remote command. The result of execution is returned. This method is used only by external (publishing) connection.

Annotations
@Override
executeCommandInternalback to summary
protected abstract Object executeCommandInternal(Object command) throws Exception

INTERNAL: Publish the remote command. The result of execution is returned. This method is used only by external (publishing) connection.

failDeserializeMessageback to summary
protected void failDeserializeMessage(String messageId, Exception exception)

INTERNAL: Call this message in case there is failure to extract the object (to be passed to processReceivedObject) from the message. Pass to this method debugInfo created by logDebugOnReceiveMessage method. This method is used by local (listening) connection only.

getInfoback to summary
protected Object[] getInfo()

INTERNAL:

getInfoExtback to summary
protected Object[] getInfoExt()

INTERNAL:

getStateback to summary
public String getState()

INTERNAL: State of the connection.

getTopicNameback to summary
public String getTopicName()

INTERNAL:

isActiveback to summary
public boolean isActive()

INTERNAL: Connection is open for business.

isClosedback to summary
public boolean isClosed()

INTERNAL: Connection is closed - all resources were freed.

isClosingback to summary
public boolean isClosing()

INTERNAL: close method has been called.

logDebugAfterPublishback to summary
protected void logDebugAfterPublish(Object[] debugInfo, String messageId)

INTERNAL: Called from executeCommandInternal to log debugInfo right after sending the message. Only call this method in case logDebugBeforePublish returned non-null this is indication that debug logging is enabled. Pass to this method debugInfo returned by logDebugBeforePublish. Need to pass messageId only in case it has changed since logDebugBeforePublish: some broadcasting protocols (JMS) don't generate messageId until the message is published.

logDebugBeforePublishback to summary
protected Object[] logDebugBeforePublish(String messageId)

INTERNAL: Called from executeCommandInternal to log debugInfo right before sending the message. Returns array {toString(), messageId }. In case messageId is null returns getInfoExt() avoiding creation of a new array.

logDebugOnReceiveMessageback to summary
protected void logDebugOnReceiveMessage(String messageId)

INTERNAL: Called when a message is received to log debugInfo: { toString(), messageId }. This method is used by local (listening) connection only.

processReceivedObjectback to summary
protected void processReceivedObject(Object object, String messageId)

INTERNAL: Process the object extracted from the received message. Pass to this method messageInfo created by logDebugOnReceiveMessage method. This method is used by local (listening) connection only.

shouldCheckServiceIdback to summary
protected boolean shouldCheckServiceId()

INTERNAL: Return whether a BroadcastConnection should check a ServiceId against its own ServiceId to avoid the processing of Commands with the same ServiceId.

Returns:boolean

boolean

toStringback to summary
public String toString()

Overrides org.eclipse.persistence.internal.sessions.coordination.RemoteConnection.toString.

INTERNAL:

Returns:String

Doc from java.lang.Object.toString.

a string representation of the object.

Annotations
@Override