tigase.cluster
Class VirtualComponent

java.lang.Object
  extended by tigase.cluster.VirtualComponent
All Implemented Interfaces:
Configurable, XMPPService, DisableDisco, ServerComponent, VHostListener

public class VirtualComponent
extends Object
implements ServerComponent, XMPPService, Configurable, DisableDisco, VHostListener

The purpose of this component implementation is to forward packets to a target real component implementation in the cluster installation. Let's say you have a cluster installation with full Tigase server installed on each node and you also want to use a component which doesn't have clustered implementation yet. In such case you deploy the component on one of the cluster nodes and put the virtual component on all other nodes. With proper configuration they pretend to be the component returning a correct service disco information and forward all packets for this component to a cluster node with real component running. This is a very lightweight implementation which doesn't use much resources either memory or CPU. It can work well for any kind of a component: MUC, PubSub, transport either native Tigase components or third-party components connected via XEP-0114 - external protocol component. Basic configuration parameters are actually the same as for a real component. You set a real component name as a name for the virtual component and a vritual component class name to load. Let's say we want to deploy MUC component this way. The MUC component is visible as muc.domain.our in our installation. Thus the name of the component is: muc:

 --comp-name-1=muc
 --comp-class-1=tigase.cluster.VirtualComponent
 
This is pretty much all you need to load a virtual component. A few other options are needed to point to correct destination addresses for forwarded packets and to set correct service discovery parameters:
 muc/redirect-to=muc@cluster-node-with-real-muc.domain.our
 muc/disco-name=Multi User Chat
 muc/disco-node=
 muc/disco-type=text
 muc/disco-category=conference
 muc/disco-features=http://jabber.org/protocol/muc
 muc/fixed-domain=example.com
 
Above options set all possible parameters to setup virtual MUC component. Created: Dec 13, 2008 7:44:35 PM

Version:
$Rev$
Author:
Artur Hefczyc

Field Summary
static String DISCO_CATEGORY_PROP_KEY
          Parameter to set service discovery item category name for the virtual component.
static String DISCO_CATEGORY_PROP_VAL
          Field description
static String DISCO_FEATURES_PROP_KEY
          Comma separated list of features for the service discovery item represented by this virtual component.
static String DISCO_FEATURES_PROP_VAL
          Field description
static String DISCO_NAME_PROP_KEY
          Parameter to set service discovery item name for the virtual component instance.
static String DISCO_NAME_PROP_VAL
          Field description
static String DISCO_NODE_PROP_KEY
          Parameter to set service discovery node name.
static String DISCO_NODE_PROP_VAL
          Field description
static String DISCO_TYPE_PROP_KEY
          Parameter to set service discovery item type for the virtual component.
static String DISCO_TYPE_PROP_VAL
          A default value for service discovery item type, which is 'text'
static String FIXED_DOMAIN_PROP_KEY
          If set, then it is used as the component domain name part.
static String REDIRECT_TO_PROP_KEY
          Virtual component parameter setting packet redirect destination address.
protected  VHostManagerIfc vHostManager
          Field description
 
Fields inherited from interface tigase.disco.XMPPService
CMD_FEATURES, DEF_FEATURES, INFO_XMLNS, ITEMS_XMLNS
 
Fields inherited from interface tigase.conf.Configurable
ADMINS_PROP_KEY, AMP_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_EXT_COMP_NAME, DEF_HOSTNAME_PROP_KEY, DEF_MONITOR_NAME, DEF_S2S_NAME, DEF_SM_NAME, DEF_SRECV_NAME, DEF_SSEND_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, 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, SRECV_COMP_CLASS_NAME, SSEND_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, WS2S_CLASS_NAME, WS2S_CLUST_CLASS_NAME, XML_REPO_CLASS_PROP_VAL, XML_REPO_URL_PROP_VAL, XMPP_STANZA_ACK
 
Constructor Summary
VirtualComponent()
           
 
Method Summary
 tigase.xmpp.JID getComponentId()
          Method description
 Map<String,Object> getDefaults(Map<String,Object> params)
          Method description
 List<tigase.xml.Element> getDiscoFeatures(tigase.xmpp.JID from)
          Method description
 tigase.xml.Element getDiscoInfo(String node, tigase.xmpp.JID jid, tigase.xmpp.JID from)
          Method description
 List<tigase.xml.Element> getDiscoItems(String node, tigase.xmpp.JID jid, tigase.xmpp.JID from)
          Method description
 String getName()
          Method description
 boolean handlesLocalDomains()
          Method description
 boolean handlesNameSubdomains()
          Method description
 boolean handlesNonLocalDomains()
          Method description
 void initializationCompleted()
          Method description
 boolean isInitializationComplete()
          Method description
 void processPacket(Packet packet, Queue<Packet> results)
          Method description
 void release()
          Method description
 void setName(String name)
          Method description
 void setProperties(Map<String,Object> properties)
          Method description
 void setVHostManager(VHostManagerIfc manager)
          Method description
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DISCO_CATEGORY_PROP_KEY

