Interface StateManager

All Superinterfaces:
ParameterInclude

public interface StateManager extends ParameterInclude

This interface is responsible for handling context replication. The property changes in the Axis2 context hierarchy in this node, are propagated to all other nodes in the cluster.

It is not mandatory to have a StateManager in a node. If we are not interested in High Availability, we may disable context replication by commenting out the "contextManager" section in the axis2.xml cluster configuration section. In such a scenatio, the cluster will be used only for the purpose of Scalability

The implementation of this interface is set by the ClusterBuilder, by reading the "contextManager" element in the axis2.xml

e.g.

  • Method Details

    • updateContext

      void updateContext(AbstractContext context) throws ClusteringFault
      This method is called when properties in an AbstractContext are updated. This could be addition of new properties, modifications of existing properties or removal of properties.
      Parameters:
      context - The context to be replicated
      Throws:
      ClusteringFault - If replication fails
    • updateContext

      void updateContext(AbstractContext context, String[] propertyNames) throws ClusteringFault
      This method is called when one need to update/replicate only certains properties in the specified context
      Parameters:
      context - The AbstractContext containing the properties to be replicated
      propertyNames - The names of the specific properties that should be replicated
      Throws:
      ClusteringFault - If replication fails
    • updateContexts

      void updateContexts(AbstractContext[] contexts) throws ClusteringFault
      This method is called when properties in a collection of AbstractContexts are updated. This could be addition of new properties, modifications of existing properties or removal of properties.
      Parameters:
      contexts - The AbstractContexts containing the properties to be replicated
      Throws:
      ClusteringFault - If replication fails
    • replicateState

      void replicateState(StateClusteringCommand command) throws ClusteringFault
      Replicate state using a custom StateClusteringCommand
      Parameters:
      command - The custom StateClusteringCommand which can be used for replicating state
      Throws:
      ClusteringFault - If replication fails
    • removeContext

      void removeContext(AbstractContext context) throws ClusteringFault
      This method is called when AbstractContext is removed from the system
      Parameters:
      context - The AbstractContext to be removed
      Throws:
      ClusteringFault - If context removal fails
    • isContextClusterable

      boolean isContextClusterable(AbstractContext context)
      This is a check to see whether the properties in an instance of AbstractContext should be replicated. This allows an implementer to dissallow the replication of properties stored in a certain type of context
      Parameters:
      context - The instance of AbstractContext under consideration
      Returns:
      True - if the provided AbstractContext is clusterable
    • setConfigurationContext

      void setConfigurationContext(ConfigurationContext configurationContext)
      Set the system's configuration context. This will be used by the clustering implementations to get information about the Axis2 environment and to correspond with the Axis2 environment
      Parameters:
      configurationContext - The configuration context
    • setReplicationExcludePatterns

      void setReplicationExcludePatterns(String contextType, List patterns)

      All properties in the context with type contextType which have names that match the specified pattern will be excluded from replication.

      Only prefixes and suffixes are allowed. e.g. the local_* pattern indicates that all property names starting with local_ should be omitted from replication. *_local pattern indicated that all property names ending with _local should be omitted from replication. * pattern indicates that all properties should be excluded.

      Generally, we can use the context class name as the context type.

      Parameters:
      contextType - The type of the context such as org.apache.axis2.context.ConfigurationContext, org.apache.axis2.context.ServiceGroupContext & org.apache.axis2.context.ServiceContext. Also "defaults" is a special type, which will apply to all contexts
      patterns - The patterns
    • getReplicationExcludePatterns

      Map getReplicationExcludePatterns()
      Get all the excluded context property name patterns
      Returns:
      All the excluded pattern of all the contexts. The key of the Map is the the contextType. See setReplicationExcludePatterns(String,List). The values are of type List of String Objects, which are a collection of patterns to be excluded.
      See Also: