Package tigase.server.ext
Class ComponentProtocol
- All Implemented Interfaces:
ClusteredComponentIfc
,Configurable
,RepositoryChangeListenerIfc<CompRepoItem>
,XMPPService
,ConfigurationChangedAware
,Initializable
,RegistrarBean
,UnregisterAware
,IOServiceListener<ComponentIOService>
,ComponentProtocolHandler
,MessageReceiver
,PacketWriterWithTimeout
,ServerComponent
,StatisticsContainer
,StatisticsContainerIfc
,VHostListener
,XMPPIOServiceListener<ComponentIOService>
@Bean(name="ext",
parent=Kernel.class,
active=false)
public class ComponentProtocol
extends ConnectionManager<ComponentIOService>
implements ComponentProtocolHandler, UnregisterAware, RepositoryChangeListenerIfc<CompRepoItem>
Created: Sep 30, 2009 8:28:13 PM
- Author:
- Artur Hefczyc
-
Nested Class Summary
Nested classes/interfaces inherited from class tigase.server.ConnectionManager
ConnectionManager.LIMIT_ACTION, ConnectionManager.PortConfigBean, ConnectionManager.PortsConfigBean, ConnectionManager.SecPortConfigBean, ConnectionManager.Watchdog, ConnectionManager.WATCHDOG_PING_TYPE
Nested classes/interfaces inherited from class tigase.server.BasicComponent
BasicComponent.ServerInfoVHostItemExtension
Nested classes/interfaces inherited from interface tigase.server.PacketWriterWithTimeout
PacketWriterWithTimeout.Handler
-
Field Summary
Modifier and TypeFieldDescriptionstatic final String
static final String
static final String
static final String
static final String
static final String
static final String
static final String
static final String
static final String
static final String
static final boolean
Fields 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, 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_VAL
Fields 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, SECOND
Fields inherited from class tigase.server.BasicComponent
admins, ALL_PROP_KEY, COMMAND_PROP_NODE, scriptCommands, scriptEngineManager, SCRIPTS_DIR_PROP_DEF, SCRIPTS_DIR_PROP_KEY, trusted, vHostManager
Fields inherited from interface tigase.server.ext.ComponentProtocolHandler
EXTCOMP_BIND_HOSTNAMES_PROP_KEY, REPO_ITEM_KEY
Fields 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_ACK
Fields inherited from interface tigase.disco.XMPPService
CMD_FEATURES, DEF_FEATURES, INFO_XMLNS, ITEMS_XMLNS
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
void
authenticationFailed
(ComponentIOService serv, Packet packet) void
Method called before bean unregister.void
bindHostname
(String hostname, ComponentIOService serv) protected boolean
getCompRepoItem
(String hostname) protected String
Method returns component category type used for service discovery responses.Method returns description used for service discovery responses.protected long
protected Integer
getMaxQueueSize
(int def) getProcessor
(String key) void
getStatistics
(StatisticsList list) Method returns component statistics.getStreamOpenHandler
(String xmlns) protected ComponentIOService
protected ComponentIOService
void
initBindings
(Bindings binds) Initialize a mapping of key/value pairs which can be used in scripts loaded by the servervoid
Method will be called, when bean will be created, configured and ready to use.protected boolean
void
itemAdded
(CompRepoItem repoItem) void
itemRemoved
(CompRepoItem item) void
itemUpdated
(CompRepoItem item) boolean
processUndeliveredPacket
(Packet packet, Long stamp, String errorMessage) Processes undelivered packetsvoid
reconnectionFailed
(Map<String, Object> port_props) void
Method called when bean is being registered allowing developer to programatically register other beans.void
boolean
serviceStopped
(ComponentIOService service) void
void
start()
void
tlsHandshakeCompleted
(ComponentIOService service) void
unbindHostname
(String hostname, ComponentIOService serv) boolean
void
String[]
xmppStreamOpened
(ComponentIOService serv, Map<String, String> attribs) Methods inherited from class tigase.server.ConnectionManager
addWaitingTask, beanConfigurationChanged, checkHighThroughputProperty, checkTrafficLimits, connectWaitingTasks, countIOServices, doForAllServices, everyMinute, getDefPlainPorts, getDefPorts, getDefSSLPorts, getFlashCrossDomainPolicy, getNet_buffer_limit, getParamsForPort, getPortsConfigBean, getServiceId, getServiceId, getTrafficThrottling, getUniqueId, getXMPPIOService, hashCodeForPacket, initializationCompleted, newWatchdog, packetsReady, processingInThreads, processingOutThreads, processPacket, release, releaseListener, serviceConnected, setFlashCrossDomainPolicyFile, setName, setNet_buffer_limit, setProcessors, setTrafficThrottling, setupWatchdogThread, setWatchdogPingType, socketAccepted, startService, stop, unregister, updateConnectionDetails, writePacketsToSocket, writePacketToSocket, writePacketToSocket, writeRawData, xmppStreamError
Methods 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, schedulerThreads, setCompId, setIncoming_filters, setOutgoing_filters, setParent, setSchedulerThreads_size, updateFiltersName
Methods 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, updateServiceEntity
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface tigase.server.ext.ComponentProtocolHandler
newPacketId
Methods inherited from interface tigase.server.MessageReceiver
getDefHostName
Methods inherited from interface tigase.server.ServerComponent
getComponentId, getComponentInfo, getName, isInitializationComplete
Methods inherited from interface tigase.stats.StatisticsContainerIfc
getName
-
Field Details
-
AUTHENTICATION_TIMEOUT_PROP_KEY
- See Also:
-
CLOSE_ON_SEQUENCE_ERROR_PROP_KEY
- See Also:
-
EXTCOMP_BIND_HOSTNAMES
- See Also:
-
EXTCOMP_REPO_CLASS_PROP_KEY
- See Also:
-
EXTCOMP_REPO_CLASS_PROP_VAL
- See Also:
-
EXTCOMP_REPO_CLASS_PROPERTY
- See Also:
-
IDENTITY_TYPE_KEY
- See Also:
-
IDENTITY_TYPE_VAL
- See Also:
-
MAX_AUTH_ATTEMPTS_PROP_KEY
- See Also:
-
PACK_ROUTED_KEY
- See Also:
-
RETURN_SERVICE_DISCO_KEY
- See Also:
-
RETURN_SERVICE_DISCO_VAL
public static final boolean RETURN_SERVICE_DISCO_VAL- See Also:
-
-
Constructor Details
-
ComponentProtocol
public ComponentProtocol()
-
-
Method Details
-
authenticated
- Specified by:
authenticated
in interfaceComponentProtocolHandler
-
authenticationFailed
- Specified by:
authenticationFailed
in interfaceComponentProtocolHandler
-
bindHostname
- Specified by:
bindHostname
in interfaceComponentProtocolHandler
-
enableServiceConnectedTimeout
- Overrides:
enableServiceConnectedTimeout
in classConnectionManager<ComponentIOService>
-
getCompRepoItem
- Specified by:
getCompRepoItem
in interfaceComponentProtocolHandler
-
getDiscoCategoryType
Description copied from class:BasicComponent
Method returns component category type used for service discovery responses.- Overrides:
getDiscoCategoryType
in classBasicComponent
- Returns:
- category type of a component
-
getDiscoDescription
Description copied from class:BasicComponent
Method returns description used for service discovery responses.- Overrides:
getDiscoDescription
in classBasicComponent
- Returns:
- description of a component
-
getProcessor
- Specified by:
getProcessor
in interfaceComponentProtocolHandler
-
getStatistics
Description copied from class:AbstractMessageReceiver
Method 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.FINEST
assigned and must be put inside the level guard to prevent generating them by the system monitor. The system monitor does not collectFINEST
statistics.
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:
getStatistics
in interfaceStatisticsContainerIfc
- Overrides:
getStatistics
in classConnectionManager<ComponentIOService>
- Parameters:
list
- is aStatistcsList
where all statistics are stored.
-
getStreamFeatures
- Specified by:
getStreamFeatures
in interfaceComponentProtocolHandler
-
getStreamOpenHandler
- Specified by:
getStreamOpenHandler
in interfaceComponentProtocolHandler
-
initBindings
Description copied from class:BasicComponent
Initialize a mapping of key/value pairs which can be used in scripts loaded by the server- Overrides:
initBindings
in classConnectionManager<ComponentIOService>
- Parameters:
binds
- A mapping of key/value pairs, all of whose keys are Strings.
-
register
Description copied from interface:RegistrarBean
Method called when bean is being registered allowing developer to programatically register other beans.- Specified by:
register
in interfaceRegistrarBean
- Overrides:
register
in classConnectionManager<ComponentIOService>
- Parameters:
kernel
- - instance from local scope
-
initialize
public void initialize()Description copied from interface:Initializable
Method will be called, when bean will be created, configured and ready to use.- Specified by:
initialize
in interfaceInitializable
- Overrides:
initialize
in classBasicComponent
-
beforeUnregister
public void beforeUnregister()Description copied from interface:UnregisterAware
Method called before bean unregister.- Specified by:
beforeUnregister
in interfaceUnregisterAware
-
processSocketData
- Specified by:
processSocketData
in classConnectionManager<ComponentIOService>
-
processUndeliveredPacket
Description copied from class:ConnectionManager
Processes undelivered packets- Specified by:
processUndeliveredPacket
in classConnectionManager<ComponentIOService>
stamp
- - timestamp when packet was received to be written to XMPPIOService
-
reconnectionFailed
- Specified by:
reconnectionFailed
in classConnectionManager<ComponentIOService>
-
serviceStarted
- Overrides:
serviceStarted
in classConnectionManager<ComponentIOService>
-
serviceStopped
- Specified by:
serviceStopped
in interfaceIOServiceListener<ComponentIOService>
- Overrides:
serviceStopped
in classConnectionManager<ComponentIOService>
-
setRepo
-
start
public void start()- Specified by:
start
in interfaceMessageReceiver
- Overrides:
start
in classConnectionManager<ComponentIOService>
-
tlsHandshakeCompleted
- Specified by:
tlsHandshakeCompleted
in interfaceIOServiceListener<ComponentIOService>
-
unbindHostname
- Specified by:
unbindHostname
in interfaceComponentProtocolHandler
-
writePacketToSocket
- Overrides:
writePacketToSocket
in classConnectionManager<ComponentIOService>
-
xmppStreamClosed
- Specified by:
xmppStreamClosed
in interfaceXMPPIOServiceListener<ComponentIOService>
-
xmppStreamOpened
- Specified by:
xmppStreamOpened
in interfaceXMPPIOServiceListener<ComponentIOService>
-
itemAdded
- Specified by:
itemAdded
in interfaceRepositoryChangeListenerIfc<CompRepoItem>
-
itemUpdated
- Specified by:
itemUpdated
in interfaceRepositoryChangeListenerIfc<CompRepoItem>
-
itemRemoved
- Specified by:
itemRemoved
in interfaceRepositoryChangeListenerIfc<CompRepoItem>
-
getDefTrafficThrottling
- Overrides:
getDefTrafficThrottling
in classConnectionManager<ComponentIOService>
-
getMaxInactiveTime
protected long getMaxInactiveTime()- Specified by:
getMaxInactiveTime
in classConnectionManager<ComponentIOService>
-
getMaxQueueSize
- Overrides:
getMaxQueueSize
in classAbstractMessageReceiver
-
getXMPPIOService
- Overrides:
getXMPPIOService
in classConnectionManager<ComponentIOService>
-
getXMPPIOServiceInstance
- Specified by:
getXMPPIOServiceInstance
in classConnectionManager<ComponentIOService>
-
isHighThroughput
protected boolean isHighThroughput()- Overrides:
isHighThroughput
in classConnectionManager<ComponentIOService>
-