tigase.cluster
Class ClusterConnectionManager

java.lang.Object
  extended by tigase.server.BasicComponent
      extended by tigase.server.AbstractMessageReceiver
          extended by tigase.server.ConnectionManager<XMPPIOService<java.lang.Object>>
              extended by tigase.cluster.ClusterConnectionManager
All Implemented Interfaces:
ClusteredComponent, Configurable, XMPPService, IOServiceListener<XMPPIOService<java.lang.Object>>, MessageReceiver, ServerComponent, StatisticsContainer, VHostListener, XMPPIOServiceListener<XMPPIOService<java.lang.Object>>

public class ClusterConnectionManager
extends ConnectionManager<XMPPIOService<java.lang.Object>>
implements ClusteredComponent

Class ClusterConnectionManager Created: Tue Nov 22 07:07:11 2005

Version:
$Rev: 1998 $
Author:
Artur Hefczyc

Field Summary
static java.lang.String CLUSTER_CONTR_ID_PROP_KEY
           
static java.lang.String COMPRESS_STREAM_PROP_KEY
           
static boolean COMPRESS_STREAM_PROP_VAL
           
static java.lang.String CONNECT_ALL_PAR
           
static java.lang.String CONNECT_ALL_PROP_KEY
           
static boolean CONNECT_ALL_PROP_VAL
           
static java.lang.String IDENTITY_TYPE_KEY
           
static java.lang.String IDENTITY_TYPE_VAL
           
 java.lang.String[] PORT_IFC_PROP_VAL
           
static java.lang.String PORT_LOCAL_HOST_PROP_KEY
           
static java.lang.String PORT_ROUTING_TABLE_PROP_KEY
           
 int[] PORTS
           
static java.lang.String RETURN_SERVICE_DISCO_KEY
           
static boolean RETURN_SERVICE_DISCO_VAL
           
static java.lang.String SECRET_PROP_KEY
           
 java.lang.String SECRET_PROP_VAL
           
static java.lang.String XMLNS
           
 
Fields inherited from class tigase.server.ConnectionManager
connectionDelay, MAX_RECONNECTS_PROP_KEY, net_buffer, NET_BUFFER_HT_PROP_KEY, NET_BUFFER_HT_PROP_VAL, NET_BUFFER_PROP_KEY, NET_BUFFER_ST_PROP_KEY, NET_BUFFER_ST_PROP_VAL, PORT_CLASS_PROP_KEY, PORT_IFC_PROP_KEY, PORT_KEY, PORT_REMOTE_HOST_PROP_KEY, PORT_REMOTE_HOST_PROP_VAL, PORT_SOCKET_PROP_KEY, PORT_TYPE_PROP_KEY, PORTS_PROP_KEY, PROP_KEY, TLS_ALLOW_INVALID_CERTS_PROP_KEY, TLS_ALLOW_INVALID_CERTS_PROP_VAL, TLS_ALLOW_SELF_SIGNED_CERTS_PROP_KEY, TLS_ALLOW_SELF_SIGNED_CERTS_PROP_VAL, TLS_CONTAINER_CLASS_PROP_KEY, TLS_CONTAINER_CLASS_PROP_VAL, TLS_DEF_CERT_PROP_KEY, TLS_DEF_CERT_PROP_VAL, TLS_KEYS_STORE_PASSWD_PROP_KEY, TLS_KEYS_STORE_PASSWD_PROP_VAL, TLS_KEYS_STORE_PROP_KEY, TLS_KEYS_STORE_PROP_VAL, TLS_PROP_KEY, TLS_REQUIRED_PROP_KEY, TLS_REQUIRED_PROP_VAL, TLS_SERVER_CERTS_DIR_PROP_KEY, TLS_SERVER_CERTS_DIR_PROP_VAL, TLS_TRUSTED_CERTS_DIR_PROP_KEY, TLS_TRUSTED_CERTS_DIR_PROP_VAL, TLS_TRUSTS_STORE_PASSWD_PROP_KEY, TLS_TRUSTS_STORE_PASSWD_PROP_VAL, TLS_TRUSTS_STORE_PROP_KEY, TLS_TRUSTS_STORE_PROP_VAL, TLS_USE_PROP_KEY, TLS_USE_PROP_VAL
 
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, maxQueueSize, MINUTE, OUTGOING_FILTERS_PROP_KEY, OUTGOING_FILTERS_PROP_VAL, SECOND
 
Fields inherited from class tigase.server.BasicComponent
admins, SCRIPTS_DIR_PROP_DEF, SCRIPTS_DIR_PROP_KEY, vHostManager
 
