SmartFrog 3.10.000

org.smartfrog.sfcore.processcompound
Class DefaultRootLocatorImpl

java.lang.Object
  extended by org.smartfrog.sfcore.processcompound.DefaultRootLocatorImpl
All Implemented Interfaces:
MessageKeys, RootLocator

public class DefaultRootLocatorImpl
extends java.lang.Object
implements RootLocator, MessageKeys

Defines a default root locator for SmartFrog Processes. The root locator knows how to set a process compound to be the root of a host, as well as the method on how to get the root process compound on a given host and port. This implementation uses the rmi registry to set the root process compound in. Root Locators should not allow multiple process compounds to set themselves as root.


Field Summary
protected static java.lang.String defaultName
          Name under which the root process compound will name itself.
protected static java.rmi.registry.Registry registry
          RMI Registry.
protected static int registryPort
          Port for registry.
 
Fields inherited from interface org.smartfrog.sfcore.common.MessageKeys
CANNOT_LINK_TO_PREDICATE, COMPONENT_TERMINATED, COPY_FAILED, COPY_SERIALIZE_FAILED, ERROR_NO_SECURITY_BUT_REQUIRED, ILLEGAL_BOOLEAN_PARAMETER, ILLEGAL_NUMERIC_PARAMETER, ILLEGAL_STRING_PARAMETER, ILLEGAL_VECTOR_PARAMETER, LIVENESS_SEND_FAILURE, LIVENESS_SEND_FAILURE_IN, MISSING_PARAMETER, MSG_CLASS_NOT_FOUND, MSG_CONNECT_ERR, MSG_CONT_OTHER_DEPLOY, MSG_DEPLOY_COMP_TERMINATED, MSG_DEPLOY_SUCCESS, MSG_DEPLOYWITH_PHASE_FAILED, MSG_DETACH_SUCCESS, MSG_DETACH_TERMINATE_SUCCESS, MSG_ERR_DEPLOY_FROM_URL, MSG_ERR_PARSE, MSG_ERR_RESOLVE_PHASE, MSG_ERR_SF_RUNNING, MSG_ERR_TERM, MSG_FAILED_INET_ADDRESS_LOOKUP, MSG_FAILED_TO_CONTACT_PARENT, MSG_FILE_NOT_FOUND, MSG_HOOK_ACTION_FAILED, MSG_ILLEGAL_ACCESS, MSG_ILLEGAL_CLASS_TYPE, MSG_ILLEGAL_CLASS_TYPE_EXPECTING_GOT, MSG_ILLEGAL_REFERENCE, MSG_INPUTSTREAM_NULL, MSG_INSTANTIATION_ERROR, MSG_INVALID_OBJECT_TYPE, MSG_INVOCATION_TARGET, MSG_LANG_NOT_FOUND, MSG_LIVENESS_START_FAILED, MSG_LOADING_URL, MSG_METHOD_NOT_FOUND, MSG_NON_REP_ATTRIB, MSG_NOT_COMPONENT_REFERENCE, MSG_NOT_FOUND_ATTRIBUTE, MSG_NOT_FOUND_REFERENCE, MSG_NOT_VALUE_REFERENCE, MSG_NULL_DEF_METHOD, MSG_NULL_URL, MSG_OBJECT_REGISTRATION_FAILED, MSG_PARENT_LOCATION_FAILED, MSG_PING_SUCCESS, MSG_RANDM_ERR, MSG_REMOTE_CONNECT_ERR, MSG_REPEATED_ATTRIBUTE, MSG_SF_DEAD, MSG_SF_READY, MSG_SF_TERMINATED, MSG_STACKTRACE_FOLLOWS, MSG_START_COMP_TERMINATED, MSG_TERMINATE_SUCCESS, MSG_UNHANDLED_EXCEPTION, MSG_UNKNOWN_HOST, MSG_UNRESOLVED_REFERENCE, MSG_UNRESOLVED_REFERENCE_IN, MSG_UPDATE_SUCCESS, MSG_URL_NOT_FOUND, MSG_URL_TO_PARSE_NOT_FOUND, MSG_WARNING_LIVENESS_ENABLED, MSG_WARNING_STACKTRACE_DISABLED, MSG_WARNING_STACKTRACE_ENABLED, ROOT_MUST_BE_COMPONENT, WARN_NO_SECURITY
 
