org.mmbase.module.builders
Class MMServers

java.lang.Object
  extended byorg.mmbase.util.functions.FunctionProvider
      extended byorg.mmbase.module.core.MMTable
          extended byorg.mmbase.module.core.MMObjectBuilder
              extended byorg.mmbase.module.builders.MMServers
All Implemented Interfaces:
EventListener, MMBaseObserver, NodeEventListener, RelationEventListener, Runnable, StateConstants

public class MMServers
extends MMObjectBuilder
implements MMBaseObserver, Runnable, StateConstants

Version:
$Id: MMServers.java,v 1.44 2006/07/03 14:22:42 michiel Exp $
Author:
vpro
Warning: No Java Documentation Available.
mmservers stands for MMBase servers. It is possible to run multiple mmbase servers on one database instance. Every mmserver node represent a real MMBase server(think of it as a machine where one instance of MMBase is running). On startup MMBase looks in the mmservers table and looks if he is listed in the list of mmservers, if not MMBase create a new node containing imfornation about itselve(name/host/os/jdk). the mmservers builder has extra behaviour, it can communicate with other servers(using multicast). The basic funtionality it provides however is sending information about changes of node to other mmservers (Listen !! I just have changed node 123). This mechanisme makes it possible to keep nodes caches in sync but also makes it possible to split tasks between machines. You could for example have a server that encodes video. when a change to a certain node is made one of the servers (if wel configured) can start encoding the videos.

Field Summary
protected  Function getUpTime
          Function uptime
protected  NodeSearchQuery query
           
 
Fields inherited from class org.mmbase.module.core.MMObjectBuilder
AGE_PARAMETERS, broadCastChanges, DEFAULT_ALINEA, DEFAULT_EOL, description, descriptions, EVENT_TYPE_LOCAL, EVENT_TYPE_REMOTE, FIELD_NUMBER, FIELD_OBJECT_TYPE, FIELD_OWNER, fields, genericBlobCache, getFunctions, GUI_PARAMETERS, guiFunction, infoFunction, internalVersion, nodeCache, oType, searchAge, SYSTEM_OWNER, TEMPNODE_DEFAULT_SIZE, temporaryNodes, TMP_FIELD_NUMBER, virtual, WRAP_PARAMETERS, wrapFunction
 
Fields inherited from class org.mmbase.module.core.MMTable
maxNodesFromQuery, mmb, storageConnector, tableName
 
Fields inherited from class org.mmbase.util.functions.FunctionProvider
functions
 
Fields inherited from interface org.mmbase.datatypes.resources.StateConstants
ACTIVE, ERROR, INACTIVE, UNKNOWN
 
Constructor Summary
MMServers()
           
 
Method Summary
 boolean equals(MMObjectNode o1, MMObjectNode o2)
          MMServer object are field by field equals.
 List getActiveServers()
           
 long getIntervalTime()
           
 MMObjectNode getMMServerNode(String name)
           
 String getMMServerProperty(String mmserver, String key)
           
 Object getValue(MMObjectNode node, String field)
          Provides additional functionality when obtaining field values.
 boolean init()
          Initializes this builder The property 'mmb' needs to be set for the builder before this method can be called.
 void run()
          run, checkup probe runs every intervaltime to set the state of the server (used in clusters)
 void setCheckService(String name)
           
protected  void start()
          Starts the thread for the task scheduler
 String toString(MMObjectNode n)
          Implements for MMObjectNode
 
Methods inherited from class org.mmbase.module.core.MMObjectBuilder
addEventListener, addField, addLocalObserver, addRemoteObserver, broadcastChanges, checkAddTmpField, clearBlobCache, commit, create, createAlias, createAlias, delete, equals, executeFunction, executeFunction, fieldLocalChanged, getAncestors, getBlobCache, getClassName, getConfigFile, getConfigResource, getDataTypeCollector, getDBKey, getDBState, getDBType, getDefaultTeaser, getDefaultUrl, getDescendants, getDescription, getDescription, getDescriptions, getEditFields, getEmptyNode, getField, getFieldNames, getFields, getFields, getFunction, getFunctionParameters, getFunctions, getGUIIndicator, getGUIIndicator, getGUIIndicator, getHardNode, getHardNode, getHTML, getInitParameter, getInitParameters, getInternalVersion, getList, getLocaleGUIIndicator, getLocaleGUIIndicator, getMachineName, getMaintainer, getNewNode, getNewTmpNode, getNextField, getNextField, getNode, getNode, getNode, getNodeFromCache, getNodeGUIIndicator, getNumber, getObjectType, getObjectValue, getParentBuilder, getPluralName, getPluralName, getPluralNames, getRelations_main, getSearchAge, getShort, getShortedByte, getShortedText, getSingularName, getSingularName, getSingularNames, getSmartPath, getSortedFields, getSortedListFields, getTmpNode, getURLEncode, getVersion, getWAP, getXMLPath, hasField, hashCode, hashCode, hostname_function, insert, insert, isExtensionOf, isNodeCached, isVirtual, newFunctionInstance, nodeLocalChanged, nodeRemoteChanged, notify, notify, preCommit, process, putTmpNode, removeEventListener, removeField, removeLocalObserver, removeNode, removeRelations, removeRemoteObserver, removeSyncNodes, removeTmpNode, replace, safeCache, sendFieldChangeSignal, setDefaults, setDescription, setDescriptions, setFields, setInitParameter, setMaintainer, setParentBuilder, setPluralNames, setSearchAge, setSingularNames, setUniqueValue, setUniqueValue, setValue, setValue, setVersion, setXMLPath, testValidData, toString, update, updateFields, wrap
 
