tigase.cluster

## Class SessionManagerClustered

- java.lang.Object
- - tigase.server.BasicComponent
  - - tigase.server.AbstractMessageReceiver
    - - tigase.server.xmppsession.SessionManager
      - - tigase.cluster.SessionManagerClustered

- All Implemented Interfaces:
    ClusteredComponentIfc, SessionManagerClusteredIfc, Configurable, XMPPService, MessageReceiver, ServerComponent, SessionManagerHandler, StatisticsContainer, OnlineJidsReporter, VHostListener

      public class SessionManagerClustered
      extends SessionManager
      implements ClusteredComponentIfc, SessionManagerClusteredIfc

  Class SessionManagerClusteredOld Created: Tue Nov 22 07:07:11 2005
  Version:
    $Rev$
  Author:
    Artur Hefczyc

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from class tigase.server.xmppsession.SessionManager

      `SessionManager.WriterQueue<E extends Packet>`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static String` | `CLUSTER_STRATEGY_VAR` Field description
    `static String` | `MY_DOMAIN_NAME_PROP_KEY` Field description
    `static String` | `STRATEGY_CLASS_PROP_KEY` Field description
    `static String` | `STRATEGY_CLASS_PROP_VAL` Field description
    `static String` | `STRATEGY_CLASS_PROPERTY` Field description
    `static int` | `SYNC_MAX_BATCH_SIZE` Field description

    - ### Fields inherited from class tigase.server.xmppsession.SessionManager

      `ADMIN_COMMAND_NODE, connectionsByFrom, packetWriterQueue, sessionsByNodeId`

    - ### Fields inherited from class tigase.server.AbstractMessageReceiver

      `HOUR, INCOMING_FILTERS_PROP_KEY, INCOMING_FILTERS_PROP_VAL, MAX_QUEUE_SIZE_PROP_KEY, MAX_QUEUE_SIZE_PROP_VAL, maxInQueueSize, maxOutQueueSize, MINUTE, OUTGOING_FILTERS_PROP_KEY, OUTGOING_FILTERS_PROP_VAL, SCHEDULER_THREADS_PROP_KEY, SECOND`

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

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

    - ### Fields inherited from interface tigase.cluster.api.SessionManagerClusteredIfc

      `SESSION_FOUND_KEY`

    - ### Fields inherited from interface tigase.server.xmppsession.SessionManagerHandler

      `COMMIT_HANDLER_KEY`

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

      `ADMINS_PROP_KEY, AMP_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_EXT_COMP_NAME, DEF_HOSTNAME_PROP_KEY, DEF_MONITOR_NAME, DEF_S2S_NAME, DEF_SM_NAME, DEF_SRECV_NAME, DEF_SSEND_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, 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, SRECV_COMP_CLASS_NAME, SSEND_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 and Description
    `SessionManagerClustered()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | `closeSession(XMPPResourceConnection conn, boolean closeOnly)` The method intercept user's disconnect event.
    `boolean` | `containsJid(tigase.xmpp.BareJID jid)` The method checks whether the given JID is known to the installation, either user connected to local machine or any of the cluster nodes.
    `boolean` | `fastAddOutPacket(Packet packet)` Method description
    `ComponentInfo` | `getComponentInfo()` Allows to obtain various informations about components
    `tigase.xmpp.JID[]` | `getConnectionIdsForJid(tigase.xmpp.BareJID jid)` If the installation knows about user's JID, that he is connected to the system, then this method returns all user's connection IDs.
    `Map<String,Object>` | `getDefaults(Map<String,Object> params)` Loads the component's default configuration to the configuration management subsystem.
    `String` | `getDiscoDescription()` Method description
    `void` | `getStatistics(StatisticsList list)` Method generates and returns component's statistics.
    `ClusteringStrategyIfc` | `getStrategy()` Returns active clustering strategy object.
    `XMPPResourceConnection` | `getXMPPResourceConnection(Packet p)` Method description
    `ConcurrentHashMap<tigase.xmpp.JID,XMPPResourceConnection>` | `getXMPPResourceConnections()` Method description
    `ConcurrentHashMap<tigase.xmpp.BareJID,XMPPSession>` | `getXMPPSessions()` Method description
    `void` | `handleLocalPacket(Packet packet, XMPPResourceConnection conn)` Method description
    `void` | `handleLogin(tigase.xmpp.BareJID userId, XMPPResourceConnection conn)` Method description
    `void` | `handleLogout(tigase.xmpp.BareJID userId, XMPPResourceConnection conn)` Method description
    `void` | `handleResourceBind(XMPPResourceConnection conn)` Method description
    `boolean` | `hasCompleteJidsInfo()` Method checks whether the clustering strategy has a complete JIDs info.
    `void` | `initBindings(Bindings binds)` Initialize a mapping of key/value pairs which can be used in scripts loaded by the server
    `void` | `nodeConnected(String node)` The method is called on cluster node connection event.
    `void` | `nodeDisconnected(String node)` Method is called on cluster node disconnection event.
    `int` | `processingInThreads()` Concurrency control method.
    `int` | `processingOutThreads()` Concurrency control method.
    `void` | `processPacket(Packet packet)` This is a standard component method for processing packets.
    `void` | `processPacket(Packet packet, XMPPResourceConnection conn)` Method description
    `void` | `processPresenceUpdate(XMPPSession session, tigase.xml.Element packet)` Method description
    `void` | `setClusterController(ClusterControllerIfc cl_controller)` Set's the configures the cluster controller object for cluster communication and API.
    `void` | `setProperties(Map<String,Object> props)` Standard component's configuration method.

    - ### Methods inherited from class tigase.server.xmppsession.SessionManager

      `addOutPacket, addOutPackets, addPlugin, addTrusted, closeConnection, createUserSession, delTrusted, getDiscoCategoryType, getDiscoFeatures, getDiscoInfo, getMaxQueueSize, getResourceConnection, getSession, getXMPPResourceConnection, handlePresenceSet, handlesLocalDomains, isBrokenPacket, isLocalDomain, isTrusted, isTrusted, loginUserSession, processAdminsOrDomains, processCommand, registerNewSession, removePlugin, sendToAdmins, setName, skipPrivacy`

    - ### Methods inherited from class tigase.server.AbstractMessageReceiver

      `addOutPacketNB, addOutPackets, addOutPacketWithTimeout, addPacket, addPacketNB, addPackets, addRegexRouting, addTimerTask, addTimerTask, addTimerTask, addTimerTask, clearRegexRoutings, everyHour, everyMinute, everySecond, getRegexRoutings, hashCodeForPacket, isInRegexRoutings, newPacketId, processingThreads, processOutPacket, processPacket, release, removeRegexRouting, schedulerThreads, setMaxQueueSize, setParent, start, stop`

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

      `addComponentDomain, canCallCommand, checkCommandAcl, getComponentId, getDefHostName, getDefVHostItem, getDiscoCategory, getDiscoFeatures, getDiscoInfo, getDiscoItems, getDiscoItems, getName, getScriptCommands, getScriptItems, getServiceEntity, getVHostItem, handlesNameSubdomains, handlesNonLocalDomains, initializationCompleted, isAdmin, isInitializationComplete, isLocalDomain, isLocalDomainOrComponent, isNonAdminCommands, isSubdomain, processScriptCommand, removeComponentDomain, removeServiceDiscoveryItem, 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.server.ServerComponent

      `getComponentId, getName, initializationCompleted, isInitializationComplete, processPacket, release, setName`

    - ### Methods inherited from interface tigase.server.xmppsession.SessionManagerHandler

      `getComponentId, handlePresenceSet, isLocalDomain`

    - ### Methods inherited from interface tigase.server.MessageReceiver

      `getDefHostName`

