Purpose: Provide a CommandManager implementation for cache coordination.
Description: A RemoteCommandManager (or RCM) instance is the primary component of an RCM service instance. It manages the other components of the service, and directs the overall service operation. Its ServiceId uniquely distinguishes it from other service instances in the cluster.
Each RCM has a logical channel to which it subscribes and publishes. This channel determines which other instances in the cluster the service instance sends and receives remote commands to/from. All RCM's on the same channel should have the same discovery manager settings (be communicating on the same multicast) so that the discovery managers may be able to discover one another. RCM's on different channels may operate on the same or on different multicast groups.
An RCM instance knows about other instances in the cluster through its DiscoveryManager. Its TransportManager is responsible for setting up the connections to other instances once they are discovered.
An RCM is instructed to "propagate", or execute on all remote service instances in the cluster that subscribe to the same channel, a remote command by its CommandProcessor. Likewise, when an RCM receives a remote command to be executed then it passes the command off to the CommandProcessor for the processing of the command to occur. CommandProcessors pass commands to the RCM as an Object (in a format that may be specific to the application) and the RCM uses its CommandConverter to convert it to a EclipseLink Command object before sending the Command off to the cluster. Similarly, when a EclipseLink Command object is received then the RCM invokes its CommandConverter to convert the object into the application format that will be passed to the CommandProcessor to process the command.
CommandManager, Command, CommandProcessor, CommandConverter, DiscoveryManager
| Modifier and Type | Field and Description |
|---|---|
| protected CommandConverter | commandConverter
Used for converting commands between EclipseLink Command and app command formats |
| protected CommandProcessor | commandProcessor
Invoked to process a command when it is received from the cluster |
| public static final boolean | |
| public static final String | |
| protected DiscoveryManager | discoveryManager
Manages the detection of new services as they join the cluster |
| protected boolean | isAsynchronous
Determines whether propagation should be synchronous or asynchronous |
| protected boolean | isEclipseLinkSession
Determines whether profiling command should be send |
| protected boolean | |
| protected Serializer | serializer
Set the Serializer to use for serialization of commands. |
| protected ServerPlatform | serverPlatform
Uniquely identifies ServerPlatform in the cluster |
| protected ServiceId | serviceId
Uniquely identifies this service in the cluster |
| protected TransportManager | transportManager
Manages the transport level connections between command managers |
| Access | Constructor and Description |
|---|---|
| public | |
| public |
| Modifier and Type | Method and Description |
|---|---|
| public String | getChannel()
Implements org. |
| public CommandConverter | getCommandConverter()
Implements org. |
| public CommandProcessor | getCommandProcessor()
Implements org. |
| public DiscoveryManager | getDiscoveryManager()
Implements org. |
| public Serializer | |
| public ServerPlatform | |
| public ServiceId | |
| public TransportManager | getTransportManager()
Implements org. |
| public String | getUrl()
Implements org. |
| public void | handleException(RuntimeException exception)
INTERNAL: Delegate to the command procesor to handle the exception. |
| public void | initialize()
Implements org. |
| public boolean | isCommandProcessorASession()
Implements org. |
| public boolean | isStopped()
PUBLIC: Indicates whether the RCM has been stopped: either initialize hasn't been called or shutdown has been called. |
| public void | |
| public void | |
| public void | |
| public void | |
| public void | |
| public void | logMessageWithoutLevelCheck(int logLevel, String message, Object[] args)
INTERNAL: Use this method in case the necessary logLevel has been confirmed by calling commandProcessor.shouldLogMessages method |
| public void | |
| public void | |
| public void | newServiceDiscovered(ServiceId service)
INTERNAL: A new service has been detected by the discovery manager. |
| public void | processCommandFromRemoteConnection(byte[] commandBytes)
INTERNAL: Deserialize the command and execute it. |
| public void | |
| public void | propagateCommand(Object
An object representing a EclipseLink command command)Implements org. |
| public void | replaceLocalHostIPAddress(String ipAddress)
ADVANCED: Allow user to replace the $HOST subString of the local host URL with the user user input at runtime. |
| public void | replaceTransportPortNumber(String portNumber)
ADVANCED: Allow user to replace the $PORT subString of the local host URL with the user user input at runtime. |
| public void | setChannel(String
The service channel subscribed to by this CommandManager channel)Implements org. |
| public void | setCommandConverter(CommandConverter
The converter to be used by this CommandManager newCommandConverter)Implements org. |
| public void | setCommandProcessor(CommandProcessor
The intended processor of remote commands newCommandProcessor)Implements org. |
| public void | setSerializer(Serializer serializer)
PUBLIC: Set the Serializer to use for serialization of commands. |
| public void | setServerPlatform(ServerPlatform theServerPlatform)
PUBLIC: The ServerPlatform must be set manually when the RemoteCommandManager'CommandProcessor is not EclipseLink Session. |
| public void | setShouldPropagateAsynchronously(boolean asyncMode)
Implements org. |
| public void | setTransportManager(TransportManager
An instance of the desired transport manager type newTransportManager)Implements org. |
| public void | setUrl(String
The URL String for this CommandManager url)Implements org. |
| public boolean | |
| public boolean | |
| public boolean | |
| public boolean | shouldPropagateAsynchronously()
Implements org. |
| public void | shutdown()
Implements org. |
| commandConverter | back to summary |
|---|---|
| protected CommandConverter commandConverter Used for converting commands between EclipseLink Command and app command formats | |
| commandProcessor | back to summary |
|---|---|
| protected CommandProcessor commandProcessor Invoked to process a command when it is received from the cluster | |
| DEFAULT_ASYNCHRONOUS_MODE | back to summary |
|---|---|
| public static final boolean DEFAULT_ASYNCHRONOUS_MODE | |
| DEFAULT_CHANNEL | back to summary |
|---|---|
| public static final String DEFAULT_CHANNEL | |
| discoveryManager | back to summary |
|---|---|
| protected DiscoveryManager discoveryManager Manages the detection of new services as they join the cluster | |
| isAsynchronous | back to summary |
|---|---|
| protected boolean isAsynchronous Determines whether propagation should be synchronous or asynchronous | |
| isEclipseLinkSession | back to summary |
|---|---|
| protected boolean isEclipseLinkSession Determines whether profiling command should be send | |
| isStopped | back to summary |
|---|---|
| protected boolean isStopped | |
| serializer | back to summary |
|---|---|
| protected Serializer serializer Set the Serializer to use for serialization of commands. | |
| serverPlatform | back to summary |
|---|---|
| protected ServerPlatform serverPlatform Uniquely identifies ServerPlatform in the cluster | |
| serviceId | back to summary |
|---|---|
| protected ServiceId serviceId Uniquely identifies this service in the cluster | |
| transportManager | back to summary |
|---|---|
| protected TransportManager transportManager Manages the transport level connections between command managers | |
| RemoteCommandManager | back to summary |
|---|---|
| public RemoteCommandManager(CommandProcessor commandProcessor) | |
| RemoteCommandManager | back to summary |
|---|---|
| public RemoteCommandManager(CommandProcessor commandProcessor, TransportManager transportManager) | |
| getChannel | back to summary |
|---|---|
| public String getChannel() Implements org. PUBLIC: Return the service channel for this command manager. All command managers with the same service channel will send and receive commands from each other. Commands sent on other service channels will not be exchanged with this command manager.
| |
| getCommandConverter | back to summary |
|---|---|
| public CommandConverter getCommandConverter() Implements org. PUBLIC: Return the converter instance used to convert between EclipseLink Command objects and an application command format.
| |
| getCommandProcessor | back to summary |
|---|---|
| public CommandProcessor getCommandProcessor() Implements org. Doc from org. PUBLIC: Return the command processor that processes commands received from the cluster.
| |
| getDiscoveryManager | back to summary |
|---|---|
| public DiscoveryManager getDiscoveryManager() Implements org. PUBLIC: Return the discovery manager that detects the arrival of new cluster members
| |
| getSerializer | back to summary |
|---|---|
| public Serializer getSerializer() PUBLIC: Return the Serializer to use for serialization of commands. | |
| getServerPlatform | back to summary |
|---|---|
| public ServerPlatform getServerPlatform() INTERNAL: Return the serverPlatform that identifies the application server | |
| getServiceId | back to summary |
|---|---|
| public ServiceId getServiceId() INTERNAL: Return the service info that identifies this service instance | |
| getTransportManager | back to summary |
|---|---|
| public TransportManager getTransportManager() Implements org. Doc from org. PUBLIC: Return the transport manager that manages sending and receiving of remote commands.
| |
| getUrl | back to summary |
|---|---|
| public String getUrl() Implements org. PUBLIC: Return the URL for this command manager.
| |
| handleException | back to summary |
|---|---|
| public void handleException(RuntimeException exception) INTERNAL: Delegate to the command procesor to handle the exception. | |
| initialize | back to summary |
|---|---|
| public void initialize() Implements org. PUBLIC: Initialize the remote command manager. This will also trigger the DiscoveryManager to start establishing the EclipseLink cluster.
| |
| isCommandProcessorASession | back to summary |
|---|---|
| public boolean isCommandProcessorASession() Implements org. INTERNAL: Return whether this command manager should process profile commands
| |
| isStopped | back to summary |
|---|---|
| public boolean isStopped() PUBLIC: Indicates whether the RCM has been stopped: either initialize hasn't been called or shutdown has been called. | |
| logDebug | back to summary |
|---|---|
| public void logDebug(String message, Object[] args) INTERNAL: Convenience logging methods. | |
| logDebugWithoutLevelCheck | back to summary |
|---|---|
| public void logDebugWithoutLevelCheck(String message, Object[] args) | |
| logError | back to summary |
|---|---|
| public void logError(String message, Object[] args) | |
| logInfo | back to summary |
|---|---|
| public void logInfo(String message, Object[] args) | |
| logMessage | back to summary |
|---|---|
| public void logMessage(int logLevel, String message, Object[] args) INTERNAL: | |
| logMessageWithoutLevelCheck | back to summary |
|---|---|
| public void logMessageWithoutLevelCheck(int logLevel, String message, Object[] args) INTERNAL: Use this method in case the necessary logLevel has been confirmed by calling commandProcessor.shouldLogMessages method | |
| logWarning | back to summary |
|---|---|
| public void logWarning(String message, Object[] args) | |
| logWarningWithoutLevelCheck | back to summary |
|---|---|
| public void logWarningWithoutLevelCheck(String message, Object[] args) | |
| newServiceDiscovered | back to summary |
|---|---|
| public void newServiceDiscovered(ServiceId service) INTERNAL: A new service has been detected by the discovery manager. Take the appropriate action to connect to the service. | |
| processCommandFromRemoteConnection | back to summary |
|---|---|
| public void processCommandFromRemoteConnection(byte[] commandBytes) INTERNAL: Deserialize the command and execute it. | |
| processCommandFromRemoteConnection | back to summary |
|---|---|
| public void processCommandFromRemoteConnection(Command command) INTERNAL: Delegate to command processor | |
| propagateCommand | back to summary |
|---|---|
| public void propagateCommand(Object command) Implements org. ADVANCED: Propagate a remote command to all remote RCM services participating in the EclipseLink cluster. | |
| replaceLocalHostIPAddress | back to summary |
|---|---|
| public void replaceLocalHostIPAddress(String ipAddress) ADVANCED: Allow user to replace the $HOST subString of the local host URL with the user user input at runtime. By default, EclipseLink will try to discovery the local host IP and may fail due to security or network restrictions. In this case, user can call this API to specify the IP address or host name during pre-login session event or before session login. Example: If input is 145.23.127.79, the local host URL of ormi://$HOST:2971:/app_name will become ormi://145.23.127.79:2971:/app_name | |
| replaceTransportPortNumber | back to summary |
|---|---|
| public void replaceTransportPortNumber(String portNumber) ADVANCED: Allow user to replace the $PORT subString of the local host URL with the user user input at runtime. In this case, user can call this API to specify the port number for a specific transport during pre-login session event or before session login. Example: If input is 7799, the local host URL of ormi://145.23.127.79:$PORT/app_name will become ormi://145.23.127.79:7799/app_name | |
| setChannel | back to summary |
|---|---|
| public void setChannel(String channel) Implements org. ADVANCED: Set the service channel for this command manager. All command managers with the same service channel will send and receive commands from each other. Commands sent on other service channels will not be exchanged with this command manager.
| |
| setCommandConverter | back to summary |
|---|---|
| public void setCommandConverter(CommandConverter newCommandConverter) Implements org. ADVANCED: Set the converter instance that will be invoked by this CommandProcessor to convert commands from their application command format into EclipseLink Command objects before being propagated to remote command manager services. The converter will also be invoked to convert EclipseLink Command objects into application format before being sent to the CommandProcessor for execution.
| |
| setCommandProcessor | back to summary |
|---|---|
| public void setCommandProcessor(CommandProcessor newCommandProcessor) Implements org. Doc from org. ADVANCED: Set the command processor that will be invoked to process commands. EclipseLink applications can implement this interface in order to receive remote commands from a EclipseLink cluster.
| |
| setSerializer | back to summary |
|---|---|
| public void setSerializer(Serializer serializer) PUBLIC: Set the Serializer to use for serialization of commands. | |
| setServerPlatform | back to summary |
|---|---|
| public void setServerPlatform(ServerPlatform theServerPlatform) PUBLIC: The ServerPlatform must be set manually when the RemoteCommandManager'CommandProcessor is not EclipseLink Session. When the CommandProcessor is a EclipseLink Session, the ServerPlatform is automatically gotten from the Session. | |
| setShouldPropagateAsynchronously | back to summary |
|---|---|
| public void setShouldPropagateAsynchronously(boolean asyncMode) Implements org. ADVANCED: Set whether this command manager should propagate commands synchronously or asynchronously. If set to synchronous propagation then propagateCommand() will not return to the caller until the command has been executed on all of the services in the cluster. In asynchronous mode the command manager will create a separate thread for each of the remote service executions, and then promptly return to the caller.
| |
| setTransportManager | back to summary |
|---|---|
| public void setTransportManager(TransportManager newTransportManager) Implements org. Doc from org. ADVANCED: Set a specific transport manager to manage sending and receiving of remote commands.
| |
| setUrl | back to summary |
|---|---|
| public void setUrl(String url) Implements org. ADVANCED: Set the URL for this command manager.
| |
| shouldLogDebugMessage | back to summary |
|---|---|
| public boolean shouldLogDebugMessage() | |
| shouldLogMessage | back to summary |
|---|---|
| public boolean shouldLogMessage(int logLevel) INTERNAL: | |
| shouldLogWarningMessage | back to summary |
|---|---|
| public boolean shouldLogWarningMessage() | |
| shouldPropagateAsynchronously | back to summary |
|---|---|
| public boolean shouldPropagateAsynchronously() Implements org. PUBLIC: Return whether this command manager should propagate commands synchronously or asynchronously. If set to synchronous propagation then propagateCommand() will not return to the caller until the command has been executed on all of the services in the cluster. In asynchronous mode the command manager will create a separate thread for each of the remote service executions, and then promptly return to the caller.
| |
| shutdown | back to summary |
|---|---|
| public void shutdown() Implements org. PUBLIC: Shut down the remote command manager. This will also trigger the DiscoveryManager to stop. Note Although this call initiates the shutdown process, no guarantees are made as to when it will actually complete.
| |