@Bean(name="sess-man", parent=Kernel.class, active=true, exportable=true) @ConfigType(value={DefaultMode,SessionManagerMode}) @ClusterModeRequired(active=true) public class SessionManagerClustered extends SessionManager implements ClusteredComponentIfc, SessionManagerClusteredIfc
SessionManager.DefaultHandlerProc, SessionManager.ProcessorResultWriter, SessionManager.SessionCloseProc, SessionManager.SessionOpenProc, SessionManager.SMPacketWriter
BasicComponent.ServerInfoVHostItemExtension
PacketWriterWithTimeout.Handler
Modifier and Type | Field and Description |
---|---|
static String |
CLUSTER_STRATEGY_VAR |
static String |
MY_DOMAIN_NAME_PROP_KEY |
static String |
STRATEGY_CLASS_PROP_KEY |
static String |
STRATEGY_CLASS_PROP_VAL |
static String |
STRATEGY_CLASS_PROPERTY |
static int |
SYNC_MAX_BATCH_SIZE |
ADMIN_COMMAND_NODE, connectionsByFrom, sessionsByNodeId
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
SESSION_FOUND_KEY
COMMIT_HANDLER_KEY
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 |
---|
SessionManagerClustered() |
Modifier and Type | Method and Description |
---|---|
protected void |
closeSession(XMPPResourceConnection conn,
boolean closeOnly)
The method intercept user's disconnect event.
|
boolean |
containsJid(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.
|
void |
everyHour()
Utility method executed precisely every hour.
|
void |
everyMinute()
Utility method executed precisely every minute.
|
void |
everySecond()
Utility method executed precisely every second.
|
boolean |
fastAddOutPacket(Packet packet) |
protected boolean |
fillRoutedUserSessionEvent(UserSessionEvent event) |
protected boolean |
fillRoutedUserSessionWithProcessorResultWriter(UserSessionEventWithProcessorResultWriter event) |
ComponentInfo |
getComponentInfo()
Allows to obtain various informations about components
|
JID[] |
getConnectionIdsForJid(BareJID jid)
Retrieve all connection IDs (CIDs) for the given user.
|
String |
getDiscoDescription()
Method returns description used for service discovery responses.
|
void |
getStatistics(StatisticsList list)
Method returns component statistics.
|
ClusteringStrategyIfc |
getStrategy()
Returns active clustering strategy object.
|
XMPPResourceConnection |
getXMPPResourceConnection(Packet p) |
ConcurrentHashMap<JID,XMPPResourceConnection> |
getXMPPResourceConnections() |
ConcurrentHashMap<BareJID,XMPPSession> |
getXMPPSessions() |
void |
handleLocalPacket(Packet packet,
XMPPResourceConnection conn) |
void |
handleLogin(BareJID userId,
XMPPResourceConnection conn) |
void |
handleLogout(BareJID userId,
XMPPResourceConnection conn) |
void |
handleResourceBind(XMPPResourceConnection conn) |
boolean |
hasCompleteJidsInfo()
Method checks whether the clustering strategy has a complete JIDs info.
|
boolean |
hasXMPPResourceConnectionForConnectionJid(JID connJid)
Method to check if there is XMPPResourceConnection instance for connection JID.
|
void |
initBindings(Bindings binds)
Initialize a mapping of key/value pairs which can be used in scripts loaded by the server
|
void |
onNodeConnected(JID jid) |
void |
onNodeDisconnected(JID jid) |
int |
processingInThreads()
Concurrency control method.
|
int |
processingOutThreads()
Concurrency control method.
|
void |
processPacket(Packet packet)
This is the main
Packet processing method. |
void |
processPacket(Packet packet,
XMPPResourceConnection conn) |
void |
processPresenceUpdate(XMPPSession session,
Element packet) |
protected Collection<Subscription> |
routeUserSessionEvent(UserSessionEvent event,
Collection<Subscription> subscriptions) |
void |
setClusterController(ClusterControllerIfc cl_controller)
Set's the configures the cluster controller object for cluster communication and API.
|
protected void |
xmppStreamMoved(XMPPResourceConnection conn,
JID oldConnId,
JID newConnId) |
addOutPacket, addOutPackets, addPlugin, addTrusted, closeConnection, containsJidLocally, containsJidLocally, createUserSession, delTrusted, getDiscoCategoryType, getDiscoFeatures, getDiscoInfo, getDiscoItems, getMaxQueueSize, getOpenUsersConnectionsAmount, getOutFilters, getPostProcessors, getPreProcessors, getProcessors, getResourceConnection, getSession, getXMPPResourceConnection, handleDomainChange, handlePresenceSet, handlesLocalDomains, hashCodeForPacket, initialize, isBrokenPacket, isLocalDomain, loginUserSession, nodeShutdown, processAdminsOrDomains, processCommand, register, registerNewSession, removePlugin, removePlugin, schedulerThreads, sendToAdmins, setAllPlugins, setName, setSchedulerThreads_size, setSmThreadsPool, skipPrivacy, start, stop, unregister
addOutPacketNB, addOutPackets, addOutPacketWithTimeout, addOutPacketWithTimeout, addPacket, addPacketNB, addPackets, addRegexRouting, addTimerTask, addTimerTask, addTimerTask, addTimerTaskWithTimeout, addTimerTaskWithTimeout, beanConfigurationChanged, clearRegexRoutings, getRegexRoutings, getResourceForPacketWithTimeout, isInRegexRoutings, newPacketId, processOutPacket, processPacket, release, removeRegexRouting, setCompId, setIncomingFilters, setOutogingFilters, setParent
addComponentDomain, canCallCommand, canCallCommand, checkCommandAcl, checkCommandAcl, createScriptEngineManager, getComponentId, getDefaults, getDefHostName, getDefVHostItem, getDiscoCategory, getDiscoExtensionsForm, getDiscoFeatures, getName, getNodesConnected, getNodesConnectedWithLocal, getScriptCommands, getScriptItems, getServiceEntity, getServiceEntityCaps, getVHostItem, handlesNameSubdomains, handlesNonLocalDomains, initializationCompleted, isAdmin, isInitializationComplete, isLocalDomain, isLocalDomainOrComponent, isNonAdminCommands, isSubdomain, isTrusted, isTrusted, nodeConnected, nodeDisconnected, processScriptCommand, removeComponentDomain, removeServiceDiscoveryItem, setAdmins, setCommandsACL, setProperties, setScriptsBaseDir, setVHostManager, updateServiceDiscoveryItem, updateServiceDiscoveryItem, updateServiceDiscoveryItem, updateServiceEntity
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
nodeConnected, nodeDisconnected
getComponentId, getName, initializationCompleted, isInitializationComplete, processPacket, release, setName
getComponentId, getNodesConnected
handleDomainChange, handlePresenceSet, isLocalDomain
getDefaults, setProperties
getName
getDefHostName
public static final String CLUSTER_STRATEGY_VAR
public static final String MY_DOMAIN_NAME_PROP_KEY
public static final String STRATEGY_CLASS_PROP_KEY
public static final String STRATEGY_CLASS_PROP_VAL
public static final String STRATEGY_CLASS_PROPERTY
public static final int SYNC_MAX_BATCH_SIZE
public boolean containsJid(BareJID jid)
OnlineJidsReporter
containsJid
in interface OnlineJidsReporter
containsJid
in class SessionManager
jid
- a user's JID for whom we query information.public void everySecond()
AbstractMessageReceiver
everySecond
in class SessionManager
public void everyMinute()
AbstractMessageReceiver
everyMinute
in class SessionManager
public void everyHour()
AbstractMessageReceiver
everyHour
in class AbstractMessageReceiver
public boolean fastAddOutPacket(Packet packet)
fastAddOutPacket
in interface SessionManagerClusteredIfc
fastAddOutPacket
in class SessionManager
public void handleLocalPacket(Packet packet, XMPPResourceConnection conn)
handleLocalPacket
in class SessionManager
public void handleLogin(BareJID userId, XMPPResourceConnection conn)
handleLogin
in interface SessionManagerHandler
handleLogin
in class SessionManager
public void handleLogout(BareJID userId, XMPPResourceConnection conn)
handleLogout
in interface SessionManagerHandler
handleLogout
in class SessionManager
public void handleResourceBind(XMPPResourceConnection conn)
handleResourceBind
in interface SessionManagerHandler
handleResourceBind
in class SessionManager
public void initBindings(Bindings binds)
BasicComponent
initBindings
in class SessionManager
binds
- A mapping of key/value pairs, all of whose keys are Strings.public void onNodeConnected(JID jid)
onNodeConnected
in class BasicComponent
public void onNodeDisconnected(JID jid)
onNodeDisconnected
in class BasicComponent
public int processingInThreads()
AbstractMessageReceiver
processingInThreads
in class SessionManager
public int processingOutThreads()
AbstractMessageReceiver
processingOutThreads
in class SessionManager
public void processPacket(Packet packet)
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 SessionManager
packet
- to be processedpublic void processPacket(Packet packet, XMPPResourceConnection conn)
processPacket
in interface SessionManagerClusteredIfc
processPacket
in class SessionManager
public void processPresenceUpdate(XMPPSession session, Element packet)
processPresenceUpdate
in interface SessionManagerClusteredIfc
processPresenceUpdate
in class SessionManager
public ComponentInfo getComponentInfo()
ServerComponent
getComponentInfo
in interface ServerComponent
getComponentInfo
in class BasicComponent
public JID[] getConnectionIdsForJid(BareJID jid)
getConnectionIdsForJid
in interface OnlineJidsReporter
getConnectionIdsForJid
in class SessionManager
jid
- a user's JID for whom we query information.public String getDiscoDescription()
BasicComponent
getDiscoDescription
in class SessionManager
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 SessionManager
list
- is a StatistcsList
where all statistics are stored.public ClusteringStrategyIfc getStrategy()
public XMPPResourceConnection getXMPPResourceConnection(Packet p)
getXMPPResourceConnection
in interface SessionManagerClusteredIfc
getXMPPResourceConnection
in class SessionManager
public ConcurrentHashMap<JID,XMPPResourceConnection> getXMPPResourceConnections()
getXMPPResourceConnections
in interface SessionManagerClusteredIfc
public ConcurrentHashMap<BareJID,XMPPSession> getXMPPSessions()
getXMPPSessions
in interface SessionManagerClusteredIfc
public boolean hasCompleteJidsInfo()
OnlineJidsReporter
hasCompleteJidsInfo
in interface OnlineJidsReporter
hasCompleteJidsInfo
in class SessionManager
public boolean hasXMPPResourceConnectionForConnectionJid(JID connJid)
SessionManagerClusteredIfc
hasXMPPResourceConnectionForConnectionJid
in interface SessionManagerClusteredIfc
public void setClusterController(ClusterControllerIfc cl_controller)
ClusteredComponentIfc
setClusterController
in interface ClusteredComponentIfc
setClusterController
in class BasicComponent
cl_controller
- cluster controller object used for cluster communication@FillRoutedEvent protected boolean fillRoutedUserSessionWithProcessorResultWriter(UserSessionEventWithProcessorResultWriter event)
@FillRoutedEvent protected boolean fillRoutedUserSessionEvent(UserSessionEvent event)
@RouteEvent protected Collection<Subscription> routeUserSessionEvent(UserSessionEvent event, Collection<Subscription> subscriptions)
protected void closeSession(XMPPResourceConnection conn, boolean closeOnly)
closeSession
in class SessionManager
conn
- XMPPResourceConnection
to be closedcloseOnly
- whether to perform additional processing before closingSessionManager.closeSession(tigase.xmpp.XMPPResourceConnection, boolean)
protected void xmppStreamMoved(XMPPResourceConnection conn, JID oldConnId, JID newConnId)
xmppStreamMoved
in class SessionManager
Copyright © 2004–2021 "Tigase, Inc.". All rights reserved.