You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by im...@apache.org on 2015/01/08 09:28:36 UTC
stratos git commit: Added basic changes needed for clustering of
Autoscaler component
Repository: stratos
Updated Branches:
refs/heads/master 22127619b -> e54f24203
Added basic changes needed for clustering of Autoscaler component
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/e54f2420
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/e54f2420
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/e54f2420
Branch: refs/heads/master
Commit: e54f2420333776dd29ac4b176aea3e2abd5e48aa
Parents: 2212761
Author: Shiro <sh...@wso2.com>
Authored: Thu Jan 8 13:39:12 2015 +0530
Committer: Shiro <sh...@wso2.com>
Committed: Thu Jan 8 13:45:18 2015 +0530
----------------------------------------------------------------------
.../autoscaler/context/AutoscalerContext.java | 45 ++++-
.../internal/AutoscalerServerComponent.java | 202 ++++++++++++-------
.../autoscaler/pojo/policy/PolicyManager.java | 15 +-
.../autoscaler/util/ServiceReferenceHolder.java | 31 +++
4 files changed, 216 insertions(+), 77 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/e54f2420/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/AutoscalerContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/AutoscalerContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/AutoscalerContext.java
index 72c7734..5524c2b 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/AutoscalerContext.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/AutoscalerContext.java
@@ -23,17 +23,29 @@ package org.apache.stratos.autoscaler.context;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
+import org.apache.axis2.engine.AxisConfiguration;
import org.apache.stratos.autoscaler.applications.pojo.ApplicationContext;
import org.apache.stratos.autoscaler.monitor.component.ApplicationMonitor;
import org.apache.stratos.autoscaler.monitor.cluster.ClusterMonitor;
import org.apache.stratos.autoscaler.registry.RegistryManager;
+import org.apache.stratos.autoscaler.util.ServiceReferenceHolder;
+import org.apache.stratos.common.clustering.DistributedObjectProvider;
+import org.wso2.carbon.registry.core.exceptions.RegistryException;
/**
* It holds all cluster monitors which are active in stratos.
*/
public class AutoscalerContext {
+ private static final String AS_APPLICATION_ID_TO_APPLICATION_CTX_MAP = "AS_APPLICATION_ID_TO_APPLICATION_CTX_MAP";
+ private static final String AS_CLUSTER_ID_TO_CLUSTER_MONITOR_MAP = "AS_CLUSTER_ID_TO_CLUSTER_MONITOR_MAP";
+ private static final String AS_APPLICATION_ID_TO_APPLICATION_MONITOR_MAP = "AS_APPLICATION_ID_TO_APPLICATION_MONITOR_MAP";
+ private static final String AS_PENDING_APPLICATION_MONITOR_LIST = "AS_PENDING_APPLICATION_MONITOR_LIST";
+ private boolean clustered;
+ private boolean coordinator;
+
private static final AutoscalerContext INSTANCE = new AutoscalerContext();
+ private final transient DistributedObjectProvider distributedObjectProvider;
// Map<ApplicationId, ApplicationContext>
private Map<String, ApplicationContext> applicationContextMap;
@@ -45,13 +57,22 @@ public class AutoscalerContext {
private List<String> pendingApplicationMonitors;
private AutoscalerContext() {
- applicationContextMap = readApplicationContextsFromRegistry();
+ // Check clustering status
+ AxisConfiguration axisConfiguration = ServiceReferenceHolder.getInstance().getAxisConfiguration();
+ if ((axisConfiguration != null) && (axisConfiguration.getClusteringAgent() != null)) {
+ clustered = true;
+ }
+
+ // Initialize distributed object provider
+ distributedObjectProvider = ServiceReferenceHolder.getInstance().getDistributedObjectProvider();
+
+ applicationContextMap = readApplicationContextsFromRegistry();
if(applicationContextMap == null) {
- applicationContextMap = new ConcurrentHashMap<String, ApplicationContext>();
+ applicationContextMap = distributedObjectProvider.getMap(AS_APPLICATION_ID_TO_APPLICATION_CTX_MAP);//new ConcurrentHashMap<String, ApplicationContext>();
}
- setClusterMonitors(new HashMap<String, ClusterMonitor>());
- setApplicationMonitors(new HashMap<String, ApplicationMonitor>());
- pendingApplicationMonitors = new ArrayList<String>();
+ setClusterMonitors(distributedObjectProvider.getMap(AS_CLUSTER_ID_TO_CLUSTER_MONITOR_MAP));
+ setApplicationMonitors(distributedObjectProvider.getMap(AS_APPLICATION_ID_TO_APPLICATION_MONITOR_MAP));
+ pendingApplicationMonitors = distributedObjectProvider.getList(AS_PENDING_APPLICATION_MONITOR_LIST);//new ArrayList<String>();
}
private Map<String, ApplicationContext> readApplicationContextsFromRegistry() {
@@ -60,7 +81,7 @@ public class AutoscalerContext {
return null;
}
- Map<String, ApplicationContext> applicationContextMap = new ConcurrentHashMap<String, ApplicationContext>();
+ Map<String, ApplicationContext> applicationContextMap = distributedObjectProvider.getMap(AS_APPLICATION_ID_TO_APPLICATION_CTX_MAP);//new ConcurrentHashMap<String, ApplicationContext>();
for(String resourcePath : resourcePaths) {
ApplicationContext applicationContext = RegistryManager.getInstance().getApplicationContextByResourcePath(resourcePath);
applicationContextMap.put(applicationContext.getApplicationId(), applicationContext);
@@ -158,4 +179,16 @@ public class AutoscalerContext {
applicationContextMap.put(applicationContext.getApplicationId(), applicationContext);
RegistryManager.getInstance().persistApplicationContext(applicationContext);
}
+
+ public boolean isClustered() {
+ return clustered;
+ }
+
+ public boolean isCoordinator() {
+ return coordinator;
+ }
+
+ public void setCoordinator(boolean coordinator) {
+ this.coordinator = coordinator;
+ }
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/e54f2420/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServerComponent.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServerComponent.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServerComponent.java
index 74a43f9..51095c9 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServerComponent.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServerComponent.java
@@ -22,6 +22,7 @@ import org.apache.commons.configuration.XMLConfiguration;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.stratos.autoscaler.applications.ApplicationSynchronizerTaskScheduler;
+import org.apache.stratos.autoscaler.context.AutoscalerContext;
import org.apache.stratos.autoscaler.event.receiver.health.AutoscalerHealthStatEventReceiver;
import org.apache.stratos.autoscaler.event.receiver.topology.AutoscalerTopologyEventReceiver;
import org.apache.stratos.autoscaler.exception.AutoScalerException;
@@ -34,12 +35,16 @@ import org.apache.stratos.autoscaler.status.processor.group.GroupStatusProcessor
import org.apache.stratos.autoscaler.util.ConfUtil;
import org.apache.stratos.autoscaler.util.ServiceReferenceHolder;
import org.apache.stratos.cloud.controller.stub.domain.Partition;
+import org.apache.stratos.common.clustering.DistributedObjectProvider;
import org.apache.stratos.common.threading.StratosThreadPool;
import org.osgi.service.component.ComponentContext;
import org.wso2.carbon.ntask.core.service.TaskService;
import org.wso2.carbon.registry.api.RegistryException;
import org.wso2.carbon.registry.core.service.RegistryService;
import org.wso2.carbon.utils.CarbonUtils;
+import org.wso2.carbon.utils.ConfigurationContextService;
+
+import com.hazelcast.core.HazelcastInstance;
import java.io.File;
import java.util.Iterator;
@@ -47,16 +52,17 @@ import java.util.List;
import java.util.concurrent.ExecutorService;
/**
- * @scr.component name=org.apache.stratos.autoscaler.internal.AutoscalerServerComponent"
- * immediate="true"
- * @scr.reference name="registry.service"
- * interface=
- * "org.wso2.carbon.registry.core.service.RegistryService"
- * cardinality="1..1" policy="dynamic" bind="setRegistryService"
- * unbind="unsetRegistryService"
+ * @scr.component name=org.apache.stratos.autoscaler.internal.AutoscalerServerComponent" immediate="true"
+ * @scr.reference name="registry.service" interface="org.wso2.carbon.registry.core.service.RegistryService"
+ * cardinality="1..1" policy="dynamic" bind="setRegistryService" unbind="unsetRegistryService"
* @scr.reference name="ntask.component" interface="org.wso2.carbon.ntask.core.service.TaskService"
- * cardinality="1..1" policy="dynamic" bind="setTaskService"
- * unbind="unsetTaskService"
+ * cardinality="1..1" policy="dynamic" bind="setTaskService" unbind="unsetTaskService"
+ * @scr.reference name="hazelcast.instance.service" interface="com.hazelcast.core.HazelcastInstance"
+ * cardinality="0..1"policy="dynamic" bind="setHazelcastInstance" unbind="unsetHazelcastInstance"
+ * @scr.reference name="distributedObjectProvider" interface="org.apache.stratos.common.clustering.DistributedObjectProvider"
+ * cardinality="1..1" policy="dynamic" bind="setDistributedObjectProvider" unbind="unsetDistributedObjectProvider"
+ * @scr.reference name="config.context.service" interface="org.wso2.carbon.utils.ConfigurationContextService"
+ * cardinality="1..1" policy="dynamic" bind="setConfigurationContextService" unbind="unsetConfigurationContextService"
*/
public class AutoscalerServerComponent {
@@ -67,85 +73,118 @@ public class AutoscalerServerComponent {
private static final String COMPONENTS_CONFIG = CarbonUtils.getCarbonConfigDirPath()+ File.separator+"stratos-config.xml";
private static final int THREAD_POOL_SIZE = 10;
private static final Log log = LogFactory.getLog(AutoscalerServerComponent.class);
+ private static final String AUTOSCALER_COORDINATOR_LOCK = "AUTOSCALER_COORDINATOR_LOCK";
private AutoscalerTopologyEventReceiver asTopologyReceiver;
private AutoscalerHealthStatEventReceiver autoscalerHealthStatEventReceiver;
-
+ private ExecutorService executorService;
protected void activate(ComponentContext componentContext) throws Exception {
try {
- // Start topology receiver
+
XMLConfiguration conf = ConfUtil.getInstance(COMPONENTS_CONFIG).getConfiguration();
int threadPoolSize = conf.getInt(THREAD_POOL_SIZE_KEY, THREAD_POOL_SIZE);
String threadIdentifier = conf.getString(THREAD_IDENTIFIER_KEY, DEFAULT_IDENTIFIER);
- ExecutorService executorService = StratosThreadPool.getExecutorService(threadIdentifier, threadPoolSize);
- asTopologyReceiver = new AutoscalerTopologyEventReceiver();
- asTopologyReceiver.setExecutorService(executorService);
- asTopologyReceiver.execute();
+ executorService = StratosThreadPool.getExecutorService(threadIdentifier, threadPoolSize);
+
+ if(AutoscalerContext.getInstance().isClustered()) {
+ Thread coordinatorElectorThread = new Thread() {
+ @Override
+ public void run() {
+ ServiceReferenceHolder.getInstance().getHazelcastInstance()
+ .getLock(AUTOSCALER_COORDINATOR_LOCK).lock();
+
+ log.info("Elected this member [" + ServiceReferenceHolder.getInstance().getHazelcastInstance()
+ .getCluster().getLocalMember().getUuid() + "] " +
+ "as the autoscaler coordinator for the cluster");
+
+ AutoscalerContext.getInstance().setCoordinator(true);
+ try {
+ executeStartupTasks();
+ } catch (Throwable e) {
+ log.error("Error in activating the autoscaler component ", e);
+ }
+ }
+ };
+ coordinatorElectorThread.setName("Autoscaler coordinator elector thread");
+ executorService.submit(coordinatorElectorThread);
+ } else {
+ executeStartupTasks();
+ }
- if (log.isDebugEnabled()) {
- log.debug("Topology receiver executor service started");
+ if (log.isInfoEnabled()) {
+ log.info("Autoscaler server Component activated");
}
+ } catch (Throwable e) {
+ log.error("Error in activating the autoscaler component ", e);
+ }
+ }
+
+ private void executeStartupTasks() throws Exception{
+
+ // Start topology receiver
+ asTopologyReceiver = new AutoscalerTopologyEventReceiver();
+ asTopologyReceiver.setExecutorService(executorService);
+ asTopologyReceiver.execute();
+
+ if (log.isDebugEnabled()) {
+ log.debug("Topology receiver executor service started");
+ }
- // Start health stat receiver
- autoscalerHealthStatEventReceiver = new AutoscalerHealthStatEventReceiver();
- autoscalerHealthStatEventReceiver.setExecutorService(executorService);
- autoscalerHealthStatEventReceiver.execute();
- if (log.isDebugEnabled()) {
- log.debug("Health statistics receiver thread started");
- }
+ // Start health stat receiver
+ autoscalerHealthStatEventReceiver = new AutoscalerHealthStatEventReceiver();
+ autoscalerHealthStatEventReceiver.setExecutorService(executorService);
+ autoscalerHealthStatEventReceiver.execute();
+ if (log.isDebugEnabled()) {
+ log.debug("Health statistics receiver thread started");
+ }
- // Adding the registry stored partitions to the information model
- List<Partition> partitions = RegistryManager.getInstance().retrievePartitions();
- Iterator<Partition> partitionIterator = partitions.iterator();
- while (partitionIterator.hasNext()) {
- Partition partition = partitionIterator.next();
-// PartitionManager.getInstance().addPartitionToInformationModel(partition);
- }
+ // Adding the registry stored partitions to the information model
+ List<Partition> partitions = RegistryManager.getInstance().retrievePartitions();
+ Iterator<Partition> partitionIterator = partitions.iterator();
+ while (partitionIterator.hasNext()) {
+ Partition partition = partitionIterator.next();
+// PartitionManager.getInstance().addPartitionToInformationModel(partition);
+ }
- // Adding the network partitions stored in registry to the information model
-// List<NetworkPartitionLbHolder> nwPartitionHolders = RegistryManager.getInstance().retrieveNetworkPartitionLbHolders();
-// Iterator<NetworkPartitionLbHolder> nwPartitionIterator = nwPartitionHolders.iterator();
-// while (nwPartitionIterator.hasNext()) {
-// NetworkPartitionLbHolder nwPartition = nwPartitionIterator.next();
-// PartitionManager.getInstance().addNetworkPartitionLbHolder(nwPartition);
-// }
-
- List<AutoscalePolicy> asPolicies = RegistryManager.getInstance().retrieveASPolicies();
- Iterator<AutoscalePolicy> asPolicyIterator = asPolicies.iterator();
- while (asPolicyIterator.hasNext()) {
- AutoscalePolicy asPolicy = asPolicyIterator.next();
- PolicyManager.getInstance().addASPolicyToInformationModel(asPolicy);
- }
+ // Adding the network partitions stored in registry to the information model
+// List<NetworkPartitionLbHolder> nwPartitionHolders = RegistryManager.getInstance().retrieveNetworkPartitionLbHolders();
+// Iterator<NetworkPartitionLbHolder> nwPartitionIterator = nwPartitionHolders.iterator();
+// while (nwPartitionIterator.hasNext()) {
+// NetworkPartitionLbHolder nwPartition = nwPartitionIterator.next();
+// PartitionManager.getInstance().addNetworkPartitionLbHolder(nwPartition);
+// }
+
+ // Add AS policies to information model
+ List<AutoscalePolicy> asPolicies = RegistryManager.getInstance().retrieveASPolicies();
+ Iterator<AutoscalePolicy> asPolicyIterator = asPolicies.iterator();
+ while (asPolicyIterator.hasNext()) {
+ AutoscalePolicy asPolicy = asPolicyIterator.next();
+ PolicyManager.getInstance().addASPolicyToInformationModel(asPolicy);
+ }
- List<DeploymentPolicy> depPolicies = RegistryManager.getInstance().retrieveDeploymentPolicies();
- Iterator<DeploymentPolicy> depPolicyIterator = depPolicies.iterator();
- while (depPolicyIterator.hasNext()) {
- DeploymentPolicy depPolicy = depPolicyIterator.next();
- PolicyManager.getInstance().addDeploymentPolicy(depPolicy);
- }
+ // Add Deployment policies to information model
+ List<DeploymentPolicy> depPolicies = RegistryManager.getInstance().retrieveDeploymentPolicies();
+ Iterator<DeploymentPolicy> depPolicyIterator = depPolicies.iterator();
+ while (depPolicyIterator.hasNext()) {
+ DeploymentPolicy depPolicy = depPolicyIterator.next();
+ PolicyManager.getInstance().addDeploymentPolicy(depPolicy);
+ }
- //starting the processor chain
- ClusterStatusProcessorChain clusterStatusProcessorChain = new ClusterStatusProcessorChain();
- ServiceReferenceHolder.getInstance().setClusterStatusProcessorChain(clusterStatusProcessorChain);
+ //starting the processor chain
+ ClusterStatusProcessorChain clusterStatusProcessorChain = new ClusterStatusProcessorChain();
+ ServiceReferenceHolder.getInstance().setClusterStatusProcessorChain(clusterStatusProcessorChain);
- GroupStatusProcessorChain groupStatusProcessorChain = new GroupStatusProcessorChain();
- ServiceReferenceHolder.getInstance().setGroupStatusProcessorChain(groupStatusProcessorChain);
+ GroupStatusProcessorChain groupStatusProcessorChain = new GroupStatusProcessorChain();
+ ServiceReferenceHolder.getInstance().setGroupStatusProcessorChain(groupStatusProcessorChain);
- if (log.isInfoEnabled()) {
- log.info("Scheduling tasks to publish applications");
- }
-
- ApplicationSynchronizerTaskScheduler
- .schedule(ServiceReferenceHolder.getInstance()
- .getTaskService());
-
- if (log.isInfoEnabled()) {
- log.info("Autoscaler server Component activated");
- }
- } catch (Throwable e) {
- log.error("Error in activating the autoscaler component ", e);
+ if (log.isInfoEnabled()) {
+ log.info("Scheduling tasks to publish applications");
}
+
+ ApplicationSynchronizerTaskScheduler
+ .schedule(ServiceReferenceHolder.getInstance()
+ .getTaskService());
}
protected void deactivate(ComponentContext context) {
@@ -186,5 +225,30 @@ public class AutoscalerServerComponent {
}
ServiceReferenceHolder.getInstance().setTaskService(null);
}
+
+ protected void setConfigurationContextService(ConfigurationContextService cfgCtxService) {
+ ServiceReferenceHolder.getInstance().setAxisConfiguration(
+ cfgCtxService.getServerConfigContext().getAxisConfiguration());
+ }
+
+ protected void unsetConfigurationContextService(ConfigurationContextService cfgCtxService) {
+ ServiceReferenceHolder.getInstance().setAxisConfiguration(null);
+ }
+
+ public void setHazelcastInstance(HazelcastInstance hazelcastInstance) {
+ ServiceReferenceHolder.getInstance().setHazelcastInstance(hazelcastInstance);
+ }
+
+ public void unsetHazelcastInstance(HazelcastInstance hazelcastInstance) {
+ ServiceReferenceHolder.getInstance().setHazelcastInstance(null);
+ }
+
+ protected void setDistributedObjectProvider(DistributedObjectProvider distributedObjectProvider) {
+ ServiceReferenceHolder.getInstance().setDistributedObjectProvider(distributedObjectProvider);
+ }
+
+ protected void unsetDistributedObjectProvider(DistributedObjectProvider distributedObjectProvider) {
+ ServiceReferenceHolder.getInstance().setDistributedObjectProvider(null);
+ }
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/e54f2420/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/PolicyManager.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/PolicyManager.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/PolicyManager.java
index cce6e8c..96a9d28 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/PolicyManager.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/PolicyManager.java
@@ -31,6 +31,8 @@ import org.apache.stratos.autoscaler.exception.policy.InvalidPolicyException;
//import org.apache.stratos.autoscaler.pojo.policy.deployment.partition.PartitionManager;
import org.apache.stratos.autoscaler.pojo.policy.autoscale.AutoscalePolicy;
import org.apache.stratos.autoscaler.registry.RegistryManager;
+import org.apache.stratos.autoscaler.util.ServiceReferenceHolder;
+import org.apache.stratos.common.clustering.DistributedObjectProvider;
/**
* Manager class for the purpose of managing Autoscale/Deployment policy definitions.
@@ -38,10 +40,15 @@ import org.apache.stratos.autoscaler.registry.RegistryManager;
public class PolicyManager {
private static final Log log = LogFactory.getLog(PolicyManager.class);
+
+ private static final String AS_POLICY_ID_TO_AUTOSCALE_POLICY_MAP = "AS_POLICY_ID_TO_AUTOSCALE_POLICY_MAP";
+ private static final String DEPLOYMENT_POLICY_ID_TO_DEPLOYMENT_POLICY_MAP = "DEPLOYMENT_POLICY_ID_TO_DEPLOYMENT_POLICY_MAP";
+
+ private final transient DistributedObjectProvider distributedObjectProvider;
- private static Map<String, AutoscalePolicy> autoscalePolicyListMap = new HashMap<String, AutoscalePolicy>();
+ private static Map<String, AutoscalePolicy> autoscalePolicyListMap; //= new HashMap<String, AutoscalePolicy>();
- private static Map<String, DeploymentPolicy> deploymentPolicyListMap = new HashMap<String, DeploymentPolicy>();
+ private static Map<String, DeploymentPolicy> deploymentPolicyListMap; //= new HashMap<String, DeploymentPolicy>();
/* An instance of a PolicyManager is created when the class is loaded.
* Since the class is loaded only once, it is guaranteed that an object of
@@ -57,6 +64,10 @@ public class PolicyManager {
}
private PolicyManager() {
+ // Initialize distributed object provider
+ distributedObjectProvider = ServiceReferenceHolder.getInstance().getDistributedObjectProvider();
+ autoscalePolicyListMap = distributedObjectProvider.getMap(AS_POLICY_ID_TO_AUTOSCALE_POLICY_MAP);
+ deploymentPolicyListMap = distributedObjectProvider.getMap(DEPLOYMENT_POLICY_ID_TO_DEPLOYMENT_POLICY_MAP);
}
// Add the policy to information model and persist.
http://git-wip-us.apache.org/repos/asf/stratos/blob/e54f2420/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/ServiceReferenceHolder.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/ServiceReferenceHolder.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/ServiceReferenceHolder.java
index c3ce219..9930300 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/ServiceReferenceHolder.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/ServiceReferenceHolder.java
@@ -21,12 +21,16 @@ package org.apache.stratos.autoscaler.util;
*/
+import org.apache.axis2.engine.AxisConfiguration;
import org.apache.stratos.autoscaler.status.processor.cluster.ClusterStatusProcessorChain;
import org.apache.stratos.autoscaler.status.processor.group.GroupStatusProcessorChain;
+import org.apache.stratos.common.clustering.DistributedObjectProvider;
import org.wso2.carbon.ntask.core.service.TaskService;
import org.wso2.carbon.registry.core.Registry;
import org.wso2.carbon.registry.core.session.UserRegistry;
+import com.hazelcast.core.HazelcastInstance;
+
public class ServiceReferenceHolder {
private static ServiceReferenceHolder instance;
@@ -34,6 +38,9 @@ public class ServiceReferenceHolder {
private TaskService taskService;
private ClusterStatusProcessorChain clusterStatusProcessorChain;
private GroupStatusProcessorChain groupStatusProcessorChain;
+ private AxisConfiguration axisConfiguration;
+ private DistributedObjectProvider distributedObjectProvider;
+ private HazelcastInstance hazelcastInstance;
private ServiceReferenceHolder() {
}
@@ -44,6 +51,30 @@ public class ServiceReferenceHolder {
}
return instance;
}
+
+ public void setAxisConfiguration(AxisConfiguration axisConfiguration) {
+ this.axisConfiguration = axisConfiguration;
+ }
+
+ public AxisConfiguration getAxisConfiguration() {
+ return axisConfiguration;
+ }
+
+ public void setDistributedObjectProvider(DistributedObjectProvider distributedObjectProvider) {
+ this.distributedObjectProvider = distributedObjectProvider;
+ }
+
+ public DistributedObjectProvider getDistributedObjectProvider() {
+ return distributedObjectProvider;
+ }
+
+ public void setHazelcastInstance(HazelcastInstance hazelcastInstance) {
+ this.hazelcastInstance = hazelcastInstance;
+ }
+
+ public HazelcastInstance getHazelcastInstance() {
+ return hazelcastInstance;
+ }
public void setRegistry(UserRegistry governanceSystemRegistry) {
registry = governanceSystemRegistry;