All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.axis2.clustering.state.StateManager Maven / Gradle / Ivy

There is a newer version: 5.0.22
Show newest version
/*
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements. See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership. The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License. You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied. See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */

package org.apache.axis2.clustering.state;

import org.apache.axis2.clustering.ClusteringFault;
import org.apache.axis2.context.AbstractContext;
import org.apache.axis2.context.ConfigurationContext;
import org.apache.axis2.description.ParameterInclude;

import java.util.List;
import java.util.Map;

/**
 * 

* 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 * {@link org.apache.axis2.deployment.ClusterBuilder}, by * reading the "contextManager" element in the axis2.xml *

* e.g. * * * * * *

*/ public interface StateManager extends ParameterInclude { /** * This method is called when properties in an {@link AbstractContext} are updated. * This could be addition of new properties, modifications of existing properties or * removal of properties. * * @param context The context to be replicated * @throws ClusteringFault If replication fails */ void updateContext(AbstractContext context) throws ClusteringFault; /** * This method is called when one need to update/replicate only certains properties in the * specified context * * @param context The AbstractContext containing the properties to be replicated * @param propertyNames The names of the specific properties that should be replicated * @throws ClusteringFault If replication fails */ void updateContext(AbstractContext context, String[] propertyNames) throws ClusteringFault; /** * This method is called when properties in a collection of {@link AbstractContext}s are updated. * This could be addition of new properties, modifications of existing properties or * removal of properties. * * @param contexts The AbstractContexts containing the properties to be replicated * @throws ClusteringFault If replication fails */ void updateContexts(AbstractContext[] contexts) throws ClusteringFault; /** * Replicate state using a custom StateClusteringCommand * * @param command The custom StateClusteringCommand which can be used for replicating state * @throws ClusteringFault If replication fails */ void replicateState(StateClusteringCommand command) throws ClusteringFault; /** * This method is called when {@link AbstractContext} is removed from the system * * @param context The AbstractContext to be removed * @throws ClusteringFault If context removal fails */ void removeContext(AbstractContext context) throws ClusteringFault; /** * This is a check to see whether the properties in an instance of {@link AbstractContext} * should be replicated. This allows an implementer to dissallow the replication of properties * stored in a certain type of context * * @param context The instance of AbstractContext under consideration * @return True - if the provided {@link AbstractContext} is clusterable */ boolean isContextClusterable(AbstractContext context); /** * 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 * * @param configurationContext The configuration context */ void setConfigurationContext(ConfigurationContext configurationContext); /** *

* 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. *

* * @param 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 * @param patterns The patterns */ void setReplicationExcludePatterns(String contextType, List patterns); /** * Get all the excluded context property name patterns * * @return All the excluded pattern of all the contexts. The key of the Map is the * the contextType. See {@link #setReplicationExcludePatterns(String,List)}. * The values are of type {@link List} of {@link String} Objects, * which are a collection of patterns to be excluded. * @see #setReplicationExcludePatterns(String, java.util.List) */ Map getReplicationExcludePatterns(); }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy