public class ClusterConnectionManager extends ConnectionManager<XMPPIOService<Object>> implements ClusteredComponentIfc, RepositoryChangeListenerIfc<ClusterRepoItem>
ConnectionManager.LIMIT_ACTION, ConnectionManager.WATCHDOG_PING_TYPE
Modifier and Type | Field and Description |
---|---|
static String |
CLCON_REPO_CLASS_PROP_KEY
Field description
|
static String |
CLCON_REPO_CLASS_PROP_VAL
Field description
|
static String |
CLCON_REPO_CLASS_PROPERTY
Field description
|
static String |
CLUSTER_CONNECTIONS_PER_NODE_PAR
Field description
|
static String |
CLUSTER_CONNECTIONS_PER_NODE_PROP_KEY
Field description
|
static int |
CLUSTER_CONNECTIONS_PER_NODE_VAL
Field description
|
static String |
CLUSTER_CONTR_ID_PROP_KEY
Field description
|
static String |
COMPRESS_STREAM_PROP_KEY
Field description
|
static boolean |
COMPRESS_STREAM_PROP_VAL
Field description
|
static String |
CONNECT_ALL_PAR
Field description
|
static String |
CONNECT_ALL_PROP_KEY
Field description
|
static boolean |
CONNECT_ALL_PROP_VAL
Field description
|
static int |
ELEMENTS_NUMBER_LIMIT_CLUSTER_PROP_VAL
Default value for the system property for configuration protection
from system overload and DOS attack.
|
static String |
IDENTITY_TYPE_KEY
Field description
|
static String |
IDENTITY_TYPE_VAL
Field description
|
static String |
NON_CLUSTER_TRAFFIC_ALLOWED_PROP_KEY |
static boolean |
NON_CLUSTER_TRAFFIC_ALLOWED_PROP_VAL |
static String |
PORT_ROUTING_TABLE_PROP_KEY
Field description
|
static String |
RETURN_SERVICE_DISCO_KEY
Field description
|
static boolean |
RETURN_SERVICE_DISCO_VAL
Field description
|
static String |
SECRET_PROP_KEY
Field description
|
static String |
XMLNS
Field description
|
connectionDelay, elements_number_limit, ELEMENTS_NUMBER_LIMIT_PROP_KEY, ELEMENTS_NUMBER_LIMIT_PROP_VAL, HT_TRAFFIC_THROTTLING_PROP_KEY, HT_TRAFFIC_THROTTLING_PROP_VAL, LAST_MINUTE_BIN_LIMIT_PROP_VAL, LAST_MINUTE_PACKETS_LIMIT_PROP_VAL, MAX_INACTIVITY_TIME, MAX_RECONNECTS_PROP_KEY, net_buffer, NET_BUFFER_HT_PROP_KEY, NET_BUFFER_HT_PROP_VAL, NET_BUFFER_LIMIT_HT_PROP_VAL, NET_BUFFER_LIMIT_PROP_KEY, NET_BUFFER_LIMIT_ST_PROP_VAL, NET_BUFFER_PROP_KEY, NET_BUFFER_ST_PROP_KEY, NET_BUFFER_ST_PROP_VAL, pingElement, PORT_CLASS_PROP_KEY, PORT_IFC_PROP_KEY, PORT_IFC_PROP_VAL, PORT_KEY, PORT_LOCAL_HOST_PROP_KEY, PORT_REMOTE_HOST_PROP_KEY, PORT_REMOTE_HOST_PROP_VAL, PORT_SOCKET_PROP_KEY, PORT_TYPE_PROP_KEY, PORTS_PROP_KEY, PROP_KEY, ST_TRAFFIC_THROTTLING_PROP_KEY, ST_TRAFFIC_THROTTLING_PROP_VAL, TLS_PROP_KEY, TLS_REQUIRED_PROP_KEY, TLS_REQUIRED_PROP_VAL, TLS_USE_PROP_KEY, TLS_USE_PROP_VAL, TOTAL_BIN_LIMIT_PROP_VAL, TOTAL_PACKETS_LIMIT_PROP_VAL, TRAFFIC_THROTTLING_PROP_KEY, WATCHDOG_DELAY, WATCHDOG_PING_TYPE_KEY, WATCHDOG_TIMEOUT, watchdogDelay, watchdogPingType, watchdogTimeout, WHITE_CHAR_ACK_PROP_KEY, WHITE_CHAR_ACK_PROP_VAL, XMPP_ACK_PROP_KEY, XMPP_ACK_PROP_VAL
HOUR, INCOMING_FILTERS_PROP_KEY, INCOMING_FILTERS_PROP_VAL, MAX_QUEUE_SIZE_PROP_KEY, MAX_QUEUE_SIZE_PROP_VAL, maxInQueueSize, maxOutQueueSize, maxQueueSize, MINUTE, OUTGOING_FILTERS_PROP_KEY, OUTGOING_FILTERS_PROP_VAL, SCHEDULER_THREADS_PROP_KEY, SECOND
admins, ALL_PROP_KEY, COMMAND_PROP_NODE, scriptCommands, SCRIPTS_DIR_PROP_DEF, SCRIPTS_DIR_PROP_KEY, vHostManager
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_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
CMD_FEATURES, DEF_FEATURES, INFO_XMLNS, ITEMS_XMLNS
Constructor and Description |
---|
ClusterConnectionManager() |
Modifier and Type | Method and Description |
---|---|
Map<String,Object> |
getDefaults(Map<String,Object> params)
Returns default configuration settings for the component as a
Map with keys as configuration property IDs and values as the
configuration property values. |
protected int[] |
getDefPlainPorts()
Method description
|
protected String |
getDefTrafficThrottling()
Method description
|
String |
getDiscoCategoryType()
Method description
|
String |
getDiscoDescription()
Method description
|
protected long |
getMaxInactiveTime()
Method description
|
protected Integer |
getMaxQueueSize(int def)
Method description
|
protected Map<String,Object> |
getParamsForPort(int port)
Method description
|
void |
getStatistics(StatisticsList list)
Method returns component statistics.
|
protected XMPPIOService<Object> |
getXMPPIOServiceInstance()
Method description
|
int |
hashCodeForPacket(Packet packet)
This method decides how incoming packets are distributed among processing
threads.
|
void |
initBindings(Bindings binds)
Initialize a mapping of key/value pairs which can be used in scripts
loaded by the server
|
protected boolean |
isHighThroughput()
Method description
|
void |
itemAdded(ClusterRepoItem repoItem) |
void |
itemRemoved(ClusterRepoItem item) |
void |
itemUpdated(ClusterRepoItem item) |
void |
nodeConnected(String node)
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 |
processOutPacket(Packet packet)
By default this method just copies the given packet between queue.
|
void |
processPacket(Packet packet)
This is the main
Packet processing method. |
Queue<Packet> |
processSocketData(XMPPIOService<Object> serv)
Method description
|
void |
reconnectionFailed(Map<String,Object> port_props)
Method description
|
protected void |
serviceConnected(XMPPIOService<Object> serv)
Method description
|
void |
serviceStarted(XMPPIOService<Object> serv)
Method description
|
boolean |
serviceStopped(XMPPIOService<Object> service) |
void |
setClusterController(ClusterControllerIfc cl_controller)
Set's the configures the cluster controller object for cluster
communication and API.
|
void |
setProperties(Map<String,Object> props)
Sets all configuration properties for object.
|
void |
tlsHandshakeCompleted(XMPPIOService<Object> service) |
void |
updateConnectionDetails(Map<String,Object> port_props)
Method description
|
protected boolean |
writePacketToSocket(Packet p) |
void |
xmppStreamClosed(XMPPIOService<Object> serv) |
String |
xmppStreamOpened(XMPPIOService<Object> service,
Map<String,String> attribs) |
addWaitingTask, checkHighThroughputProperty, checkTrafficLimits, countIOServices, doForAllServices, everyMinute, getDefSSLPorts, getServiceId, getServiceId, getUniqueId, getXMPPIOService, getXMPPIOService, initializationCompleted, isTlsWantClientAuthEnabled, packetsReady, processUndeliveredPacket, release, setName, setupWatchdogThread, stop, writePacketsToSocket, writePacketToSocket, writePacketToSocket, writeRawData
addOutPacket, addOutPacketNB, addOutPackets, addOutPacketWithTimeout, addPacket, addPacketNB, addPackets, addRegexRouting, addTimerTask, addTimerTask, addTimerTask, addTimerTask, clearRegexRoutings, everyHour, everySecond, getRegexRoutings, isInRegexRoutings, newPacketId, processingThreads, processPacket, removeRegexRouting, schedulerThreads, setMaxQueueSize, setParent, start
addComponentDomain, canCallCommand, checkCommandAcl, getComponentId, getComponentInfo, getDefHostName, getDefVHostItem, getDiscoCategory, getDiscoFeatures, getDiscoFeatures, getDiscoInfo, getDiscoInfo, getDiscoItems, getDiscoItems, getName, getScriptCommands, getScriptItems, getServiceEntity, getVHostItem, handlesLocalDomains, handlesNameSubdomains, handlesNonLocalDomains, isAdmin, isInitializationComplete, isLocalDomain, isLocalDomainOrComponent, isNonAdminCommands, isSubdomain, processScriptCommand, removeComponentDomain, removeServiceDiscoveryItem, setVHostManager, updateServiceDiscoveryItem, updateServiceDiscoveryItem, updateServiceDiscoveryItem, updateServiceEntity
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
getComponentId, getComponentInfo, getName, initializationCompleted, isInitializationComplete, processPacket, release, setName
getDefHostName
public static final String CLCON_REPO_CLASS_PROP_KEY
public static final String CLCON_REPO_CLASS_PROP_VAL
public static final String CLCON_REPO_CLASS_PROPERTY
public static final String CLUSTER_CONNECTIONS_PER_NODE_PAR
public static final String CLUSTER_CONNECTIONS_PER_NODE_PROP_KEY
public static final int CLUSTER_CONNECTIONS_PER_NODE_VAL
public static final String CLUSTER_CONTR_ID_PROP_KEY
public static final String COMPRESS_STREAM_PROP_KEY
public static final String CONNECT_ALL_PAR
public static final String CONNECT_ALL_PROP_KEY
public static final String NON_CLUSTER_TRAFFIC_ALLOWED_PROP_KEY
public static final boolean NON_CLUSTER_TRAFFIC_ALLOWED_PROP_VAL
public static int ELEMENTS_NUMBER_LIMIT_CLUSTER_PROP_VAL
public static final String IDENTITY_TYPE_KEY
public static final String IDENTITY_TYPE_VAL
public static final String PORT_ROUTING_TABLE_PROP_KEY
public static final String RETURN_SERVICE_DISCO_KEY
public static final String SECRET_PROP_KEY
public static final String XMLNS
public static final boolean RETURN_SERVICE_DISCO_VAL
public static final boolean CONNECT_ALL_PROP_VAL
public static final boolean COMPRESS_STREAM_PROP_VAL
public int hashCodeForPacket(Packet packet)
AbstractMessageReceiver
int threadNo = Math.abs(hashCodeForPacket(packet) % N);For a PubSub component, for example, a better packets distribution would be based on the PubSub channel name, for SM a better distribution is based on the destination address, etc....
hashCodeForPacket
in class ConnectionManager<XMPPIOService<Object>>
packet
- is a Packet
which needs to be processed by some
thread.public void initBindings(Bindings binds)
BasicComponent
initBindings
in class ConnectionManager<XMPPIOService<Object>>
binds
- A mapping of key/value pairs, all of whose keys are Strings.public void itemAdded(ClusterRepoItem repoItem)
itemAdded
in interface RepositoryChangeListenerIfc<ClusterRepoItem>
public void itemRemoved(ClusterRepoItem item)
itemRemoved
in interface RepositoryChangeListenerIfc<ClusterRepoItem>
public void itemUpdated(ClusterRepoItem item)
itemUpdated
in interface RepositoryChangeListenerIfc<ClusterRepoItem>
public void nodeConnected(String node)
ClusteredComponentIfc
nodeConnected
in interface ClusteredComponentIfc
node
- is a hostname of a cluster node generating the event.public void nodeDisconnected(String node)
ClusteredComponentIfc
nodeDisconnected
in interface ClusteredComponentIfc
node
- is a hostname of a cluster node generating the event.public int processingInThreads()
AbstractMessageReceiver
processingInThreads
in class ConnectionManager<XMPPIOService<Object>>
public int processingOutThreads()
AbstractMessageReceiver
processingOutThreads
in class ConnectionManager<XMPPIOService<Object>>
public void processOutPacket(Packet packet)
AbstractMessageReceiver
processOutPacket
in class AbstractMessageReceiver
packet
- is an output packet which normally has to go to other component
for further processing.public void processPacket(Packet packet)
AbstractMessageReceiver
Packet
processing method. It is called
concurrently from many threads so implementing it in thread save manner is
essential. The method is called for each packet addressed to the component.
Please note, the Packet
instance may be processed by different
parts of the server, different components or plugins at the same time.
Therefore this is very important to tread the Packet
instance
as unmodifiable object.
Processing in this method is asynchronous, therefore there is no result
value. If there are some 'result' packets generated during processing, they
should be passed back using addOutPacket(Packet)
method.processPacket
in class ConnectionManager<XMPPIOService<Object>>
packet
- is an instance of the Packet
class passed for
processing.public Queue<Packet> processSocketData(XMPPIOService<Object> serv)
ConnectionManager
processSocketData
in class ConnectionManager<XMPPIOService<Object>>
Queue
public void reconnectionFailed(Map<String,Object> port_props)
ConnectionManager
reconnectionFailed
in class ConnectionManager<XMPPIOService<Object>>
public void serviceStarted(XMPPIOService<Object> serv)
ConnectionManager
serviceStarted
in class ConnectionManager<XMPPIOService<Object>>
public boolean serviceStopped(XMPPIOService<Object> service)
serviceStopped
in interface IOServiceListener<XMPPIOService<Object>>
serviceStopped
in class ConnectionManager<XMPPIOService<Object>>
public void tlsHandshakeCompleted(XMPPIOService<Object> service)
tlsHandshakeCompleted
in interface IOServiceListener<XMPPIOService<Object>>
public void updateConnectionDetails(Map<String,Object> port_props)
ConnectionManager
updateConnectionDetails
in class ConnectionManager<XMPPIOService<Object>>
public void xmppStreamClosed(XMPPIOService<Object> serv)
xmppStreamClosed
in interface XMPPIOServiceListener<XMPPIOService<Object>>
public String xmppStreamOpened(XMPPIOService<Object> service, Map<String,String> attribs)
xmppStreamOpened
in interface XMPPIOServiceListener<XMPPIOService<Object>>
public Map<String,Object> getDefaults(Map<String,Object> params)
AbstractMessageReceiver
Map
with keys as configuration property IDs and values as the
configuration property values. All the default parameters returned from
this method are later passed to the setProperties(...)
method.
Some of them may have changed value if they have been overwritten in the
server configuration. The configuration property value can be of any of the
basic types: int
, long
, boolean
,
String
.getDefaults
in interface Configurable
getDefaults
in class ConnectionManager<XMPPIOService<Object>>
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.Map
with the component default configuration.public String getDiscoCategoryType()
BasicComponent
getDiscoCategoryType
in class BasicComponent
String
public String getDiscoDescription()
BasicComponent
getDiscoDescription
in class BasicComponent
String
public void getStatistics(StatisticsList list)
AbstractMessageReceiver
Level.FINEST
assigned and must be put inside the level guard
to prevent generating them by the system monitor. The system monitor does
not collect FINEST
statistics.
Level guard code looks like the example below:
if (list.checkLevel(Level.FINEST)) { // Some CPU intensive calculations or lengthy operations list.add(getName(), "Statistic description", stat_value, Level.FINEST); }This way you make sure your extensive operation is not executed every second by the monitoring system and does not affect the server performance.
getStatistics
in interface StatisticsContainer
getStatistics
in class ConnectionManager<XMPPIOService<Object>>
list
- is a StatistcsList
where all statistics are stored.public void setClusterController(ClusterControllerIfc cl_controller)
ClusteredComponentIfc
setClusterController
in interface ClusteredComponentIfc
public void setProperties(Map<String,Object> props) throws ConfigurationException
AbstractMessageReceiver
setProperties
in interface Configurable
setProperties
in class ConnectionManager<XMPPIOService<Object>>
ConfigurationException
- - if setting configuration will fail which will make it unable to workprotected void serviceConnected(XMPPIOService<Object> serv)
serv
- protected boolean writePacketToSocket(Packet p)
writePacketToSocket
in class ConnectionManager<XMPPIOService<Object>>
boolean
protected int[] getDefPlainPorts()
ConnectionManager
getDefPlainPorts
in class ConnectionManager<XMPPIOService<Object>>
int[]
protected String getDefTrafficThrottling()
ConnectionManager
getDefTrafficThrottling
in class ConnectionManager<XMPPIOService<Object>>
String
protected long getMaxInactiveTime()
ConnectionManager
getMaxInactiveTime
in class ConnectionManager<XMPPIOService<Object>>
long
protected Integer getMaxQueueSize(int def)
AbstractMessageReceiver
getMaxQueueSize
in class AbstractMessageReceiver
Integer
protected Map<String,Object> getParamsForPort(int port)
ConnectionManager
getParamsForPort
in class ConnectionManager<XMPPIOService<Object>>
Map
protected XMPPIOService<Object> getXMPPIOServiceInstance()
ConnectionManager
getXMPPIOServiceInstance
in class ConnectionManager<XMPPIOService<Object>>
IO
protected boolean isHighThroughput()
ConnectionManager
isHighThroughput
in class ConnectionManager<XMPPIOService<Object>>
boolean
Copyright © 2014 "Tigase, Inc.". All rights reserved.