- - ### Field Detail

    - #### CLUSTER_STRATEGY_VAR

          public static final String CLUSTER_STRATEGY_VAR

      Field description
      See Also:
        Constant Field Values

    - #### MY_DOMAIN_NAME_PROP_KEY

          public static final String MY_DOMAIN_NAME_PROP_KEY

      Field description
      See Also:
        Constant Field Values

    - #### STRATEGY_CLASS_PROP_KEY

          public static final String STRATEGY_CLASS_PROP_KEY

      Field description
      See Also:
        Constant Field Values

    - #### STRATEGY_CLASS_PROP_VAL

          public static final String STRATEGY_CLASS_PROP_VAL

      Field description
      See Also:
        Constant Field Values

    - #### STRATEGY_CLASS_PROPERTY

          public static final String STRATEGY_CLASS_PROPERTY

      Field description
      See Also:
        Constant Field Values

    - #### SYNC_MAX_BATCH_SIZE

          public static final int SYNC_MAX_BATCH_SIZE

      Field description
      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### SessionManagerClustered

          public SessionManagerClustered()

  - ### Method Detail

    - #### containsJid

          public boolean containsJid(tigase.xmpp.BareJID jid)

      The method checks whether the given JID is known to the installation, either user connected to local machine or any of the cluster nodes. False result does not mean the user is not connected. It means the method does not know anything about the JID. Some clustering strategies may not cache online users information.
      Specified by:
        `containsJid` in interface `OnlineJidsReporter`
      Overrides:
        `containsJid` in class `SessionManager`
      Parameters:
        `jid` - a user's JID for whom we query information.
      Returns:
        true if the user is known as online to the installation, false if the method does not know.

    - #### fastAddOutPacket

          public boolean fastAddOutPacket(Packet packet)

      Method description
      Specified by:
        `fastAddOutPacket` in interface `SessionManagerClusteredIfc`
      Overrides:
        `fastAddOutPacket` in class `SessionManager`
      Parameters:
        `packet` -
      Returns:
        a value of `boolean`

    - #### handleLocalPacket

          public void handleLocalPacket(Packet packet,
                               XMPPResourceConnection conn)

      Method description
      Overrides:
        `handleLocalPacket` in class `SessionManager`
      Parameters:
        `packet` -
        `conn` -

    - #### handleLogin

          public void handleLogin(tigase.xmpp.BareJID userId,
                         XMPPResourceConnection conn)

      Method description
      Specified by:
        `handleLogin` in interface `SessionManagerHandler`
      Overrides:
        `handleLogin` in class `SessionManager`
      Parameters:
        `userId` -
        `conn` -

    - #### handleLogout

          public void handleLogout(tigase.xmpp.BareJID userId,
                          XMPPResourceConnection conn)

      Description copied from class: `SessionManager`
      Method description
      Specified by:
        `handleLogout` in interface `SessionManagerHandler`
      Overrides:
        `handleLogout` in class `SessionManager`

    - #### handleResourceBind

          public void handleResourceBind(XMPPResourceConnection conn)

      Description copied from class: `SessionManager`
      Method description
      Specified by:
        `handleResourceBind` in interface `SessionManagerHandler`
      Overrides:
        `handleResourceBind` in class `SessionManager`

    - #### initBindings

          public void initBindings(Bindings binds)

      Initialize a mapping of key/value pairs which can be used in scripts loaded by the server
      Overrides:
        `initBindings` in class `SessionManager`
      Parameters:
        `binds` - A mapping of key/value pairs, all of whose keys are Strings.

    - #### nodeConnected

          public void nodeConnected(String node)

      The method is called on cluster node connection event. This is a notification to the component that a new node has connected to the system.
      Specified by:
        `nodeConnected` in interface `ClusteredComponentIfc`
      Parameters:
        `node` - is a hostname of a new cluster node connected to the system.

    - #### nodeDisconnected

          public void nodeDisconnected(String node)

      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 `ClusteredComponentIfc`
      Parameters:
        `node` - is a hostname of a cluster node generating the event.

    - #### processingInThreads

          public int processingInThreads()

      Concurrency control method. Returns preferable number of threads set for this component.
      Overrides:
        `processingInThreads` in class `SessionManager`
      Returns:
        preferable number of threads set for this component.

    - #### processingOutThreads

          public int processingOutThreads()

      Concurrency control method. Returns preferable number of threads set for this component.
      Overrides:
        `processingOutThreads` in class `SessionManager`
      Returns:
        preferable number of threads set for this component.

    - #### processPacket

          public void processPacket(Packet packet)

      This is a standard component method for processing packets. The method takes care of cases where the packet cannot be processed locally, in such a case it is forwarded to another node.
      Overrides:
        `processPacket` in class `SessionManager`
      Parameters:
        `packet` -

    - #### processPacket

          public void processPacket(Packet packet,
                           XMPPResourceConnection conn)

      Method description
      Specified by:
        `processPacket` in interface `SessionManagerClusteredIfc`
      Overrides:
        `processPacket` in class `SessionManager`
      Parameters:
        `packet` -
        `conn` -

    - #### processPresenceUpdate

          public void processPresenceUpdate(XMPPSession session,
                                   tigase.xml.Element packet)

      Method description
      Specified by:
        `processPresenceUpdate` in interface `SessionManagerClusteredIfc`
      Overrides:
        `processPresenceUpdate` in class `SessionManager`
      Parameters:
        `session` - is a `XMPPSession`
        `packet` - is a `Element`

    - #### getComponentInfo

          public ComponentInfo getComponentInfo()

      Allows to obtain various informations about components
      Specified by:
        `getComponentInfo` in interface `ServerComponent`
      Overrides:
        `getComponentInfo` in class `BasicComponent`
      Returns:
        information about particular component

    - #### getConnectionIdsForJid

          public tigase.xmpp.JID[] getConnectionIdsForJid(tigase.xmpp.BareJID jid)

      If the installation knows about user's JID, that he is connected to the system, then this method returns all user's connection IDs. As an optimization we can forward packets to all user's connections directly from a single node.
      Specified by:
        `getConnectionIdsForJid` in interface `OnlineJidsReporter`
      Overrides:
        `getConnectionIdsForJid` in class `SessionManager`
      Parameters:
        `jid` - a user's JID for whom we query information.
      Returns:
        a list of all user's connection IDs.

    - #### getDefaults

          public Map<String,Object> getDefaults(Map<String,Object> params)

      Loads the component's default configuration to the configuration management subsystem.
      Specified by:
        `getDefaults` in interface `Configurable`
      Overrides:
        `getDefaults` in class `SessionManager`
      Parameters:
        `params` - is a Map with system-wide default settings found in init.properties file or similar location.
      Returns:
        a Map with all default component settings generated from the default parameters in init.properties file.

    - #### getDiscoDescription

          public String getDiscoDescription()

      Method description
      Overrides:
        `getDiscoDescription` in class `SessionManager`
      Returns:
        a value of `String`

    - #### getStatistics

          public void getStatistics(StatisticsList list)

      Method generates and returns component's statistics.
      Specified by:
        `getStatistics` in interface `StatisticsContainer`
      Overrides:
        `getStatistics` in class `SessionManager`
      Parameters:
        `list` - is a collection with statistics to which this component can add own metrics.

    - #### getStrategy

          public ClusteringStrategyIfc getStrategy()

      Returns active clustering strategy object.
      Returns:
        active clustering strategy object.

    - #### getXMPPResourceConnection

          public XMPPResourceConnection getXMPPResourceConnection(Packet p)

      Method description
      Specified by:
        `getXMPPResourceConnection` in interface `SessionManagerClusteredIfc`
      Overrides:
        `getXMPPResourceConnection` in class `SessionManager`
      Parameters:
        `p` -
      Returns:
        a value of `XMPPResourceConnection`

    - #### getXMPPResourceConnections

          public ConcurrentHashMap<tigase.xmpp.JID,XMPPResourceConnection> getXMPPResourceConnections()

      Method description
      Specified by:
        `getXMPPResourceConnections` in interface `SessionManagerClusteredIfc`
      Returns:
        a value of `ConcurrentHashMap`

    - #### getXMPPSessions

          public ConcurrentHashMap<tigase.xmpp.BareJID,XMPPSession> getXMPPSessions()

      Method description
      Specified by:
        `getXMPPSessions` in interface `SessionManagerClusteredIfc`
      Returns:
        a value of `ConcurrentHashMap`

    - #### hasCompleteJidsInfo

          public boolean hasCompleteJidsInfo()

      Method checks whether the clustering strategy has a complete JIDs info. That is whether the strategy knows about all users connected to all nodes. Some strategies may choose not to share this information among nodes, hence the methods returns false. Other may synchronize this information and can provide it to further optimize cluster traffic.
      Specified by:
        `hasCompleteJidsInfo` in interface `OnlineJidsReporter`
      Overrides:
        `hasCompleteJidsInfo` in class `SessionManager`
      Returns:
        a true boolean value if the strategy has a complete information about all users connected to all cluster nodes.

    - #### setClusterController

          public void setClusterController(ClusterControllerIfc cl_controller)

      Set's the configures the cluster controller object for cluster communication and API.
      Specified by:
        `setClusterController` in interface `ClusteredComponentIfc`
      Parameters:
        `cl_controller` -

    - #### setProperties

          public void setProperties(Map<String,Object> props)

      Standard component's configuration method.
      Specified by:
        `setProperties` in interface `Configurable`
      Overrides:
        `setProperties` in class `SessionManager`
      Parameters:
        `props` -

    - #### closeSession

          protected void closeSession(XMPPResourceConnection conn,
                          boolean closeOnly)

      The method intercept user's disconnect event. On user disconnect the method takes a list of cluster nodes from the strategy and sends a notification to all those nodes about the event.
      Overrides:
        `closeSession` in class `SessionManager`
      Parameters:
        `conn` -
        `closeOnly` -
      See Also:
        `SessionManager.closeSession(tigase.xmpp.XMPPResourceConnection, boolean)`

Copyright © 2014 "Tigase, Inc.". All rights reserved.