Constructor Summary
DefaultRootLocatorImpl()
          Constructs the DefaultRootLocatorImpl object.
 
Method Summary
protected static int getRegistryPort(ProcessCompound c)
          Gets the port of RMI registry on which input process compound is running or if ProcessCompound is null then the 'sfRootLocatorPort' is read from processcompound.sf description
 ProcessCompound getRootProcessCompound(java.net.InetAddress hostAddress)
          Gets the root process compound for a given host.
 ProcessCompound getRootProcessCompound(java.net.InetAddress hostAddress, int portNum)
          Gets the root process compound for a given host on a specified port.
 void setRootProcessCompound(ProcessCompound c)
          Tries to make the requesting process compound the root of the entire host.
 void unbindRootProcessCompound()
          Unbinds root process compound from local registry.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

defaultName

protected static java.lang.String defaultName
Name under which the root process compound will name itself.


registryPort

protected static int registryPort
Port for registry.


registry

protected static java.rmi.registry.Registry registry
RMI Registry.

Constructor Detail

DefaultRootLocatorImpl

public DefaultRootLocatorImpl()
Constructs the DefaultRootLocatorImpl object.

Method Detail

getRegistryPort

protected static int getRegistryPort(ProcessCompound c)
                              throws SmartFrogException,
                                     java.rmi.RemoteException
Gets the port of RMI registry on which input process compound is running or if ProcessCompound is null then the 'sfRootLocatorPort' is read from processcompound.sf description

Parameters:
c - Instance of process compound
Returns:
port number
Throws:
SmartFrogException - fails to get the registry port
java.rmi.RemoteException - In case of network/rmi error

setRootProcessCompound

public void setRootProcessCompound(ProcessCompound c)
                            throws SmartFrogException,
                                   java.rmi.RemoteException
Tries to make the requesting process compound the root of the entire host. This might fail since another process compound has already done this.

Specified by:
setRootProcessCompound in interface RootLocator
Parameters:
c - compound which wants to become root for machine
Throws:
SmartFrogException - could not create locator or bind compound
java.rmi.RemoteException - In case of network/rmi error
See Also:
getRootProcessCompound(java.net.InetAddress)

unbindRootProcessCompound

public void unbindRootProcessCompound()
                               throws SmartFrogException,
                                      java.rmi.RemoteException
Unbinds root process compound from local registry.

Specified by:
unbindRootProcessCompound in interface RootLocator
Throws:
java.rmi.RemoteException - if there is any network/rmi error
SmartFrogRuntimeException - if failed to unbind
SmartFrogException - if failed to unbind

getRootProcessCompound

public ProcessCompound getRootProcessCompound(java.net.InetAddress hostAddress)
                                       throws java.lang.Exception
Gets the root process compound for a given host. If the passed host is null the root process compound for the local host is looked up. Checks if the local process compound is equal to the requested one, and returns the local object instead of the stub to avoid all calls going through RMI

Specified by:
getRootProcessCompound in interface RootLocator
Parameters:
hostAddress - host to look up root process compound
Returns:
the root process compound on given host
Throws:
java.lang.Exception - if error locating root process compound on host
See Also:
setRootProcessCompound(org.smartfrog.sfcore.processcompound.ProcessCompound)

getRootProcessCompound

public ProcessCompound getRootProcessCompound(java.net.InetAddress hostAddress,
                                              int portNum)
                                       throws java.lang.Exception
Gets the root process compound for a given host on a specified port. If the passed host is null the root process compound for the local host is looked up. If the passed port number is negative (ex.-1) the default port number (3800) is used. . Checks if the local process compound is equal to the requested one, and returns the local object instead of the stub to avoid all calls going through RMI

Specified by:
getRootProcessCompound in interface RootLocator
Parameters:
hostAddress - host to look up root process compound
portNum - port to locate registry for root process conmpound if not default
Returns:
the root process compound on given host
Throws:
java.lang.Exception - error locating root process compound on host
See Also:
setRootProcessCompound(org.smartfrog.sfcore.processcompound.ProcessCompound)

SmartFrog CORE 3.10.000

(C) Copyright 1998-2006 Hewlett-Packard Development Company, LP