org.mmbase.module.builders
Class MMServers

Package class diagram package MMServers
java.lang.Object
  extended by org.mmbase.util.functions.FunctionProvider
      extended by org.mmbase.module.core.MMTable
          extended by org.mmbase.module.core.MMObjectBuilder
              extended by org.mmbase.module.builders.MMServers
All Implemented Interfaces:
EventListener, NodeEventListener, RelationEventListener, StateConstants, MMBaseObserver

public class MMServers
extends MMObjectBuilder
implements MMBaseObserver, StateConstants

Version:
$Id: MMServers.java 45315 2011-02-18 20:23:11Z michiel $
Author:
vpro
Javadoc:
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<Long> 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, getFunctionsFunction, GUI_INDICATOR, GUI_PARAMETERS, guiFunction, infoFunction, internalVersion, nodeCache, oType, pluralNames, searchAge, singularNames, SYSTEM_OWNER, TEMPNODE_DEFAULT_SIZE, TMP_FIELD_EXISTS, 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, getFunctions
 
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<MMObjectNode> getActiveServers()
           
 long getIntervalTime()
           
 MMObjectNode getMMServerNode(String name)
           
 MMObjectNode getMMServerNode(String name, String host)
           
 List<MMObjectNode> getMMServerNodes()
          Returns all the nodes from the builder without loading it in the nodes cache of MMBase.
 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 setCheckService(String name)
           
 void shutdown()
          clean all acquired resources, because system is shutting down
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, createIfNotExists, delete, equals, executeFunction, executeFunction, fieldLocalChanged, getAncestors, getBlobCache, getClassName, getConfigFile, getConfigResource, getDataTypeCollector, getDBState, getDBType, getDefaultTeaser, getDefaultUrl, getDescendants, getDescription, getDescription, getDescriptions, getEmptyNode, getField, getFieldNames, getFields, getFields, getFunction, getFunctionParameters, getFunctions, getGUIIndicator, getGUIIndicator, getGUIIndicator, getHTML, getInitParameter, getInitParameters, 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, getShortedInputStream, getShortedText, getSingularName, getSingularName, getSingularNames, getSmartPath, getTmpNode, getURLEncode, getVersion, getWAP, getXMLPath, hasField, hashCode, hashCode, hostname_function, insert, insert, isExtensionOf, isNodeCached, isNull, isVirtual, loadInitParameters, newFunctionInstance, nodeLocalChanged, nodeRemoteChanged, notify, notify, preCommit, process, removeEventListener, removeField, removeLocalObserver, removeNode, removeRelations, removeRemoteObserver, removeSyncNodes, replace, safeCache, sendFieldChangeSignal, setDefaults, setDescription, setDescriptions, setFields, setInitParameter, setMaintainer, 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<Long> getUpTime
Function uptime

Since:
MMBase-1.8

query

protected NodeSearchQuery query
Constructor Detail

MMServers

public MMServers()
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

shutdown

public void shutdown()
Description copied from class: MMObjectBuilder
clean all acquired resources, because system is shutting down

Overrides:
shutdown in class MMObjectBuilder

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(MMObjectNode, 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 additonal 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.
Javadoc:

getMMServerNodes

public List<MMObjectNode> getMMServerNodes()
                                    throws SearchQueryException
Returns all the nodes from the builder without loading it in the nodes cache of MMBase.

Returns:
The nodes.
Throws:
SearchQueryException - when something fails on database level.

setCheckService

public void setCheckService(String name)
Javadoc:

getMMServerProperty

public String getMMServerProperty(String mmserver,
                                  String key)
Javadoc:

getMMServerNode

public MMObjectNode getMMServerNode(String name)
Javadoc:

getMMServerNode

public MMObjectNode getMMServerNode(String name,
                                    String host)
Since:
MMBase-1.8.3

getIntervalTime

public long getIntervalTime()
Returns:
Returns the intervalTime in ms.

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<MMObjectNode> getActiveServers()
Returns:
List of MMObjectNodes representing active servers, which are not this server.


MMBase2 Core 2.0-SNAPSHOT - 2014-09-22T23:08