@Bean(name="sess-man", parent=Kernel.class, active=true, exportable=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 |
BasicComponent.ServerInfoVHostItemExtensionPacketWriterWithTimeout.Handler| 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, SECONDadmins, ALL_PROP_KEY, COMMAND_PROP_NODE, scriptCommands, scriptEngineManager, SCRIPTS_DIR_PROP_DEF, SCRIPTS_DIR_PROP_KEY, trusted, vHostManagerADMINS_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_ACKCOMMIT_HANDLER_KEYCMD_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, addOutPacketWithTimeout, addPacket, addPacketNB, addPackets, addRegexRouting, addTimerTask, addTimerTask, addTimerTask, addTimerTaskWithTimeout, addTimerTaskWithTimeout, beanConfigurationChanged, clearRegexRoutings, everyHour, getRegexRoutings, getResourceForPacketWithTimeout, isInRegexRoutings, newPacketId, processOutPacket, processPacket, release, removeRegexRouting, setCompId, setIncomingFilters, setOutogingFilters, setParentaddComponentDomain, canCallCommand, canCallCommand, checkCommandAcl, checkCommandAcl, createScriptEngineManager, getComponentId, getComponentInfo, 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, onNodeConnected, onNodeDisconnected, processScriptCommand, removeComponentDomain, removeServiceDiscoveryItem, setAdmins, setClusterController, setCommandsACL, setProperties, setScriptsBaseDir, setVHostManager, updateServiceDiscoveryItem, updateServiceDiscoveryItem, updateServiceDiscoveryItem, updateServiceEntityclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitgetDefaults, setPropertiesgetComponentId, getComponentInfo, getName, initializationCompleted, isInitializationComplete, processPacket, releasegetComponentIdgetNamegetDefHostNameprotected static final String ADMIN_COMMAND_NODE
protected ConcurrentHashMap<JID,XMPPResourceConnection> connectionsByFrom
protected ConcurrentHashMap<BareJID,XMPPSession> sessionsByNodeId
public boolean addOutPacket(Packet packet)
addOutPacket in class AbstractMessageReceiverpublic XMPPImplIfc addPlugin(XMPPImplIfc proc) throws ClassNotFoundException, InstantiationException, IllegalAccessException, TigaseDBException
public boolean containsJid(BareJID jid)
OnlineJidsReportercontainsJid in interface OnlineJidsReporterjid - a user's JID for whom we query information.public boolean containsJidLocally(BareJID jid)
OnlineJidsReportercontainsJidLocally in interface OnlineJidsReporterjid - a user's JID for whom we query informationpublic boolean containsJidLocally(JID jid)
OnlineJidsReportercontainsJidLocally in interface OnlineJidsReporterjid - 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 SessionManagerHandlerpublic void handleLogout(BareJID userId, XMPPResourceConnection conn)
handleLogout in interface SessionManagerHandlerpublic void handlePresenceSet(XMPPResourceConnection conn)
handlePresenceSet in interface SessionManagerHandlerpublic void handleResourceBind(XMPPResourceConnection conn)
handleResourceBind in interface SessionManagerHandlerpublic boolean handlesLocalDomains()
VHostListenerhandlesLocalDomains in interface VHostListenerhandlesLocalDomains in class BasicComponentpublic int hashCodeForPacket(Packet packet)
AbstractMessageReceiverint threadNo = Math.abs(hashCodeForPacket(packet) % N);
hashCodeForPacket in class AbstractMessageReceiverpacket - is a Packet which needs to be processed by some thread.public void initBindings(Bindings binds)
BasicComponentinitBindings in class BasicComponentbinds - A mapping of key/value pairs, all of whose keys are Strings.public int processingInThreads()
AbstractMessageReceiverprocessingInThreads in class AbstractMessageReceiverpublic int processingOutThreads()
AbstractMessageReceiverprocessingOutThreads in class AbstractMessageReceiverpublic void processPacket(Packet packet)
AbstractMessageReceiverPacket 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 AbstractMessageReceiverpacket - 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 MessageReceiverstart in class AbstractMessageReceiverpublic void stop()
stop in class AbstractMessageReceiverpublic JID[] getConnectionIdsForJid(BareJID jid)
OnlineJidsReportergetConnectionIdsForJid in interface OnlineJidsReporterjid - 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()
BasicComponentgetDiscoCategoryType in class BasicComponentpublic String getDiscoDescription()
BasicComponentgetDiscoDescription in class BasicComponentpublic List<Element> getDiscoFeatures(JID from)
BasicComponentgetDiscoFeatures in interface XMPPServicegetDiscoFeatures in class BasicComponentfrom - 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)
XMPPServicegetDiscoInfo in interface XMPPServicegetDiscoInfo in class BasicComponentnode - 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)
XMPPServicegetDiscoItems in interface XMPPServicegetDiscoItems in class BasicComponentnode - 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)
AbstractMessageReceiverLevel.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 StatisticsContainerIfcgetStatistics in class AbstractMessageReceiverlist - is a StatistcsList where all statistics are stored.public boolean hasCompleteJidsInfo()
OnlineJidsReporterhasCompleteJidsInfo in interface OnlineJidsReporterpublic boolean isLocalDomain(String domain, boolean includeComponents)
isLocalDomain in interface SessionManagerHandlerpublic void setName(String name)
ServerComponentsetName in interface ServerComponentsetName in class AbstractMessageReceivername - to be assignedpublic void setAllPlugins(ConcurrentSkipListSet<XMPPImplIfc> allPlugins)
public void setSmThreadsPool(String val)
public void initialize()
Initializableinitialize in interface Initializableinitialize in class BasicComponentpublic void setSchedulerThreads_size(int size)
setSchedulerThreads_size in class AbstractMessageReceiverpublic int schedulerThreads()
AbstractMessageReceiverschedulerThreads in class AbstractMessageReceiverintpublic void register(Kernel kernel)
RegistrarBeanregister in interface RegistrarBeankernel - - instance from local scopepublic void unregister(Kernel kernel)
RegistrarBeanunregister in interface RegistrarBeankernel - - 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()
AbstractMessageReceivereverySecond in class AbstractMessageReceiverpublic void everyMinute()
AbstractMessageReceivereveryMinute in class AbstractMessageReceiverpublic void handleDomainChange(String domain, XMPPResourceConnection conn)
handleDomainChange in interface SessionManagerHandlerprotected 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
TigaseStringprepExceptionprotected 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 AbstractMessageReceiverprotected XMPPSession getSession(BareJID jid)
protected XMPPResourceConnection getXMPPResourceConnection(JID connId)
protected XMPPResourceConnection getXMPPResourceConnection(Packet p)
protected boolean isBrokenPacket(Packet p)
Copyright © 2004–2021 "Tigase, Inc.". All rights reserved.