Fields inherited from interface tigase.conf.Configurable
ADMINS_PROP_KEY, AUTH_REPO_CLASS_PROP_KEY, AUTH_REPO_PARAMS_NODE, AUTH_REPO_URL_PROP_KEY, 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_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_S2S_NAME, DEF_SM_NAME, DEF_SRECV_NAME, DEF_SSEND_NAME, DEF_STATS_NAME, DEF_VHOST_MAN_NAME, DERBY_REPO_CLASS_PROP_VAL, DERBY_REPO_URL_PROP_VAL, DRUPAL_REPO_CLASS_PROP_VAL, DRUPAL_REPO_URL_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_VIRT_HOSTS, HOSTNAMES_PROP_KEY, LIBRESOURCE_REPO_CLASS_PROP_VAL, LIBRESOURCE_REPO_URL_PROP_VAL, 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_POOL_PROP_KEY, SHARED_USER_REPO_PROP_KEY, SM_CLUS_COMP_CLASS_NAME, SM_COMP_CLASS_NAME, SRECV_COMP_CLASS_NAME, SSEND_COMP_CLASS_NAME, 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_REPO_CLASS_PROP_KEY, USER_REPO_PARAMS_NODE, USER_REPO_POOL_SIZE, USER_REPO_POOL_SIZE_PROP_KEY, USER_REPO_URL_PROP_KEY, VHOST_MAN_CLASS_NAME, XML_REPO_CLASS_PROP_VAL, XML_REPO_URL_PROP_VAL
 
Fields inherited from interface tigase.disco.XMPPService
CMD_FEATURES, DEF_FEATURES, INFO_XMLNS, ITEMS_XMLNS
 
Constructor Summary
ClusterConnectionManager()
           
 
Method Summary
 java.util.Map<java.lang.String,java.lang.Object> getDefaults(java.util.Map<java.lang.String,java.lang.Object> params)
          Method description
protected  int[] getDefPlainPorts()
           
 java.lang.String getDiscoCategoryType()
          Method description
 java.lang.String getDiscoDescription()
          Method description
protected  long getMaxInactiveTime()
          Method getMaxInactiveTime returns max keep-alive time for inactive connection.
protected  java.lang.Integer getMaxQueueSize(int def)
           
protected  java.util.Map<java.lang.String,java.lang.Object> getParamsForPort(int port)
           
protected  java.lang.String getServiceId(Packet packet)
           
 void getStatistics(StatisticsList list)
          Generates the component statistics.
protected  java.lang.String getUniqueId(XMPPIOService<java.lang.Object> serv)
           
protected  XMPPIOService<java.lang.Object> getXMPPIOServiceInstance()
           
 int hashCodeForPacket(Packet packet)
          This method can be overwritten in extending classes to get a different packets distribution to different threads.
protected  boolean isHighThroughput()
           
 void nodeConnected(java.lang.String node)
           
 void nodeDisconnected(java.lang.String node)
           
 int processingThreads()
          Method description
 void processPacket(Packet packet)
          Method description
 java.util.Queue<Packet> processSocketData(XMPPIOService<java.lang.Object> serv)
          Method description
protected  void serviceConnected(XMPPIOService<java.lang.Object> serv)
           
 void serviceStarted(XMPPIOService<java.lang.Object> serv)
          Method description
 boolean serviceStopped(XMPPIOService<java.lang.Object> service)
           
 void setClusterController(ClusterController cl_controller)
           
 void setProperties(java.util.Map<java.lang.String,java.lang.Object> props)
          Method description
protected  boolean writePacketToSocket(Packet p)
           
 void xmppStreamClosed(XMPPIOService<java.lang.Object> serv)
           
 java.lang.String xmppStreamOpened(XMPPIOService<java.lang.Object> service, java.util.Map<java.lang.String,java.lang.String> attribs)
           
 
Methods inherited from class tigase.server.ConnectionManager
addWaitingTask, countIOServices, doForAllServices, getDefSSLPorts, getServiceId, getXMPPIOService, getXMPPIOService, initializationCompleted, packetsReady, release, setName, start, writePacketsToSocket, writePacketToSocket, writePacketToSocket, writeRawData
 
Methods inherited from class tigase.server.AbstractMessageReceiver
addOutPacket, addOutPacketNB, addOutPackets, addOutPacketWithTimeout, addPacket, addPacketNB, addPackets, addRegexRouting, addTimerTask, addTimerTask, clearRegexRoutings, everyHour, everyMinute, everySecond, getRegexRoutings, isInRegexRoutings, newPacketId, processPacket, removeRegexRouting, setMaxQueueSize, setParent, stop
 
