@Bean(name="bosh", parent=Kernel.class, active=true) @ConfigType(value={DefaultMode,ConnectionManagersMode}) @ClusterModeRequired(active=false) public class BoshConnectionManager extends ClientConnectionManager implements BoshSessionTaskHandler, BoshIOService.ConfigProvider
Modifier and Type | Class and Description |
---|---|
protected static class |
BoshConnectionManager.BOSH_OPERATION_TYPE |
ConnectionManager.LIMIT_ACTION, ConnectionManager.PortConfigBean, ConnectionManager.PortsConfigBean, ConnectionManager.SecPortConfigBean, ConnectionManager.Watchdog, ConnectionManager.WATCHDOG_PING_TYPE
Modifier and Type | Field and Description |
---|---|
static String |
BOSH_CLOSE_CONNECTION_PROP_KEY |
static String |
BOSH_EXTRA_HEADERS_FILE_PROP_KEY |
static String |
BOSH_EXTRA_HEADERS_FILE_PROP_VAL |
static String |
CLIENT_ACCESS_POLICY_FILE_PROP_KEY |
static String |
CLIENT_ACCESS_POLICY_FILE_PROP_VAL |
protected Map<UUID,BoshSession> |
sessions |
eventBus, FORCE_REDIRECT_TO_KEY, routings, see_other_host_strategy
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, 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, 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 |
---|
BoshConnectionManager() |
Modifier and Type | Method and Description |
---|---|
protected void |
addOutPackets(Queue<Packet> out_results,
BoshSession bs)
Method adds packets to the output queue stamping it with the appropriate
BoshSession data |
boolean |
addOutStreamClosed(Packet packet,
BoshSession bs,
boolean withTimeout) |
boolean |
addOutStreamOpen(Packet packet,
BoshSession bs) |
void |
cancelSendQueueTask(BoshSendQueueTask tt) |
void |
cancelTask(BoshTask tt) |
protected JID |
changeDataReceiver(Packet packet,
JID newAddress,
String command_sessionId,
XMPPIOService<Object> serv) |
protected BoshSession |
getBoshSession(JID jid)
Method retrieves
BoshSession related to the particular user address |
String |
getClientAccessPolicy() |
protected int[] |
getDefPlainPorts() |
protected int[] |
getDefSSLPorts() |
String |
getDiscoCategoryType()
Method returns component category type used for service discovery responses.
|
String |
getDiscoDescription()
Method returns description used for service discovery responses.
|
String |
getExtraHeaders() |
JID |
getJidForBoshSession(BoshSession bs)
Returns full jid of passed BoshSession instance
|
protected long |
getMaxInactiveTime()
Method
getMaxInactiveTime returns max keep-alive time for inactive connection. |
Element |
getSeeOtherHostError(Packet packet,
BareJID destination) |
BareJID |
getSeeOtherHostForJID(Packet packet,
BareJID fromJID,
SeeOtherHostIfc.Phase ph) |
void |
getStatistics(StatisticsList list)
Method returns component statistics.
|
protected BoshIOService |
getXMPPIOServiceInstance() |
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.
|
boolean |
isCloseConnections() |
protected ReceiverTimeoutHandler |
newStartedHandler() |
protected Map<String,String> |
preBindSession(Map<String,String> attr) |
protected void |
processCommand(Packet packet) |
void |
processPacket(Packet packet)
This is the main
Packet processing method. |
Queue<Packet> |
processSocketData(XMPPIOService<Object> srv) |
BoshSendQueueTask |
scheduleSendQueueTask(BoshSession bs,
long delay) |
BoshTask |
scheduleTask(BoshSession bs,
long delay) |
void |
serviceStarted(XMPPIOService<Object> service) |
boolean |
serviceStopped(XMPPIOService<Object> xmppService) |
void |
setClientAccessPolicyFile(String clientAccessPolicyFile) |
void |
setExtraHeadersFile(String extraHeadersFile) |
void |
setSidLoggerLevel(String loggerLevel) |
protected static void |
setupSidlogger(Level lvl) |
protected void |
setupWatchdogThread() |
protected boolean |
writePacketToSocket(Packet packet) |
void |
writeRawData(BoshIOService ios,
String data) |
void |
xmppStreamClosed(XMPPIOService<Object> serv) |
String[] |
xmppStreamOpened(XMPPIOService<Object> serv,
Map<String,String> attribs) |
getClientTrustManagerFactory, getMaxQueueSize, getSeeOtherHostInstance, hashCodeForPacket, isAllowed, newStoppedHandler, nodeShutdown, prepareSeeOtherHost, prepareStreamClose, prepareStreamError, prepareStreamError, prepareStreamOpen, preprocessStreamFeatures, processUndeliveredPacket, reconnectionFailed, schedulerThreads, setRegistrationThrottling, setSee_other_host_strategy, socketAccepted, start, stop, tlsHandshakeCompleted, xmppStreamError
addWaitingTask, beanConfigurationChanged, checkHighThroughputProperty, checkTrafficLimits, connectWaitingTasks, countIOServices, doForAllServices, everyMinute, getDefPorts, getDefTrafficThrottling, getFlashCrossDomainPolicy, getNet_buffer_limit, getParamsForPort, getServiceId, getServiceId, getTrafficThrottling, getUniqueId, getXMPPIOService, getXMPPIOService, initializationCompleted, isHighThroughput, newWatchdog, packetsReady, processingInThreads, processingOutThreads, register, release, releaseListener, setFlashCrossDomainPolicyFile, setName, setNet_buffer_limit, setProcessors, setTrafficThrottling, startService, unregister, updateConnectionDetails, writePacketsToSocket, writePacketToSocket, writePacketToSocket, writeRawData
addOutPacket, addOutPacketNB, addOutPackets, addOutPacketWithTimeout, addPacket, addPacketNB, addPackets, addRegexRouting, addTimerTask, addTimerTask, addTimerTask, addTimerTask, addTimerTask, addTimerTaskWithTimeout, addTimerTaskWithTimeout, clearRegexRoutings, everyHour, everySecond, getRegexRoutings, isInRegexRoutings, newPacketId, processingThreads, processOutPacket, processPacket, removeRegexRouting, setIncomingFilters, setOutogingFilters, setParent, setSchedulerThreads_size
addComponentDomain, canCallCommand, canCallCommand, checkCommandAcl, checkCommandAcl, createScriptEngineManager, getComponentId, getComponentInfo, getDefaults, getDefHostName, getDefVHostItem, getDiscoCategory, getDiscoFeatures, getDiscoFeatures, getDiscoInfo, getDiscoItems, getName, getNodesConnected, getNodesConnectedWithLocal, getScriptCommands, getScriptItems, getServiceEntity, getVHostItem, handlesLocalDomains, handlesNameSubdomains, handlesNonLocalDomains, 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
getDefHostName, processUndeliveredPacket
getName
getDefHostName
getComponentId, getComponentInfo, getName, isInitializationComplete
public static final String BOSH_CLOSE_CONNECTION_PROP_KEY
public static final String BOSH_EXTRA_HEADERS_FILE_PROP_KEY
public static final String BOSH_EXTRA_HEADERS_FILE_PROP_VAL
public static final String CLIENT_ACCESS_POLICY_FILE_PROP_KEY
public static final String CLIENT_ACCESS_POLICY_FILE_PROP_VAL
protected final Map<UUID,BoshSession> sessions
protected static void setupSidlogger(Level lvl)
public boolean addOutStreamClosed(Packet packet, BoshSession bs, boolean withTimeout)
addOutStreamClosed
in interface BoshSessionTaskHandler
public boolean addOutStreamOpen(Packet packet, BoshSession bs)
addOutStreamOpen
in interface BoshSessionTaskHandler
public void cancelSendQueueTask(BoshSendQueueTask tt)
cancelSendQueueTask
in interface BoshSessionTaskHandler
public void cancelTask(BoshTask tt)
cancelTask
in interface BoshSessionTaskHandler
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 ClientConnectionManager
packet
- is an instance of the Packet
class passed for processing.public Queue<Packet> processSocketData(XMPPIOService<Object> srv)
processSocketData
in class ClientConnectionManager
public BoshSendQueueTask scheduleSendQueueTask(BoshSession bs, long delay)
scheduleSendQueueTask
in interface BoshSessionTaskHandler
public BoshTask scheduleTask(BoshSession bs, long delay)
scheduleTask
in interface BoshSessionTaskHandler
public void serviceStarted(XMPPIOService<Object> service)
serviceStarted
in class ClientConnectionManager
public boolean serviceStopped(XMPPIOService<Object> xmppService)
serviceStopped
in interface IOServiceListener<XMPPIOService<Object>>
serviceStopped
in class ClientConnectionManager
public void writeRawData(BoshIOService ios, String data)
writeRawData
in interface BoshSessionTaskHandler
public void xmppStreamClosed(XMPPIOService<Object> serv)
xmppStreamClosed
in interface XMPPIOServiceListener<XMPPIOService<Object>>
xmppStreamClosed
in class ClientConnectionManager
public String[] xmppStreamOpened(XMPPIOService<Object> serv, Map<String,String> attribs)
xmppStreamOpened
in interface XMPPIOServiceListener<XMPPIOService<Object>>
xmppStreamOpened
in class ClientConnectionManager
public String getDiscoCategoryType()
BasicComponent
getDiscoCategoryType
in class ClientConnectionManager
public String getDiscoDescription()
BasicComponent
getDiscoDescription
in class ClientConnectionManager
public JID getJidForBoshSession(BoshSession bs)
getJidForBoshSession
in interface BoshSessionTaskHandler
bs
- BoshSession
for which JID should be retrievedBoshSession
public Element getSeeOtherHostError(Packet packet, BareJID destination)
getSeeOtherHostError
in interface BoshSessionTaskHandler
public BareJID getSeeOtherHostForJID(Packet packet, BareJID fromJID, SeeOtherHostIfc.Phase ph)
getSeeOtherHostForJID
in interface BoshSessionTaskHandler
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 setSidLoggerLevel(String loggerLevel)
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 initialize()
Initializable
initialize
in interface Initializable
initialize
in class BasicComponent
public boolean isCloseConnections()
isCloseConnections
in interface BoshIOService.ConfigProvider
public String getClientAccessPolicy()
getClientAccessPolicy
in interface BoshIOService.ConfigProvider
public void setClientAccessPolicyFile(String clientAccessPolicyFile)
public String getExtraHeaders()
getExtraHeaders
in interface BoshIOService.ConfigProvider
public void setExtraHeadersFile(String extraHeadersFile)
protected void setupWatchdogThread()
setupWatchdogThread
in class ConnectionManager<XMPPIOService<Object>>
protected void addOutPackets(Queue<Packet> out_results, BoshSession bs)
BoshSession
dataout_results
- collection of Packet
objects to be added to queuebs
- related BoshSession
protected JID changeDataReceiver(Packet packet, JID newAddress, String command_sessionId, XMPPIOService<Object> serv)
changeDataReceiver
in class ClientConnectionManager
protected ReceiverTimeoutHandler newStartedHandler()
newStartedHandler
in class ClientConnectionManager
protected void processCommand(Packet packet)
processCommand
in class ClientConnectionManager
protected boolean writePacketToSocket(Packet packet)
writePacketToSocket
in class ConnectionManager<XMPPIOService<Object>>
protected BoshSession getBoshSession(JID jid)
BoshSession
related to the particular user addressjid
- address for which BoshSession
should be returnedBoshSession
protected int[] getDefPlainPorts()
getDefPlainPorts
in class ClientConnectionManager
protected int[] getDefSSLPorts()
getDefSSLPorts
in class ClientConnectionManager
protected long getMaxInactiveTime()
getMaxInactiveTime
returns max keep-alive time for inactive connection. For Bosh it does not
make sense to keep the idle connection longer than 10 minutes.getMaxInactiveTime
in class ClientConnectionManager
long
valueprotected BoshIOService getXMPPIOServiceInstance()
getXMPPIOServiceInstance
in class ClientConnectionManager
Copyright © 2004–2019 "Tigase, Inc.". All rights reserved.