Methods inherited from class org.mmbase.module.core.MMTable
count, count, created, getFullTableName, getMMBase, getNode, getNodes, getNodes, getNodes, getNodeType, getStorageConnector, getTableName, search, searchVector, setMMBase, setTableName, size
 
Methods inherited from class org.mmbase.util.functions.FunctionProvider
addFunction, createParameters, getFunction, getFunctions, getFunctionValue
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.mmbase.module.core.MMBaseObserver
nodeLocalChanged, nodeRemoteChanged
 

Field Detail

getUpTime

protected Function getUpTime
Function uptime

Since:
MMBase-1.8

query

protected NodeSearchQuery query
Constructor Detail

MMServers

public MMServers()
Warning: No Java Documentation Available.
Method Detail

init

public boolean init()
Description copied from class: MMObjectBuilder
Initializes this builder The property 'mmb' needs to be set for the builder before this method can be called. The method retrieves data from the TypeDef builder, or adds data to that builder if the current builder is not yet registered.

Overrides:
init in class MMObjectBuilder
Returns:
true if init was completed, false if uncompleted.
See Also:
MMObjectBuilder.create()

start

protected void start()
Starts the thread for the task scheduler

Since:
MMBase-1.7

getValue

public Object getValue(MMObjectNode node,
                       String field)
Description copied from class: MMObjectBuilder
Provides additional functionality when obtaining field values. This method is called whenever a Node of the builder's type fails at evaluating a getValue() request (generally when a fieldname is supplied that doesn't exist). It allows the system to add 'functions' to be included with a field name, such as 'html(body)' or 'time(lastmodified)'. This method will parse the fieldname, determining functions and calling the MMObjectBuilder.executeFunction(org.mmbase.module.core.MMObjectNode, java.lang.String, java.util.List) method to handle it. Functions in fieldnames can be given in the format 'functionname(fieldname)'. An old format allows 'functionname_fieldname' instead, though this only applies to the text functions 'short', 'html', and 'wap'. Functions can be nested, i.e. 'html(shorted(body))'. Derived builders should override this method only if they want to provide virtual fieldnames. To provide addiitonal functions, call FunctionProvider.addFunction(org.mmbase.util.functions.Function) instead. See also the source code for ExampleBuilder.

Overrides:
getValue in class MMObjectBuilder
Parameters:
node - the node whos efields are queries
field - the fieldname that is requested
Returns:
the result of the 'function', or null if no valid functions could be determined.
Warning: No Java Documentation Available.

run

public void run()
run, checkup probe runs every intervaltime to set the state of the server (used in clusters)

Specified by:
run in interface Runnable
Since:
MMBase-1.7

setCheckService

public void setCheckService(String name)
Warning: No Java Documentation Available.

getMMServerProperty

public String getMMServerProperty(String mmserver,
                                  String key)
Warning: No Java Documentation Available.

getMMServerNode

public MMObjectNode getMMServerNode(String name)
Warning: No Java Documentation Available.

getIntervalTime

public long getIntervalTime()
Returns:
Returns the intervalTime.

equals

public boolean equals(MMObjectNode o1,
                      MMObjectNode o2)
MMServer object are field by field equals.

Overrides:
equals in class MMObjectBuilder

toString

public String toString(MMObjectNode n)
Description copied from class: MMObjectBuilder
Implements for MMObjectNode

Overrides:
toString in class MMObjectBuilder

getActiveServers

public List getActiveServers()
Returns:
List of MMObjectNodes representing active servers, which are not this server.


MMBase build 1.8.1.20060716