Package tigase.cluster

# Class ClusterController

java.lang.Object
tigase.server.BasicComponent
tigase.server.AbstractComponentRegistrator<ClusteredComponentIfc>
tigase.cluster.ClusterController

All Implemented Interfaces:
  `ClusterControllerIfc`, `ClusteredComponentIfc`, `Configurable`, `XMPPService`, `ConfigurationChangedAware`, `Initializable`, `ComponentRegistrator`, `ServerComponent`, `VHostListener`

@Bean(name="cluster-contr", parent=Kernel.class, active=true, exportable=true) @ConfigType({DefaultMode,SessionManagerMode,ConnectionManagersMode,ComponentMode}) @ClusterModeRequired(active=true) public class ClusterController extends AbstractComponentRegistrator<ClusteredComponentIfc> implements Configurable, ClusterControllerIfc
Describe class ClusterController here.
Created: Mon Jun 9 20:03:28 2008

Author:
  Artur Hefczyc

- ## Nested Class Summary

  ## Nested classes/interfaces inherited from class tigase.server.BasicComponent

  `BasicComponent.ServerInfoVHostItemExtension`

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final String`
  `MY_DOMAIN_NAME_PROP_KEY`
  `static final String`
  `MY_DOMAIN_NAME_PROP_VAL`

  ### Fields inherited from class tigase.server.AbstractComponentRegistrator

  `components`

  ### Fields inherited from class tigase.server.BasicComponent

  `admins, ALL_PROP_KEY, COMMAND_PROP_NODE, scriptCommands, scriptEngineManager, SCRIPTS_DIR_PROP_DEF, SCRIPTS_DIR_PROP_KEY, trusted, vHostManager`

  ### Fields inherited from interface tigase.cluster.api.ClusterControllerIfc

  `DELIVER_CLUSTER_PACKET_CMD`

  ### Fields inherited from interface tigase.conf.Configurable

  `ADMINS_PROP_KEY, AMP_CLASS_NAME, AMP_CLUST_CLASS_NAME, AUTH_DOMAIN_POOL_CLASS, AUTH_REPO_DOMAINS_PROP_KEY, AUTH_REPO_PARAMS_NODE, AUTH_REPO_POOL_CLASS, AUTH_REPO_URL_PROP_KEY, BOSH_CLUST_COMP_CLASS_NAME, BOSH_COMP_CLASS_NAME, C2S_CLUST_COMP_CLASS_NAME, C2S_COMP_CLASS_NAME, CL_COMP_CLASS_NAME, CLUSTER_CONECT, CLUSTER_CONTR_CLASS_NAME, CLUSTER_LISTEN, CLUSTER_MODE, CLUSTER_NODES, CLUSTER_NODES_PROP_KEY, COMP_PROT_CLASS_NAME, COMPONENT_ID_PROP_KEY, DEF_AMP_NAME, DEF_BOSH_NAME, DEF_C2S_NAME, DEF_CL_COMP_NAME, DEF_CLUST_CONTR_NAME, DEF_COMP_PROT_NAME, DEF_EVENTBUS_NAME, DEF_EXT_COMP_NAME, DEF_HOSTNAME_PROP_KEY, DEF_MONITOR_NAME, DEF_S2S_NAME, DEF_SM_NAME, DEF_STATS_NAME, DEF_VHOST_MAN_NAME, DEF_WS2S_NAME, DERBY_REPO_CLASS_PROP_VAL, DERBY_REPO_URL_PROP_VAL, DRUPAL_REPO_URL_PROP_VAL, DRUPALWP_REPO_CLASS_PROP_VAL, DUMMY_REPO_CLASS_PROP_VAL, EVENTBUS_CLASS_NAME, EXT_COMP_CLASS_NAME, GEN_ADMINS, GEN_AUTH_DB, GEN_AUTH_DB_URI, GEN_COMP_CLASS, GEN_COMP_NAME, GEN_CONF, GEN_CONFIG, GEN_CONFIG_ALL, GEN_CONFIG_COMP, GEN_CONFIG_CS, GEN_CONFIG_DEF, GEN_CONFIG_SM, GEN_DEBUG, GEN_DEBUG_PACKAGES, GEN_EXT_COMP, GEN_MAX_QUEUE_SIZE, GEN_SCRIPT_DIR, GEN_SM_PLUGINS, GEN_SREC_ADMINS, GEN_SREC_DB, GEN_SREC_DB_URI, GEN_TEST, GEN_TRUSTED, GEN_USER_DB, GEN_USER_DB_URI, GEN_USER_DB_URI_PROP_KEY, GEN_VIRT_HOSTS, HOSTNAMES_PROP_KEY, LIBRESOURCE_REPO_CLASS_PROP_VAL, LIBRESOURCE_REPO_URL_PROP_VAL, MONITOR_CLASS_NAME, MONITOR_CLUST_CLASS_NAME, MONITORING, MYSQL_REPO_CLASS_PROP_VAL, MYSQL_REPO_URL_PROP_VAL, PGSQL_REPO_CLASS_PROP_VAL, PGSQL_REPO_URL_PROP_VAL, ROUTER_COMP_CLASS_NAME, S2S_CLUST_COMP_CLASS_NAME, S2S_COMP_CLASS_NAME, SHARED_AUTH_REPO_PARAMS_PROP_KEY, SHARED_AUTH_REPO_PROP_KEY, SHARED_USER_REPO_PARAMS_PROP_KEY, SHARED_USER_REPO_PROP_KEY, SM_CLUST_COMP_CLASS_NAME, SM_COMP_CLASS_NAME, STANZA_WHITE_CHAR_ACK, STANZA_XMPP_ACK, STATS_CLASS_NAME, STRINGPREP_PROCESSOR, TIGASE_AUTH_REPO_CLASS_PROP_VAL, TIGASE_AUTH_REPO_URL_PROP_VAL, TIGASE_CUSTOM_AUTH_REPO_CLASS_PROP_VAL, TRUSTED_PROP_KEY, USER_DOMAIN_POOL_CLASS, USER_REPO_DOMAINS_PROP_KEY, USER_REPO_PARAMS_NODE, USER_REPO_POOL_CLASS, USER_REPO_POOL_SIZE, USER_REPO_POOL_SIZE_PROP_KEY, USER_REPO_URL_PROP_KEY, VHOST_MAN_CLASS_NAME, VHOST_MAN_CLUST_CLASS_NAME, WS2S_CLASS_NAME, WS2S_CLUST_CLASS_NAME, XML_REPO_CLASS_PROP_VAL, XML_REPO_URL_PROP_VAL, XMPP_STANZA_ACK`

  ### Fields inherited from interface tigase.disco.XMPPService

  `CMD_FEATURES, DEF_FEATURES, INFO_XMLNS, ITEMS_XMLNS`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `ClusterController()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `componentAdded(ClusteredComponentIfc component)`
  Method provides a callback mechanism signaling that a new component implementing special interface has been added to the internal `components` collection.
  `void`
  `componentRemoved(ClusteredComponentIfc component)`
  Method provides a callback mechanism signaling that a component implementing special interface has been removed from the internal `components` collection.
  `String`
  `getDiscoCategoryType()`
  Method returns component category type used for service discovery responses.
  `String`
  `getDiscoDescription()`
  Method returns description used for service discovery responses.
  `void`
  `handleClusterPacket(Element packet)`
  Method handles cluster packet received from cluster connection.
  `boolean`
  `isCorrectType(ServerComponent component)`
  Method checks whether the component provides as method parameter is correct type that is implements special interface or extends special class.
  `void`
  `nodeConnected(String node)`
  Method is called on cluster node connection event.
  `void`
  `nodeDisconnected(String node)`
  Method is called on cluster node disconnection event.
  `void`
  `processPacket(Packet packet, Queue<Packet> results)`
  `processPacket` is a blocking processing method implemented by all components.
  `void`
  `removeCommandListener(CommandListener listener)`
  `void`
  `sendToNodes(String command, Map<String,String> data, Queue<Element> packets, JID fromNode, Set<JID> visitedNodes, JID... toNodes)`
  Method which sends command to desired nodes
  `void`
  `sendToNodes(String command, Map<String,String> data, Element packet, JID fromNode, Set<JID> visitedNodes, JID... toNodes)`
  Method which sends command to desired nodes
  `void`
  `sendToNodes(String command, Map<String,String> data, JID fromNode, Set<JID> visitedNodes, JID... toNodes)`
  Method which sends command to desired nodes
  `void`
  `sendToNodes(String command, Map<String,String> data, JID fromNode, JID... toNodes)`
  Method which sends command to desired nodes
  `void`
  `sendToNodes(String command, Queue<Element> packets, JID fromNode, Set<JID> visitedNodes, JID... toNodes)`
  Method which sends command to desired nodes
  `void`
  `sendToNodes(String command, Element packet, JID fromNode, Set<JID> visitedNodes, JID... toNodes)`
  Method which sends command to desired nodes
  `void`
  `sendToNodes(String command, JID fromNode, JID... toNodes)`
  Method which sends command to desired nodes
  `void`
  `setCommandListener(CommandListener listener)`
  `void`
  `setName(String name)`
  Method used to assign component name (localpart of the component)

  ### Methods inherited from class tigase.server.AbstractComponentRegistrator

  `addComponent, deleteComponent, getComponent, newPacketId, release`

  ### Methods inherited from class tigase.server.BasicComponent

  `addComponentDomain, beanConfigurationChanged, canCallCommand, canCallCommand, checkCommandAcl, checkCommandAcl, createScriptEngineManager, everyHour, everyMinute, everySecond, getComponentId, getComponentInfo, getDefaults, getDefHostName, getDefVHostItem, getDiscoCategory, getDiscoExtensionsForm, getDiscoFeatures, getDiscoFeatures, getDiscoInfo, getDiscoItems, getName, getNodesConnected, getNodesConnectedWithLocal, getScriptCommands, getScriptItems, getServiceEntity, getServiceEntityCaps, getStatistics, getVHostItem, handlesLocalDomains, handlesNameSubdomains, handlesNonLocalDomains, initBindings, initializationCompleted, initialize, isAdmin, isInitializationComplete, isLocalDomain, isLocalDomainOrComponent, isNonAdminCommands, isSubdomain, isTrusted, isTrusted, onNodeConnected, onNodeDisconnected, processScriptCommand, reloadScripts, removeComponentDomain, removeServiceDiscoveryItem, setAdmins, setClusterController, setCommandsACL, setCompId, setProperties, setScriptsBaseDir, setVHostManager, updateServiceDiscoveryItem, updateServiceDiscoveryItem, updateServiceDiscoveryItem, updateServiceEntity`

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

  ### Methods inherited from interface tigase.conf.Configurable

  `getDefaults, setProperties`

  ### Methods inherited from interface tigase.server.ServerComponent

  `getComponentId, getComponentInfo, getName, initializationCompleted, isInitializationComplete, release`

