@Bean(name="cl-comp", parent=Kernel.class, active=true) @ConfigType(value={DefaultMode,SessionManagerMode,ConnectionManagersMode,ComponentMode}) @ClusterModeRequired(active=true) public class ClusterConnectionManager extends ConnectionManager<XMPPIOService<Object>> implements ClusteredComponentIfc, RepositoryChangeListenerIfc<ClusterRepoItem>, ClusterConnectionHandler
Modifier and Type | Class and Description |
---|---|
static class |
ClusterConnectionManager.ClusterInitializedEvent |
static class |
ClusterConnectionManager.DefClConRepositoryBean |
static class |
ClusterConnectionManager.REPO_ITEM_UPDATE_TYPE |
protected class |
ClusterConnectionManager.Watchdog |
ConnectionManager.LIMIT_ACTION, ConnectionManager.PortConfigBean, ConnectionManager.PortsConfigBean, ConnectionManager.SecPortConfigBean, ConnectionManager.WATCHDOG_PING_TYPE
BasicComponent.ServerInfoVHostItemExtension
PacketWriterWithTimeout.Handler
Modifier and Type | Field and Description |
---|---|
static String |
CLUSTER_CONNECTIONS_PER_NODE_PROP_KEY |
static int |
CLUSTER_CONNECTIONS_PER_NODE_VAL |
static String |
CLUSTER_CONTR_ID_PROP_KEY |
static String |
COMPRESS_STREAM_PROP_KEY |
static boolean |
COMPRESS_STREAM_PROP_VAL |
static String |
CONNECT_ALL_PAR |
static String |
CONNECT_ALL_PROP_KEY |
static boolean |
CONNECT_ALL_PROP_VAL |
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 |
EVENTBUS_REPOSITORY_NOTIFICATIONS_ENABLED_KEY |
static boolean |
EVENTBUS_REPOSITORY_NOTIFICATIONS_ENABLED_VALUE |
static String |
IDENTITY_TYPE_KEY |
static String |
IDENTITY_TYPE_VAL |
static String |
NON_CLUSTER_TRAFFIC_ALLOWED_PROP_KEY |
static boolean |
NON_CLUSTER_TRAFFIC_ALLOWED_PROP_VAL |
static String |
PORT_ROUTING_TABLE_PROP_KEY |
static String |
RETURN_SERVICE_DISCO_KEY |
static boolean |
RETURN_SERVICE_DISCO_VAL |
static String |
SECRET_PROP_KEY |
static String |
XMLNS |
connectionDelay, delayPortListening, elements_number_limit, ELEMENTS_NUMBER_LIMIT_PROP_KEY, ELEMENTS_NUMBER_LIMIT_PROP_VAL, HT_TRAFFIC_THROTTLING_PROP_KEY, HT_TRAFFIC_THROTTLING_PROP_VAL, kernel, 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_LISTENING_DELAY_DEF, PORT_LISTENING_DELAY_KEY, PORT_LOCAL_HOST_PROP_KEY, PORT_NEW_CONNECTIONS_THROTTLING_KEY, PORT_REMOTE_HOST_PROP_KEY, PORT_REMOTE_HOST_PROP_VAL, PORT_SOCKET_PROP_KEY, PORT_TYPE_PROP_KEY, PORTS_PROP_KEY, processors, PROP_KEY, serviceConnectedTimeout, ST_TRAFFIC_THROTTLING_PROP_KEY, ST_TRAFFIC_THROTTLING_PROP_VAL, TOTAL_BIN_LIMIT_PROP_VAL, TOTAL_PACKETS_LIMIT_PROP_VAL, TRAFFIC_THROTTLING_PROP_KEY, trafficThrottling, 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, PACKET_DELIVERY_RETRY_COUNT_PROP_KEY, SCHEDULER_THREADS_PROP_KEY, SECOND
admins, ALL_PROP_KEY, COMMAND_PROP_NODE, scriptCommands, scriptEngineManager, SCRIPTS_DIR_PROP_DEF, SCRIPTS_DIR_PROP_KEY, trusted, 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_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
CMD_FEATURES, DEF_FEATURES, INFO_XMLNS, ITEMS_XMLNS
Constructor and Description |
---|
ClusterConnectionManager() |
Modifier and Type | Method and Description |
---|---|
protected boolean |
enableServiceConnectedTimeout(XMPPIOService<Object> service) |
void |
everyHour()
Utility method executed precisely every hour.
|
protected int[] |
getDefPlainPorts() |
protected String |
getDefTrafficThrottling() |
String |
getDiscoCategoryType()
Method returns component category type used for service discovery responses.
|
String |
getDiscoDescription()
Method returns description used for service discovery responses.
|
protected long |
getMaxInactiveTime() |
protected Integer |
getMaxQueueSize(int def) |
protected Map<String,Object> |
getParamsForPort(int port) |
void |
getStatistics(StatisticsList list)
Method returns component statistics.
|
protected XMPPIOService<Object> |
getXMPPIOServiceInstance() |
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() |
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) |
boolean |
processUndeliveredPacket(Packet packet,
Long stamp,
String errorMessage)
Processes undelivered packets
|
void |
reconnectionFailed(Map<String,Object> port_props) |
int |
schedulerThreads()
Method returns default number of threads used by SchedulerExecutorService
|
protected void |
serviceConnected(XMPPIOService<Object> serv) |
void |
serviceStarted(XMPPIOService<Object> serv) |
boolean |
serviceStopped(XMPPIOService<Object> service) |
void |
setClusterController(ClusterControllerIfc cl_controller)
Set's the configures the cluster controller object for cluster communication and API.
|
void |
setRepo(ComponentRepository<ClusterRepoItem> repo) |
void |
start() |
void |
stop() |
void |
tlsHandshakeCompleted(XMPPIOService<Object> service) |
void |
updateConnectionDetails(Map<String,Object> port_props) |
protected boolean |
writePacketToSocket(Packet p) |
void |
xmppStreamClosed(XMPPIOService<Object> serv) |
String[] |
xmppStreamOpened(XMPPIOService<Object> service,
Map<String,String> attribs) |
addWaitingTask, beanConfigurationChanged, checkHighThroughputProperty, checkTrafficLimits, connectWaitingTasks, countIOServices, doForAllServices, everyMinute, getDefPorts, getDefSSLPorts, getFlashCrossDomainPolicy, getNet_buffer_limit, getServiceId, getServiceId, getTrafficThrottling, getUniqueId, getXMPPIOService, getXMPPIOService, initializationCompleted, newWatchdog, packetsReady, register, release, releaseListener, setFlashCrossDomainPolicyFile, setName, setNet_buffer_limit, setProcessors, setTrafficThrottling, setupWatchdogThread, socketAccepted, startService, unregister, writePacketsToSocket, writePacketToSocket, writePacketToSocket, writeRawData, xmppStreamError
addOutPacket, addOutPacketNB, addOutPackets, addOutPacketWithTimeout, addOutPacketWithTimeout, addPacket, addPacketNB, addPackets, addRegexRouting, addTimerTask, addTimerTask, addTimerTask, addTimerTaskWithTimeout, addTimerTaskWithTimeout, clearRegexRoutings, everySecond, getRegexRoutings, getResourceForPacketWithTimeout, isInRegexRoutings, newPacketId, processPacket, removeRegexRouting, setCompId, setIncomingFilters, setOutogingFilters, setParent, setSchedulerThreads_size
addComponentDomain, canCallCommand, canCallCommand, checkCommandAcl, checkCommandAcl, createScriptEngineManager, getComponentId, getComponentInfo, getDefaults, getDefHostName, getDefVHostItem, getDiscoCategory, getDiscoExtensionsForm, getDiscoFeatures, getDiscoFeatures, getDiscoInfo, getDiscoItems, getName, getNodesConnected, getNodesConnectedWithLocal, getScriptCommands, getScriptItems, getServiceEntity, getServiceEntityCaps, getVHostItem, handlesLocalDomains, handlesNameSubdomains, handlesNonLocalDomains, initialize, isAdmin, isInitializationComplete, isLocalDomain, isLocalDomainOrComponent, isNonAdminCommands, isSubdomain, isTrusted, isTrusted, onNodeConnected, onNodeDisconnected, processScriptCommand, removeComponentDomain, removeServiceDiscoveryItem, setAdmins, setCommandsACL, setProperties, setScriptsBaseDir, setVHostManager, updateServiceDiscoveryItem, updateServiceDiscoveryItem, updateServiceDiscoveryItem, updateServiceEntity
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
getComponentId, getComponentInfo, getName, initializationCompleted, isInitializationComplete, processPacket, release, setName
getName
getDefHostName
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 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 static final String EVENTBUS_REPOSITORY_NOTIFICATIONS_ENABLED_KEY
public static final boolean EVENTBUS_REPOSITORY_NOTIFICATIONS_ENABLED_VALUE
public static int ELEMENTS_NUMBER_LIMIT_CLUSTER_PROP_VAL
protected boolean enableServiceConnectedTimeout(XMPPIOService<Object> service)
enableServiceConnectedTimeout
in class ConnectionManager<XMPPIOService<Object>>
public int hashCodeForPacket(Packet packet)
AbstractMessageReceiver
int threadNo = Math.abs(hashCodeForPacket(packet) % N);
hashCodeForPacket
in interface ClusterConnectionHandler
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
nodeConnected
in class BasicComponent
node
- is a hostname of a cluster node generating the event.public void everyHour()
AbstractMessageReceiver
everyHour
in class AbstractMessageReceiver
public void nodeDisconnected(String node)
ClusteredComponentIfc
nodeDisconnected
in interface ClusteredComponentIfc
nodeDisconnected
in class BasicComponent
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. 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. 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)
processSocketData
in class ConnectionManager<XMPPIOService<Object>>
public boolean processUndeliveredPacket(Packet packet, Long stamp, String errorMessage)
ConnectionManager
processUndeliveredPacket
in class ConnectionManager<XMPPIOService<Object>>
stamp
- - timestamp when packet was received to be written to XMPPIOServicepublic void reconnectionFailed(Map<String,Object> port_props)
reconnectionFailed
in class ConnectionManager<XMPPIOService<Object>>
public int schedulerThreads()
AbstractMessageReceiver
schedulerThreads
in class AbstractMessageReceiver
int
public void serviceStarted(XMPPIOService<Object> serv)
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 setRepo(ComponentRepository<ClusterRepoItem> repo)
public void tlsHandshakeCompleted(XMPPIOService<Object> service)
tlsHandshakeCompleted
in interface IOServiceListener<XMPPIOService<Object>>
public void updateConnectionDetails(Map<String,Object> port_props)
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 String getDiscoCategoryType()
BasicComponent
getDiscoCategoryType
in class BasicComponent
public String getDiscoDescription()
BasicComponent
getDiscoDescription
in class BasicComponent
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. 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 StatisticsContainerIfc
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
setClusterController
in class BasicComponent
cl_controller
- cluster controller object used for cluster communicationpublic void start()
start
in interface MessageReceiver
start
in class ConnectionManager<XMPPIOService<Object>>
public void stop()
stop
in class ConnectionManager<XMPPIOService<Object>>
protected void serviceConnected(XMPPIOService<Object> serv)
serviceConnected
in class ConnectionManager<XMPPIOService<Object>>
protected boolean writePacketToSocket(Packet p)
writePacketToSocket
in class ConnectionManager<XMPPIOService<Object>>
protected int[] getDefPlainPorts()
getDefPlainPorts
in class ConnectionManager<XMPPIOService<Object>>
protected String getDefTrafficThrottling()
getDefTrafficThrottling
in class ConnectionManager<XMPPIOService<Object>>
protected long getMaxInactiveTime()
getMaxInactiveTime
in class ConnectionManager<XMPPIOService<Object>>
protected Integer getMaxQueueSize(int def)
getMaxQueueSize
in class AbstractMessageReceiver
protected Map<String,Object> getParamsForPort(int port)
getParamsForPort
in class ConnectionManager<XMPPIOService<Object>>
protected XMPPIOService<Object> getXMPPIOServiceInstance()
getXMPPIOServiceInstance
in class ConnectionManager<XMPPIOService<Object>>
protected boolean isHighThroughput()
isHighThroughput
in class ConnectionManager<XMPPIOService<Object>>
Copyright © 2004–2021 "Tigase, Inc.". All rights reserved.