Methods inherited from class tigase.server.BasicComponent
addComponentDomain, getComponentId, getDefHostName, getDiscoFeatures, getDiscoFeatures, getDiscoInfo, getDiscoInfo, getDiscoItems, getDiscoItems, getName, getVHostItem, handlesLocalDomains, handlesNameSubdomains, handlesNonLocalDomains, initBindings, isAdmin, isLocalDomain, isLocalDomainOrComponent, processScriptCommand, removeComponentDomain, removeServiceDiscoveryItem, setVHostManager, updateServiceDiscoveryItem, updateServiceDiscoveryItem, updateServiceDiscoveryItem
 
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, processPacket, release, setName
 
Methods inherited from interface tigase.server.MessageReceiver
getDefHostName
 

Field Detail

PORTS

public int[] PORTS

SECRET_PROP_KEY

public static final java.lang.String SECRET_PROP_KEY
See Also:
Constant Field Values

SECRET_PROP_VAL

public java.lang.String SECRET_PROP_VAL

PORT_LOCAL_HOST_PROP_KEY

public static final java.lang.String PORT_LOCAL_HOST_PROP_KEY
See Also:
Constant Field Values

PORT_ROUTING_TABLE_PROP_KEY

public static final java.lang.String PORT_ROUTING_TABLE_PROP_KEY
See Also:
Constant Field Values

PORT_IFC_PROP_VAL

public java.lang.String[] PORT_IFC_PROP_VAL

RETURN_SERVICE_DISCO_KEY

public static final java.lang.String RETURN_SERVICE_DISCO_KEY
See Also:
Constant Field Values

RETURN_SERVICE_DISCO_VAL

public static final boolean RETURN_SERVICE_DISCO_VAL
See Also:
Constant Field Values

IDENTITY_TYPE_KEY

public static final java.lang.String IDENTITY_TYPE_KEY
See Also:
Constant Field Values

IDENTITY_TYPE_VAL

public static final java.lang.String IDENTITY_TYPE_VAL
See Also:
Constant Field Values

CONNECT_ALL_PAR

public static final java.lang.String CONNECT_ALL_PAR
See Also:
Constant Field Values

CONNECT_ALL_PROP_KEY

public static final java.lang.String CONNECT_ALL_PROP_KEY
See Also:
Constant Field Values

CLUSTER_CONTR_ID_PROP_KEY

public static final java.lang.String CLUSTER_CONTR_ID_PROP_KEY
See Also:
Constant Field Values

CONNECT_ALL_PROP_VAL

public static final boolean CONNECT_ALL_PROP_VAL
See Also:
Constant Field Values

COMPRESS_STREAM_PROP_KEY

public static final java.lang.String COMPRESS_STREAM_PROP_KEY
See Also:
Constant Field Values

COMPRESS_STREAM_PROP_VAL

public static final boolean COMPRESS_STREAM_PROP_VAL
See Also:
Constant Field Values

XMLNS

public static final java.lang.String XMLNS
See Also:
Constant Field Values
Constructor Detail

ClusterConnectionManager

public ClusterConnectionManager()
Method Detail

hashCodeForPacket

public int hashCodeForPacket(Packet packet)
This method can be overwritten in extending classes to get a different packets distribution to different threads. For PubSub, probably better packets distribution to different threads would be based on the sender address rather then destination address.

Overrides:
hashCodeForPacket in class AbstractMessageReceiver
Parameters:
packet -
Returns:

processingThreads

@TODO(note="The number of threads should be equal or greater to number of cluster nodes.")
public int processingThreads()
Description copied from class: AbstractMessageReceiver
Method description

Overrides:
processingThreads in class AbstractMessageReceiver
Returns:

processPacket

public void processPacket(Packet packet)
Description copied from class: ConnectionManager
Method description

Overrides:
processPacket in class ConnectionManager<XMPPIOService<java.lang.Object>>
Parameters:
packet - is an instance of the Packet class passed for processing.

writePacketToSocket

protected boolean writePacketToSocket(Packet p)
Overrides:
writePacketToSocket in class ConnectionManager<XMPPIOService<java.lang.Object>>
Returns:

processSocketData

public java.util.Queue<Packet> processSocketData(XMPPIOService<java.lang.Object> serv)
Description copied from class: ConnectionManager
Method description

Specified by:
processSocketData in class ConnectionManager<XMPPIOService<java.lang.Object>>
Returns:

serviceConnected

protected void serviceConnected(XMPPIOService<java.lang.Object> serv)

setProperties

public void setProperties(java.util.Map<java.lang.String,java.lang.Object> props)
Description copied from class: ConnectionManager
Method description