- ## Field Details

  - ### MY_DOMAIN_NAME_PROP_KEY

    public static final String MY_DOMAIN_NAME_PROP_KEY
    See Also:
      - Constant Field Values

  - ### MY_DOMAIN_NAME_PROP_VAL

    public static final String MY_DOMAIN_NAME_PROP_VAL
    See Also:
      - Constant Field Values

- ## Constructor Details

  - ### ClusterController

    public ClusterController()

- ## Method Details

  - ### componentAdded

    public void componentAdded(ClusteredComponentIfc component)
    Description copied from class: `AbstractComponentRegistrator`
    Method provides a callback mechanism signaling that a new component implementing special interface has been added to the internal `components` collection.
    Specified by:
      `componentAdded` in class `AbstractComponentRegistrator<ClusteredComponentIfc>`
    Parameters:
      `component` - is a reference to the component just added to the collection.

  - ### componentRemoved

    public void componentRemoved(ClusteredComponentIfc component)
    Description copied from class: `AbstractComponentRegistrator`
    Method provides a callback mechanism signaling that a component implementing special interface has been removed from the internal `components` collection.
    Specified by:
      `componentRemoved` in class `AbstractComponentRegistrator<ClusteredComponentIfc>`
    Parameters:
      `component` - is a reference to the component removed from the collection.

  - ### handleClusterPacket

    public void handleClusterPacket(Element packet)
    Description copied from interface: `ClusterControllerIfc`
    Method handles cluster packet received from cluster connection.
    Specified by:
      `handleClusterPacket` in interface `ClusterControllerIfc`
    Parameters:
      `packet` - which should be handled

  - ### nodeConnected

    public void nodeConnected(String node)
    Description copied from interface: `ClusteredComponentIfc`
    Method is called on cluster node connection event. This is a notification to the component that a new cluster node has connected.
    Specified by:
      `nodeConnected` in interface `ClusterControllerIfc`
    Specified by:
      `nodeConnected` in interface `ClusteredComponentIfc`
    Overrides:
      `nodeConnected` in class `BasicComponent`
    Parameters:
      `node` - is a hostname of a cluster node generating the event.

  - ### nodeDisconnected

    public void nodeDisconnected(String node)
    Description copied from interface: `ClusteredComponentIfc`
    Method is called on cluster node disconnection event. This is a notification to the component that there was network connection lost to one of the cluster nodes.
    Specified by:
      `nodeDisconnected` in interface `ClusterControllerIfc`
    Specified by:
      `nodeDisconnected` in interface `ClusteredComponentIfc`
    Overrides:
      `nodeDisconnected` in class `BasicComponent`
    Parameters:
      `node` - is a hostname of a cluster node generating the event.

  - ### processPacket

    public void processPacket(Packet packet, Queue<Packet> results)
    Description copied from interface: `ServerComponent`
    `processPacket` is a blocking processing method implemented by all components. This method processes packet and returns results instantly without waiting for any resources.
    Specified by:
      `processPacket` in interface `ServerComponent`
    Overrides:
      `processPacket` in class `BasicComponent`
    Parameters:
      `packet` - a `Packet` value

  - ### removeCommandListener

    public void removeCommandListener(CommandListener listener)
    Specified by:
      `removeCommandListener` in interface `ClusterControllerIfc`

  - ### sendToNodes

    public void sendToNodes(String command, Map<String,String> data, Queue<Element> packets, JID fromNode, Set<JID> visitedNodes, JID... toNodes)
    Description copied from interface: `ClusterControllerIfc`
    Method which sends command to desired nodes
    Specified by:
      `sendToNodes` in interface `ClusterControllerIfc`
    Parameters:
      `command` - ID string of the command
      `data` - additional data to be included in the packet
      `packets` - collection of elements to be send to desired nodes
      `fromNode` - address of the source node
      `visitedNodes` - list of all already visited nodes
      `toNodes` - list of nodes to which packet should be sent

  - ### sendToNodes

    public void sendToNodes(String command, Queue<Element> packets, JID fromNode, Set<JID> visitedNodes, JID... toNodes)
    Description copied from interface: `ClusterControllerIfc`
    Method which sends command to desired nodes
    Specified by:
      `sendToNodes` in interface `ClusterControllerIfc`
    Parameters:
      `command` - ID string of the command
      `packets` - collection of elements to be send to desired nodes
      `fromNode` - address of the source node
      `visitedNodes` - list of all already visited nodes
      `toNodes` - list of nodes to which packet should be sent

  - ### sendToNodes

    public void sendToNodes(String command, Map<String,String> data, JID fromNode, Set<JID> visitedNodes, JID... toNodes)
    Description copied from interface: `ClusterControllerIfc`
    Method which sends command to desired nodes
    Specified by:
      `sendToNodes` in interface `ClusterControllerIfc`
    Parameters:
      `command` - ID string of the command
      `data` - additional data to be included in the packet
      `fromNode` - address of the source node
      `visitedNodes` - list of all already visited nodes
      `toNodes` - list of nodes to which packet should be sent

  - ### sendToNodes

    public void sendToNodes(String command, Map<String,String> data, JID fromNode, JID... toNodes)
    Description copied from interface: `ClusterControllerIfc`
    Method which sends command to desired nodes
    Specified by:
      `sendToNodes` in interface `ClusterControllerIfc`
    Parameters:
      `command` - ID string of the command
      `data` - additional data to be included in the packet
      `fromNode` - address of the source node
      `toNodes` - list of nodes to which packet should be sent

  - ### sendToNodes

    public void sendToNodes(String command, JID fromNode, JID... toNodes)
    Description copied from interface: `ClusterControllerIfc`
    Method which sends command to desired nodes
    Specified by:
      `sendToNodes` in interface `ClusterControllerIfc`
    Parameters:
      `command` - ID string of the command
      `fromNode` - address of the source node
      `toNodes` - list of nodes to which packet should be sent

  - ### sendToNodes

    public void sendToNodes(String command, Element packet, JID fromNode, Set<JID> visitedNodes, JID... toNodes)
    Description copied from interface: `ClusterControllerIfc`
    Method which sends command to desired nodes
    Specified by:
      `sendToNodes` in interface `ClusterControllerIfc`
    Parameters:
      `command` - ID string of the command
      `packet` - collection of elements to be send to desired nodes
      `fromNode` - address of the source node
      `visitedNodes` - list of all already visited nodes
      `toNodes` - list of nodes to which packet should be sent

  - ### sendToNodes

    public void sendToNodes(String command, Map<String,String> data, Element packet, JID fromNode, Set<JID> visitedNodes, JID... toNodes)
    Description copied from interface: `ClusterControllerIfc`
    Method which sends command to desired nodes
    Specified by:
      `sendToNodes` in interface `ClusterControllerIfc`
    Parameters:
      `command` - ID string of the command
      `data` - additional data to be included in the packet
      `packet` - element to be send to desired nodes
      `fromNode` - address of the source node
      `visitedNodes` - list of all already visited nodes
      `toNodes` - list of nodes to which packet should be sent

  - ### getDiscoCategoryType

    public String getDiscoCategoryType()
    Description copied from class: `BasicComponent`
    Method returns component category type used for service discovery responses.
    Overrides:
      `getDiscoCategoryType` in class `BasicComponent`
    Returns:
      category type of a component

  - ### getDiscoDescription

    public String getDiscoDescription()
    Description copied from class: `BasicComponent`
    Method returns description used for service discovery responses.
    Overrides:
      `getDiscoDescription` in class `BasicComponent`
    Returns:
      description of a component

  - ### isCorrectType

    public boolean isCorrectType(ServerComponent component)
    Description copied from class: `AbstractComponentRegistrator`
    Method checks whether the component provides as method parameter is correct type that is implements special interface or extends special class. Result of the method determines whether the component can be added to the internal `components` collection.
    Specified by:
      `isCorrectType` in class `AbstractComponentRegistrator<ClusteredComponentIfc>`
    Parameters:
      `component` - is a reference to the component being checked.
    Returns:
      a `boolean` value of `true` if the component is of a correct type and `false` otherwise.

  - ### setCommandListener

    public void setCommandListener(CommandListener listener)
    Specified by:
      `setCommandListener` in interface `ClusterControllerIfc`

  - ### setName

    public void setName(String name)
    Description copied from interface: `ServerComponent`
    Method used to assign component name (localpart of the component)
    Specified by:
      `setName` in interface `ServerComponent`
    Overrides:
      `setName` in class `BasicComponent`
    Parameters:
      `name` - to be assigned