public static final String DISCO_CATEGORY_PROP_KEY
Parameter to set service discovery item category name for the virtual component. Please refer to service discovery documentation for a correct category or check what is returned by your real component instance.

See Also:
Constant Field Values

DISCO_CATEGORY_PROP_VAL

public static final String DISCO_CATEGORY_PROP_VAL
Field description

See Also:
Constant Field Values

DISCO_FEATURES_PROP_KEY

public static final String DISCO_FEATURES_PROP_KEY
Comma separated list of features for the service discovery item represented by this virtual component. Please check with the real component to obtain a correct list of features.

See Also:
Constant Field Values

DISCO_FEATURES_PROP_VAL

public static final String DISCO_FEATURES_PROP_VAL
Field description

See Also:
Constant Field Values

DISCO_NAME_PROP_KEY

public static final String DISCO_NAME_PROP_KEY
Parameter to set service discovery item name for the virtual component instance. You should refer to service discovery documentation for a proper name for your component.

See Also:
Constant Field Values

DISCO_NAME_PROP_VAL

public static final String DISCO_NAME_PROP_VAL
Field description

See Also:
Constant Field Values

DISCO_NODE_PROP_KEY

public static final String DISCO_NODE_PROP_KEY
Parameter to set service discovery node name. In most cases you should leave it empty unless you really know what you are doing.

See Also:
Constant Field Values

DISCO_NODE_PROP_VAL

public static final String DISCO_NODE_PROP_VAL
Field description

See Also:
Constant Field Values

DISCO_TYPE_PROP_KEY

public static final String DISCO_TYPE_PROP_KEY
Parameter to set service discovery item type for the virtual component. You should refer to a service discovery documentation for a correct type for your component. Or, alternatively you can have a look what returns your real component.

See Also:
Constant Field Values

DISCO_TYPE_PROP_VAL

public static final String DISCO_TYPE_PROP_VAL
A default value for service discovery item type, which is 'text'

See Also:
Constant Field Values

FIXED_DOMAIN_PROP_KEY

public static final String FIXED_DOMAIN_PROP_KEY
If set, then it is used as the component domain name part. This domains is displayed on the service discovery information, instead of virtual host based on the user's query.

See Also:
Constant Field Values

REDIRECT_TO_PROP_KEY

public static final String REDIRECT_TO_PROP_KEY
Virtual component parameter setting packet redirect destination address.

See Also:
Constant Field Values

vHostManager

protected VHostManagerIfc vHostManager
Field description

Constructor Detail

VirtualComponent

public VirtualComponent()
Method Detail

handlesLocalDomains

public boolean handlesLocalDomains()
Method description

Specified by:
handlesLocalDomains in interface VHostListener
Returns:

handlesNameSubdomains

public boolean handlesNameSubdomains()
Method description

Specified by:
handlesNameSubdomains in interface VHostListener
Returns:

handlesNonLocalDomains

public boolean handlesNonLocalDomains()
Method description

Specified by:
handlesNonLocalDomains in interface VHostListener
Returns:

initializationCompleted

public void initializationCompleted()
Method description

Specified by:
initializationCompleted in interface ServerComponent

processPacket

public void processPacket(Packet packet,
                          Queue<Packet> results)
Method description

Specified by:
processPacket in interface ServerComponent
Parameters:
packet -
results -

release

public void release()
Method description

Specified by:
release in interface ServerComponent

getComponentId

public tigase.xmpp.JID getComponentId()
Method description

Specified by:
getComponentId in interface ServerComponent
Returns:

getDefaults

public Map<String,Object> getDefaults(Map<String,Object> params)
Method description

Specified by:
getDefaults in interface Configurable
Parameters:
params -
Returns:

getDiscoFeatures

public List<tigase.xml.Element> getDiscoFeatures(tigase.xmpp.JID from)
Method description

Specified by:
getDiscoFeatures in interface XMPPService
Parameters:
from -
Returns:

getDiscoInfo

public tigase.xml.Element getDiscoInfo(String node,
                                       tigase.xmpp.JID jid,
                                       tigase.xmpp.JID from)
Method description

Specified by:
getDiscoInfo in interface XMPPService
Parameters:
node -
jid -
from -
Returns:

getDiscoItems

public List<tigase.xml.Element> getDiscoItems(String node,
                                              tigase.xmpp.JID jid,
                                              tigase.xmpp.JID from)
Method description

Specified by:
getDiscoItems in interface XMPPService
Parameters:
node -
jid -
from -
Returns:

getName

public String getName()
Method description

Specified by:
getName in interface ServerComponent
Returns:

isInitializationComplete

public boolean isInitializationComplete()
Method description

Specified by:
isInitializationComplete in interface ServerComponent
Returns:

setName

public void setName(String name)
Method description

Specified by:
setName in interface ServerComponent
Parameters:
name -

setProperties

public void setProperties(Map<String,Object> properties)
Method description

Specified by:
setProperties in interface Configurable
Parameters:
properties -

setVHostManager

public void setVHostManager(VHostManagerIfc manager)
Method description

Specified by:
setVHostManager in interface VHostListener
Parameters:
manager -


Copyright © 2013 Tigase. All rights reserved.