Specified by:
setProperties in interface Configurable
Overrides:
setProperties in class ConnectionManager<XMPPIOService<java.lang.Object>>

getDefaults

public java.util.Map<java.lang.String,java.lang.Object> getDefaults(java.util.Map<java.lang.String,java.lang.Object> params)
Description copied from class: ConnectionManager
Method description

Specified by:
getDefaults in interface Configurable
Overrides:
getDefaults in class ConnectionManager<XMPPIOService<java.lang.Object>>
Parameters:
params - is a Map with some initial properties set for the starting up server. These parameters can be used as a hints to generate component's default configuration.
Returns:
a Map with the component default configuration.

getParamsForPort

protected java.util.Map<java.lang.String,java.lang.Object> getParamsForPort(int port)
Overrides:
getParamsForPort in class ConnectionManager<XMPPIOService<java.lang.Object>>

getDefPlainPorts

protected int[] getDefPlainPorts()
Overrides:
getDefPlainPorts in class ConnectionManager<XMPPIOService<java.lang.Object>>

getUniqueId

protected java.lang.String getUniqueId(XMPPIOService<java.lang.Object> serv)
Overrides:
getUniqueId in class ConnectionManager<XMPPIOService<java.lang.Object>>

serviceStopped

public boolean serviceStopped(XMPPIOService<java.lang.Object> service)
Specified by:
serviceStopped in interface IOServiceListener<XMPPIOService<java.lang.Object>>
Overrides:
serviceStopped in class ConnectionManager<XMPPIOService<java.lang.Object>>

getServiceId

protected java.lang.String getServiceId(Packet packet)
Overrides:
getServiceId in class ConnectionManager<XMPPIOService<java.lang.Object>>

serviceStarted

public void serviceStarted(XMPPIOService<java.lang.Object> serv)
Description copied from class: ConnectionManager
Method description

Overrides:
serviceStarted in class ConnectionManager<XMPPIOService<java.lang.Object>>

xmppStreamOpened

public java.lang.String xmppStreamOpened(XMPPIOService<java.lang.Object> service,
                                         java.util.Map<java.lang.String,java.lang.String> attribs)
Specified by:
xmppStreamOpened in interface XMPPIOServiceListener<XMPPIOService<java.lang.Object>>

xmppStreamClosed

public void xmppStreamClosed(XMPPIOService<java.lang.Object> serv)
Specified by:
xmppStreamClosed in interface XMPPIOServiceListener<XMPPIOService<java.lang.Object>>

getMaxInactiveTime

protected long getMaxInactiveTime()
Method getMaxInactiveTime returns max keep-alive time for inactive connection. we shoulnd not really close external component connection at all, so let's say something like: 1000 days...

Specified by:
getMaxInactiveTime in class ConnectionManager<XMPPIOService<java.lang.Object>>
Returns:
a long value

getDiscoDescription

public java.lang.String getDiscoDescription()
Description copied from class: BasicComponent
Method description

Overrides:
getDiscoDescription in class BasicComponent
Returns:

getDiscoCategoryType

public java.lang.String getDiscoCategoryType()
Description copied from class: BasicComponent
Method description

Overrides:
getDiscoCategoryType in class BasicComponent
Returns:

getXMPPIOServiceInstance

protected XMPPIOService<java.lang.Object> getXMPPIOServiceInstance()
Specified by:
getXMPPIOServiceInstance in class ConnectionManager<XMPPIOService<java.lang.Object>>

getStatistics

public void getStatistics(StatisticsList list)
Description copied from class: ConnectionManager
Generates the component statistics.

Specified by:
getStatistics in interface StatisticsContainer
Overrides:
getStatistics in class ConnectionManager<XMPPIOService<java.lang.Object>>
Parameters:
list - is a collection to put the component statistics in.

getMaxQueueSize

protected java.lang.Integer getMaxQueueSize(int def)
Overrides:
getMaxQueueSize in class AbstractMessageReceiver

isHighThroughput

protected boolean isHighThroughput()
Overrides:
isHighThroughput in class ConnectionManager<XMPPIOService<java.lang.Object>>

setClusterController

public void setClusterController(ClusterController cl_controller)
Specified by:
setClusterController in interface ClusteredComponent

nodeConnected

public void nodeConnected(java.lang.String node)
Specified by:
nodeConnected in interface ClusteredComponent

nodeDisconnected

public void nodeDisconnected(java.lang.String node)
Specified by:
nodeDisconnected in interface ClusteredComponent


Copyright © 2010 Tigase. All Rights Reserved.