Package tigase.server.bosh
Class BoshConnectionManager
java.lang.Object
tigase.server.BasicComponent
tigase.server.AbstractMessageReceiver
tigase.server.ConnectionManager<XMPPIOService<Object>>
tigase.server.xmppclient.ClientConnectionManager
tigase.server.bosh.BoshConnectionManager
- All Implemented Interfaces:
ClusteredComponentIfc,Configurable,XMPPService,ConfigurationChangedAware,Initializable,RegistrarBean,IOServiceListener<XMPPIOService<Object>>,BoshIOService.ConfigProvider,BoshSessionTaskHandler,MessageReceiver,PacketWriterWithTimeout,ServerComponent,StatisticsContainer,StatisticsContainerIfc,VHostListener,XMPPIOServiceListener<XMPPIOService<Object>>
- Direct Known Subclasses:
BoshConnectionClustered
@Bean(name="bosh",
parent=Kernel.class,
active=true)
@ConfigType({DefaultMode,ConnectionManagersMode})
@ClusterModeRequired(active=false)
public class BoshConnectionManager
extends ClientConnectionManager
implements BoshSessionTaskHandler, BoshIOService.ConfigProvider
Describe class BoshConnectionManager here.
Created: Sat Jun 2 12:24:29 2007
Created: Sat Jun 2 12:24:29 2007
- Author:
- Artur Hefczyc
-
Nested Class Summary
Nested ClassesNested classes/interfaces inherited from class tigase.server.ConnectionManager
ConnectionManager.LIMIT_ACTION, ConnectionManager.PortConfigBean, ConnectionManager.PortsConfigBean, ConnectionManager.SecPortConfigBean, ConnectionManager.Watchdog, ConnectionManager.WATCHDOG_PING_TYPENested classes/interfaces inherited from class tigase.server.BasicComponent
BasicComponent.ServerInfoVHostItemExtensionNested classes/interfaces inherited from interface tigase.server.PacketWriterWithTimeout
PacketWriterWithTimeout.Handler -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringprotected final Map<UUID, BoshSession> Fields inherited from class tigase.server.xmppclient.ClientConnectionManager
eventBus, FORCE_REDIRECT_TO_KEY, routings, see_other_host_strategyFields inherited from class tigase.server.ConnectionManager
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_ST_PROP_VAL, 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, SOCKET_BUFFER_HT_PROP_VAL, SOCKET_BUFFER_ST_PROP_VAL, 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_VALFields inherited from class tigase.server.AbstractMessageReceiver
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, SECONDFields inherited from class tigase.server.BasicComponent
admins, ALL_PROP_KEY, COMMAND_PROP_NODE, scriptCommands, scriptEngineManager, SCRIPTS_DIR_PROP_DEF, SCRIPTS_DIR_PROP_KEY, trusted, vHostManagerFields inherited from interface tigase.conf.Configurable
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_ACKFields inherited from interface tigase.disco.XMPPService
CMD_FEATURES, DEF_FEATURES, INFO_XMLNS, ITEMS_XMLNS -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected voidaddOutPackets(Queue<Packet> out_results, BoshSession bs) Method adds packets to the output queue stamping it with the appropriateBoshSessiondatabooleanaddOutStreamClosed(Packet packet, BoshSession bs, boolean withTimeout) booleanaddOutStreamOpen(Packet packet, BoshSession bs) voidvoidcancelTask(BoshTask tt) protected JIDchangeDataReceiver(Packet packet, JID newAddress, String command_sessionId, XMPPIOService<Object> serv) protected booleanenableServiceConnectedTimeout(XMPPIOService<Object> service) protected BoshSessiongetBoshSession(JID jid) Method retrievesBoshSessionrelated to the particular user addressprotected int[]protected int[]Method returns component category type used for service discovery responses.Method returns description used for service discovery responses.Returns full jid of passed BoshSession instanceprotected longMethodgetMaxInactiveTimereturns max keep-alive time for inactive connection.getSeeOtherHostError(Packet packet, BareJID destination) getSeeOtherHostForJID(Packet packet, BareJID fromJID, SeeOtherHostIfc.Phase ph) voidgetStatistics(StatisticsList list) Method returns component statistics.protected BoshIOServicevoidinitBindings(Bindings binds) Initialize a mapping of key/value pairs which can be used in scripts loaded by the servervoidMethod will be called, when bean will be created, configured and ready to use.booleanprotected ReceiverTimeoutHandlerpreBindSession(Map<String, String> attr) protected voidprocessCommand(Packet packet) voidprocessPacket(Packet packet) This is the mainPacketprocessing method.scheduleSendQueueTask(BoshSession bs, long delay) scheduleTask(BoshSession bs, long delay) voidserviceStarted(XMPPIOService<Object> service) booleanserviceStopped(XMPPIOService<Object> xmppService) voidsetClientAccessPolicyFile(String clientAccessPolicyFile) voidsetExtraHeadersFile(String extraHeadersFile) voidsetSidLoggerLevel(String loggerLevel) protected static voidsetupSidlogger(Level lvl) protected voidprotected booleanwritePacketToSocket(Packet packet) voidwriteRawData(BoshIOService ios, String data) voidxmppStreamClosed(XMPPIOService<Object> serv) String[]xmppStreamOpened(XMPPIOService<Object> serv, Map<String, String> attribs) Methods inherited from class tigase.server.xmppclient.ClientConnectionManager
getClientTrustManagerFactory, getMaxQueueSize, getSeeOtherHostInstance, hashCodeForPacket, isAllowed, newStoppedHandler, nodeShutdown, prepareSeeOtherHost, prepareStreamClose, prepareStreamError, prepareStreamError, prepareStreamOpen, preprocessStreamFeatures, processUndeliveredPacket, reconnectionFailed, schedulerThreads, setRegistrationThrottling, setSee_other_host_strategy, shouldRedeliverWaitingPackets, socketAccepted, start, stop, tlsHandshakeCompleted, xmppStreamErrorMethods inherited from class tigase.server.ConnectionManager
addWaitingTask, beanConfigurationChanged, checkHighThroughputProperty, checkTrafficLimits, connectWaitingTasks, countIOServices, doForAllServices, everyMinute, getDefPorts, getDefTrafficThrottling, getFlashCrossDomainPolicy, getNet_buffer_limit, getParamsForPort, getPortsConfigBean, getServiceId, getServiceId, getTrafficThrottling, getUniqueId, getXMPPIOService, getXMPPIOService, initializationCompleted, isHighThroughput, newWatchdog, packetsReady, processingInThreads, processingOutThreads, redeliverWaitingPackets, register, release, releaseListener, serviceConnected, setFlashCrossDomainPolicyFile, setName, setNet_buffer_limit, setProcessors, setTrafficThrottling, setWatchdogPingType, startService, unregister, updateConnectionDetails, writePacketsToSocket, writePacketToSocket, writePacketToSocket, writeRawDataMethods inherited from class tigase.server.AbstractMessageReceiver
addOutPacket, addOutPacketNB, addOutPackets, addOutPacketWithTimeout, addOutPacketWithTimeout, addPacket, addPacketNB, addPackets, addRegexRouting, addTimerTask, addTimerTask, addTimerTask, addTimerTaskWithTimeout, addTimerTaskWithTimeout, clearRegexRoutings, everyHour, everySecond, getRegexRoutings, getResourceForPacketWithTimeout, isInRegexRoutings, newPacketId, processOutPacket, processPacket, removeRegexRouting, setCompId, setIncoming_filters, setOutgoing_filters, setParent, setSchedulerThreads_size, updateFiltersNameMethods inherited from class tigase.server.BasicComponent
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, isAdmin, isInitializationComplete, isLocalDomain, isLocalDomainOrComponent, isNonAdminCommands, isSubdomain, isTrusted, isTrusted, nodeConnected, nodeDisconnected, onNodeConnected, onNodeDisconnected, processScriptCommand, reloadScripts, removeComponentDomain, removeServiceDiscoveryItem, setAdmins, setClusterController, setCommandsACL, setProperties, setScriptsBaseDir, setVHostManager, updateServiceDiscoveryItem, updateServiceDiscoveryItem, updateServiceDiscoveryItem, updateServiceEntityMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface tigase.server.bosh.BoshSessionTaskHandler
getDefHostName, processUndeliveredPacketMethods inherited from interface tigase.server.MessageReceiver
getDefHostNameMethods inherited from interface tigase.server.ServerComponent
getComponentId, getComponentInfo, getName, isInitializationCompleteMethods inherited from interface tigase.stats.StatisticsContainerIfc
getName
-
Field Details
-
BOSH_CLOSE_CONNECTION_PROP_KEY
- See Also:
-
BOSH_EXTRA_HEADERS_FILE_PROP_KEY
- See Also:
-
BOSH_EXTRA_HEADERS_FILE_PROP_VAL
- See Also:
-
CLIENT_ACCESS_POLICY_FILE_PROP_KEY
- See Also:
-
CLIENT_ACCESS_POLICY_FILE_PROP_VAL
- See Also:
-
sessions
-
-
Constructor Details
-
BoshConnectionManager
public BoshConnectionManager()
-
-
Method Details
-
setupSidlogger
-
addOutStreamClosed
- Specified by:
addOutStreamClosedin interfaceBoshSessionTaskHandler
-
addOutStreamOpen
- Specified by:
addOutStreamOpenin interfaceBoshSessionTaskHandler
-
cancelSendQueueTask
- Specified by:
cancelSendQueueTaskin interfaceBoshSessionTaskHandler
-
cancelTask
- Specified by:
cancelTaskin interfaceBoshSessionTaskHandler
-
enableServiceConnectedTimeout
- Overrides:
enableServiceConnectedTimeoutin classConnectionManager<XMPPIOService<Object>>
-
processPacket
Description copied from class:AbstractMessageReceiverThis is the mainPacketprocessing 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.
Please note, thePacketinstance may be processed by different parts of the server, different components or plugins at the same time. Therefore this is very important to tread thePacketinstance as unmodifiable object.
Processing in this method is asynchronous, therefore there is no result value. If there are some 'result' packets generated during processing, they should be passed back usingaddOutPacket(Packet)method.- Overrides:
processPacketin classClientConnectionManager- Parameters:
packet- is an instance of thePacketclass passed for processing.
-
processSocketData
- Overrides:
processSocketDatain classClientConnectionManager
-
scheduleSendQueueTask
- Specified by:
scheduleSendQueueTaskin interfaceBoshSessionTaskHandler
-
scheduleTask
- Specified by:
scheduleTaskin interfaceBoshSessionTaskHandler
-
serviceStarted
- Overrides:
serviceStartedin classClientConnectionManager
-
serviceStopped
- Specified by:
serviceStoppedin interfaceIOServiceListener<XMPPIOService<Object>>- Overrides:
serviceStoppedin classClientConnectionManager
-
writeRawData
- Specified by:
writeRawDatain interfaceBoshSessionTaskHandler
-
xmppStreamClosed
- Specified by:
xmppStreamClosedin interfaceXMPPIOServiceListener<XMPPIOService<Object>>- Overrides:
xmppStreamClosedin classClientConnectionManager
-
xmppStreamOpened
- Specified by:
xmppStreamOpenedin interfaceXMPPIOServiceListener<XMPPIOService<Object>>- Overrides:
xmppStreamOpenedin classClientConnectionManager
-
getDiscoCategoryType
Description copied from class:BasicComponentMethod returns component category type used for service discovery responses.- Overrides:
getDiscoCategoryTypein classClientConnectionManager- Returns:
- category type of a component
-
getDiscoDescription
Description copied from class:BasicComponentMethod returns description used for service discovery responses.- Overrides:
getDiscoDescriptionin classClientConnectionManager- Returns:
- description of a component
-
getJidForBoshSession
Returns full jid of passed BoshSession instance- Specified by:
getJidForBoshSessionin interfaceBoshSessionTaskHandler- Parameters:
bs-BoshSessionfor which JID should be retrieved- Returns:
- JID address related to particular
BoshSession
-
getSeeOtherHostError
- Specified by:
getSeeOtherHostErrorin interfaceBoshSessionTaskHandler
-
getSeeOtherHostForJID
- Specified by:
getSeeOtherHostForJIDin interfaceBoshSessionTaskHandler
-
getStatistics
Description copied from class:AbstractMessageReceiverMethod returns component statistics. Please note, the method can be called every second by the server monitoring system therefore no extensive or lengthy calculations are allowed. If there are some statistics requiring lengthy operations like database access they must haveLevel.FINESTassigned and must be put inside the level guard to prevent generating them by the system monitor. The system monitor does not collectFINESTstatistics.
Level guard code looks like the example below:
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.- Specified by:
getStatisticsin interfaceStatisticsContainerIfc- Overrides:
getStatisticsin classConnectionManager<XMPPIOService<Object>>- Parameters:
list- is aStatistcsListwhere all statistics are stored.
-
setSidLoggerLevel
-
initBindings
Description copied from class:BasicComponentInitialize a mapping of key/value pairs which can be used in scripts loaded by the server- Overrides:
initBindingsin classConnectionManager<XMPPIOService<Object>>- Parameters:
binds- A mapping of key/value pairs, all of whose keys are Strings.
-
initialize
public void initialize()Description copied from interface:InitializableMethod will be called, when bean will be created, configured and ready to use.- Specified by:
initializein interfaceInitializable- Overrides:
initializein classBasicComponent
-
isCloseConnections
public boolean isCloseConnections()- Specified by:
isCloseConnectionsin interfaceBoshIOService.ConfigProvider
-
getClientAccessPolicy
- Specified by:
getClientAccessPolicyin interfaceBoshIOService.ConfigProvider
-
setClientAccessPolicyFile
-
getExtraHeaders
- Specified by:
getExtraHeadersin interfaceBoshIOService.ConfigProvider
-
setExtraHeadersFile
-
setupWatchdogThread
protected void setupWatchdogThread()- Overrides:
setupWatchdogThreadin classConnectionManager<XMPPIOService<Object>>
-
preBindSession
-
addOutPackets
Method adds packets to the output queue stamping it with the appropriateBoshSessiondata- Parameters:
out_results- collection ofPacketobjects to be added to queuebs- relatedBoshSession
-
changeDataReceiver
protected JID changeDataReceiver(Packet packet, JID newAddress, String command_sessionId, XMPPIOService<Object> serv) - Overrides:
changeDataReceiverin classClientConnectionManager
-
newStartedHandler
- Overrides:
newStartedHandlerin classClientConnectionManager
-
processCommand
- Overrides:
processCommandin classClientConnectionManager
-
writePacketToSocket
- Overrides:
writePacketToSocketin classConnectionManager<XMPPIOService<Object>>
-
getBoshSession
Method retrievesBoshSessionrelated to the particular user address- Parameters:
jid- address for whichBoshSessionshould be returned- Returns:
- a value of
BoshSession
-
getDefPlainPorts
protected int[] getDefPlainPorts()- Overrides:
getDefPlainPortsin classClientConnectionManager
-
getDefSSLPorts
protected int[] getDefSSLPorts()- Overrides:
getDefSSLPortsin classClientConnectionManager
-
getMaxInactiveTime
protected long getMaxInactiveTime()MethodgetMaxInactiveTimereturns max keep-alive time for inactive connection. For Bosh it does not make sense to keep the idle connection longer than 10 minutes.- Overrides:
getMaxInactiveTimein classClientConnectionManager- Returns:
- a
longvalue
-
getXMPPIOServiceInstance
- Overrides:
getXMPPIOServiceInstancein classClientConnectionManager
-