@Bean(name="sess-man", parent=Kernel.class, active=true) @ConfigType(value={DefaultMode,SessionManagerMode}) @ClusterModeRequired(active=false) public class SessionManager extends AbstractMessageReceiver implements Configurable, SessionManagerHandler, OnlineJidsReporter, RegistrarBean
Modifier and Type | Class and Description |
---|---|
static class |
SessionManager.DefaultHandlerProc |
static interface |
SessionManager.ProcessorResultWriter |
static class |
SessionManager.SessionCloseProc |
static class |
SessionManager.SessionOpenProc |
static class |
SessionManager.SMPacketWriter |
Modifier and Type | Field and Description |
---|---|
protected static String |
ADMIN_COMMAND_NODE |
protected ConcurrentHashMap<JID,XMPPResourceConnection> |
connectionsByFrom
A Map with connectionID as a key and an object with all the user connection data as a value
|
protected ConcurrentHashMap<BareJID,XMPPSession> |
sessionsByNodeId
A Map with bare user JID as a key and a user session object as a value.
|
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, 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
COMMIT_HANDLER_KEY
CMD_FEATURES, DEF_FEATURES, INFO_XMLNS, ITEMS_XMLNS
Constructor and Description |
---|
SessionManager() |
Modifier and Type | Method and Description |
---|---|
boolean |
addOutPacket(Packet packet) |
protected void |
addOutPackets(Packet packet,
XMPPResourceConnection conn,
Queue<Packet> results) |
XMPPImplIfc |
addPlugin(XMPPImplIfc proc) |
protected boolean |
addTrusted(JID jid) |
protected void |
closeConnection(XMPPResourceConnection connection,
JID connectionId,
String userId,
boolean closeOnly) |
protected void |
closeSession(XMPPResourceConnection conn,
boolean closeOnly) |
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.
|
boolean |
containsJidLocally(BareJID jid)
The method checks whether the given JID is known to local cluster node as connected user.
|
boolean |
containsJidLocally(JID jid)
The method checks whether the given JID is known to local cluster node as connected user.
|
protected XMPPResourceConnection |
createUserSession(JID conn_id,
String domain) |
protected boolean |
delTrusted(JID jid) |
void |
everyMinute()
Utility method executed precisely every minute.
|
void |
everySecond()
Utility method executed precisely every second.
|
protected boolean |
fastAddOutPacket(Packet packet) |
JID[] |
getConnectionIdsForJid(BareJID jid)
Retrieve all connection IDs (CIDs) for the given user.
|
String |
getDiscoCategoryType()
Method returns component category type used for service discovery responses.
|
String |
getDiscoDescription()
Method returns description used for service discovery responses.
|
List<Element> |
getDiscoFeatures(JID from)
Method returns list of features provided by this component for provided JID.
|
Element |
getDiscoInfo(String node,
JID jid,
JID from)
Returns service discovery info for the component.
|
List<Element> |
getDiscoItems(String node,
JID jid,
JID from)
Returns service discovery items for the component.
|
protected Integer |
getMaxQueueSize(int def) |
int |
getOpenUsersConnectionsAmount() |
Map<String,XMPPPacketFilterIfc> |
getOutFilters() |
Map<String,XMPPPostprocessorIfc> |
getPostProcessors() |
Map<String,XMPPPreprocessorIfc> |
getPreProcessors() |
Map<String,XMPPProcessorIfc> |
getProcessors() |
XMPPResourceConnection |
getResourceConnection(JID jid) |
protected XMPPSession |
getSession(BareJID jid) |
void |
getStatistics(StatisticsList list)
Method returns component statistics.
|
protected XMPPResourceConnection |
getXMPPResourceConnection(JID connId) |
protected XMPPResourceConnection |
getXMPPResourceConnection(Packet p) |
void |
handleDomainChange(String domain,
XMPPResourceConnection conn) |
void |
handleLocalPacket(Packet packet,
XMPPResourceConnection conn) |
void |
handleLogin(BareJID userId,
XMPPResourceConnection conn) |
void |
handleLogout(BareJID userId,
XMPPResourceConnection conn) |
void |
handlePresenceSet(XMPPResourceConnection conn) |
void |
handleResourceBind(XMPPResourceConnection conn) |
boolean |
handlesLocalDomains()
Indicates whether the component accepts packets to all local domains.
|
boolean |
hasCompleteJidsInfo()
Method checks whether the clustering strategy has a complete JIDs info.
|
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
|
void |
initialize()
Method will be called, when bean will be created, configured and ready to use.
|
protected boolean |
isBrokenPacket(Packet p) |
boolean |
isLocalDomain(String domain,
boolean includeComponents) |
protected XMPPResourceConnection |
loginUserSession(JID conn_id,
String domain,
BareJID user_id,
String resource,
String xmpp_sessionId,
boolean tmpSession) |
protected void |
nodeShutdown(ShutdownEvent event) |
protected boolean |
processAdminsOrDomains(Packet packet) |
protected boolean |
processCommand(Packet pc) |
int |
processingInThreads()
Concurrency control method.
|
int |
processingOutThreads()
Concurrency control method.
|
void |
processPacket(Packet packet)
This is the main
Packet processing method. |
protected void |
processPacket(Packet packet,
XMPPResourceConnection conn) |
protected void |
processPresenceUpdate(XMPPSession session,
Element packet) |
void |
register(Kernel kernel)
Method called when bean is being registered allowing developer to programatically register other beans.
|
protected void |
registerNewSession(BareJID userId,
XMPPResourceConnection conn) |
void |
removePlugin(String plug_id) |
void |
removePlugin(XMPPImplIfc proc) |
int |
schedulerThreads()
Method returns default number of threads used by SchedulerExecutorService
|
protected void |
sendToAdmins(Packet packet) |
void |
setAllPlugins(ConcurrentSkipListSet<XMPPImplIfc> allPlugins) |
void |
setName(String name)
Method used to assign component name (localpart of the component)
|
void |
setSchedulerThreads_size(int size) |
void |
setSmThreadsPool(String val) |
boolean |
skipPrivacy() |
void |
start() |
void |
stop() |
void |
unregister(Kernel kernel)
Method called while bean is being unregistered.
|
protected void |
xmppStreamMoved(XMPPResourceConnection conn,
JID oldConnId,
JID newConnId) |
addOutPacketNB, addOutPackets, addOutPacketWithTimeout, addPacket, addPacketNB, addPackets, addRegexRouting, addTimerTask, addTimerTask, addTimerTask, addTimerTask, addTimerTask, addTimerTaskWithTimeout, addTimerTaskWithTimeout, beanConfigurationChanged, clearRegexRoutings, everyHour, getRegexRoutings, isInRegexRoutings, newPacketId, processingThreads, processOutPacket, processPacket, release, removeRegexRouting, setIncomingFilters, setOutogingFilters, setParent
addComponentDomain, canCallCommand, canCallCommand, checkCommandAcl, checkCommandAcl, createScriptEngineManager, getComponentId, getComponentInfo, getDefaults, getDefHostName, getDefVHostItem, getDiscoCategory, getDiscoFeatures, getName, getNodesConnected, getNodesConnectedWithLocal, getScriptCommands, getScriptItems, getServiceEntity, getVHostItem, handlesNameSubdomains, handlesNonLocalDomains, initializationCompleted, isAdmin, isInitializationComplete, isLocalDomain, isLocalDomainOrComponent, isNonAdminCommands, isSubdomain, isTrusted, isTrusted, nodeConnected, nodeDisconnected, onNodeConnected, onNodeDisconnected, processScriptCommand, removeComponentDomain, removeServiceDiscoveryItem, setAdmins, setClusterController, setCommandsACL, setProperties, setScriptsBaseDir, setVHostManager, updateServiceDiscoveryItem, updateServiceDiscoveryItem, updateServiceDiscoveryItem, updateServiceEntity
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
getDefaults, setProperties
getComponentId, getComponentInfo, getName, initializationCompleted, isInitializationComplete, processPacket, release
getComponentId
getName
getDefHostName
protected static final String ADMIN_COMMAND_NODE
protected ConcurrentHashMap<JID,XMPPResourceConnection> connectionsByFrom
protected ConcurrentHashMap<BareJID,XMPPSession> sessionsByNodeId
public boolean addOutPacket(Packet packet)
addOutPacket
in class AbstractMessageReceiver
public XMPPImplIfc addPlugin(XMPPImplIfc proc) throws ClassNotFoundException, InstantiationException, IllegalAccessException, TigaseDBException
public boolean containsJid(BareJID jid)
OnlineJidsReporter
containsJid
in interface OnlineJidsReporter
jid
- a user's JID for whom we query information.public boolean containsJidLocally(BareJID jid)
OnlineJidsReporter
containsJidLocally
in interface OnlineJidsReporter
jid
- a user's JID for whom we query informationpublic boolean containsJidLocally(JID jid)
OnlineJidsReporter
containsJidLocally
in interface OnlineJidsReporter
jid
- a user's JID for whom we query informationpublic void handleLocalPacket(Packet packet, XMPPResourceConnection conn)
public void handleLogin(BareJID userId, XMPPResourceConnection conn)
handleLogin
in interface SessionManagerHandler
public void handleLogout(BareJID userId, XMPPResourceConnection conn)
handleLogout
in interface SessionManagerHandler
public void handlePresenceSet(XMPPResourceConnection conn)
handlePresenceSet
in interface SessionManagerHandler
public void handleResourceBind(XMPPResourceConnection conn)
handleResourceBind
in interface SessionManagerHandler
public boolean handlesLocalDomains()
VHostListener
handlesLocalDomains
in interface VHostListener
handlesLocalDomains
in class BasicComponent
public int hashCodeForPacket(Packet packet)
AbstractMessageReceiver
int threadNo = Math.abs(hashCodeForPacket(packet) % N);
hashCodeForPacket
in class AbstractMessageReceiver
packet
- is a Packet
which needs to be processed by some thread.public void initBindings(Bindings binds)
BasicComponent
initBindings
in class BasicComponent
binds
- A mapping of key/value pairs, all of whose keys are Strings.public int processingInThreads()
AbstractMessageReceiver
processingInThreads
in class AbstractMessageReceiver
public int processingOutThreads()
AbstractMessageReceiver
processingOutThreads
in class AbstractMessageReceiver
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 AbstractMessageReceiver
packet
- is an instance of the Packet
class passed for processing.public void removePlugin(XMPPImplIfc proc)
public void removePlugin(String plug_id)
public boolean skipPrivacy()
public void start()
start
in interface MessageReceiver
start
in class AbstractMessageReceiver
public void stop()
stop
in class AbstractMessageReceiver
public JID[] getConnectionIdsForJid(BareJID jid)
OnlineJidsReporter
getConnectionIdsForJid
in interface OnlineJidsReporter
jid
- id of the user for which we want to retrieve the list.JID
containing all Connection IDs (CIDs) for the given user.public String getDiscoCategoryType()
BasicComponent
getDiscoCategoryType
in class BasicComponent
public String getDiscoDescription()
BasicComponent
getDiscoDescription
in class BasicComponent
public List<Element> getDiscoFeatures(JID from)
BasicComponent
getDiscoFeatures
in interface XMPPService
getDiscoFeatures
in class BasicComponent
from
- a request sender address. Some service disco elements are meant to be available only to system
administrarors. The component is responsible to check whether the sender is the component administrator and
return results appropriate.public Element getDiscoInfo(String node, JID jid, JID from)
XMPPService
getDiscoInfo
in interface XMPPService
getDiscoInfo
in class BasicComponent
node
- is service discovery node for which the request is made. Is normally null for the component top level
request.jid
- is the jid to which the request has been made.from
- is the request sender address. Some service discovery information is only meant for administrators.public List<Element> getDiscoItems(String node, JID jid, JID from)
XMPPService
getDiscoItems
in interface XMPPService
getDiscoItems
in class BasicComponent
node
- is a service discovery node for which the request has been made.jid
- is the jid to which the request has been made.from
- is the request sender address. Some service discovery information is only meant for administrators.public XMPPResourceConnection getResourceConnection(JID jid)
public int getOpenUsersConnectionsAmount()
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 AbstractMessageReceiver
list
- is a StatistcsList
where all statistics are stored.public boolean hasCompleteJidsInfo()
OnlineJidsReporter
hasCompleteJidsInfo
in interface OnlineJidsReporter
public boolean isLocalDomain(String domain, boolean includeComponents)
isLocalDomain
in interface SessionManagerHandler
public void setName(String name)
ServerComponent
setName
in interface ServerComponent
setName
in class AbstractMessageReceiver
public void setAllPlugins(ConcurrentSkipListSet<XMPPImplIfc> allPlugins)
public void setSmThreadsPool(String val)
public void initialize()
Initializable
initialize
in interface Initializable
initialize
in class BasicComponent
public void setSchedulerThreads_size(int size)
setSchedulerThreads_size
in class AbstractMessageReceiver
public int schedulerThreads()
AbstractMessageReceiver
schedulerThreads
in class AbstractMessageReceiver
int
public void register(Kernel kernel)
RegistrarBean
register
in interface RegistrarBean
kernel
- - instance from local scopepublic void unregister(Kernel kernel)
RegistrarBean
unregister
in interface RegistrarBean
kernel
- - instance from local scopepublic Map<String,XMPPProcessorIfc> getProcessors()
public Map<String,XMPPPreprocessorIfc> getPreProcessors()
public Map<String,XMPPPostprocessorIfc> getPostProcessors()
public Map<String,XMPPPacketFilterIfc> getOutFilters()
public void everySecond()
AbstractMessageReceiver
everySecond
in class AbstractMessageReceiver
public void everyMinute()
AbstractMessageReceiver
everyMinute
in class AbstractMessageReceiver
public void handleDomainChange(String domain, XMPPResourceConnection conn)
handleDomainChange
in interface SessionManagerHandler
protected void addOutPackets(Packet packet, XMPPResourceConnection conn, Queue<Packet> results)
protected boolean addTrusted(JID jid)
protected void closeConnection(XMPPResourceConnection connection, JID connectionId, String userId, boolean closeOnly)
protected void closeSession(XMPPResourceConnection conn, boolean closeOnly)
protected XMPPResourceConnection createUserSession(JID conn_id, String domain) throws TigaseStringprepException
TigaseStringprepException
protected boolean delTrusted(JID jid)
protected boolean fastAddOutPacket(Packet packet)
protected XMPPResourceConnection loginUserSession(JID conn_id, String domain, BareJID user_id, String resource, String xmpp_sessionId, boolean tmpSession)
protected boolean processAdminsOrDomains(Packet packet)
protected boolean processCommand(Packet pc)
protected void processPacket(Packet packet, XMPPResourceConnection conn)
protected void processPresenceUpdate(XMPPSession session, Element packet)
protected void registerNewSession(BareJID userId, XMPPResourceConnection conn)
protected void sendToAdmins(Packet packet)
@HandleEvent protected void nodeShutdown(ShutdownEvent event)
protected void xmppStreamMoved(XMPPResourceConnection conn, JID oldConnId, JID newConnId)
protected Integer getMaxQueueSize(int def)
getMaxQueueSize
in class AbstractMessageReceiver
protected XMPPSession getSession(BareJID jid)
protected XMPPResourceConnection getXMPPResourceConnection(JID connId)
protected XMPPResourceConnection getXMPPResourceConnection(Packet p)
protected boolean isBrokenPacket(Packet p)
Copyright © 2004–2019 "Tigase, Inc.". All rights reserved.