Methods Summary |
---|
protected void | containerIsAboutToStop()
if (target != null)
{
target.setInvocationsAuthorization(HATarget.DISABLE_INVOCATIONS);
target.disable();
}
|
protected void | containerIsFullyStarted()
if (target != null)
target.setInvocationsAuthorization(HATarget.ENABLE_INVOCATIONS);
|
protected void | createProxy(java.lang.Object cacheID, java.lang.String proxyBindingName, java.lang.ClassLoader loader, java.lang.Class[] ifaces)
GenericProxyFactory proxyFactory = new GenericProxyFactory();
theProxy = proxyFactory.createProxy(cacheID, getTargetName(), invoker,
getJndiName(), proxyBindingName, getInterceptorClasses(), loader, ifaces);
|
public void | createService()
super.createService();
// we register our inner-class to retrieve STATE notifications from our container
AttributeChangeNotificationFilter filter = new AttributeChangeNotificationFilter();
filter.enableAttribute("State");
listener = new StateChangeListener();
getServer().addNotificationListener(getTargetName(), listener, filter, null);
|
public void | destroyService()
super.destroyService();
getServer().removeNotificationListener(getTargetName(), listener);
|
public java.lang.String | getLoadBalancePolicy()
return loadBalancePolicy;
|
public javax.management.ObjectName | getPartitionObjectName()
return partitionObjectName;
|
public synchronized void | replicantsChanged(java.lang.String key, java.util.List newReplicants, int newReplicantsViewId)
try
{
if (invoker instanceof InvokerProxyHA)
((InvokerProxyHA) invoker).updateClusterInfo(target.getReplicants(), target.getCurrentViewId());
log.debug ("Rebinding in JNDI... " + key);
rebind();
}
catch (Exception none)
{
log.debug(none);
}
|
public void | setLoadBalancePolicy(java.lang.String loadBalancePolicy)
this.loadBalancePolicy = loadBalancePolicy;
|
public void | setPartitionObjectName(javax.management.ObjectName partitionObjectName)
this.partitionObjectName = partitionObjectName;
|
protected void | startService()
String partitionName = (String) getServer().getAttribute(partitionObjectName, "PartitionName");
HAPartition partition = (HAPartition) getServer().getAttribute(partitionObjectName, "HAPartition");
if (partition == null)
throw new RuntimeException("Partition is not registered: " + partitionObjectName);
this.drm = partition.getDistributedReplicantManager ();
replicantName = getTargetName().toString();
invokerHA = (InvokerHA) Registry.lookup(getInvokerName());
if (invokerHA == null)
throw new RuntimeException("Invoker is not registered: " + getInvokerName());
int mode = HATarget.MAKE_INVOCATIONS_WAIT;
if (state == ServiceMBean.STARTED)
mode = HATarget.ENABLE_INVOCATIONS;
target = new HATarget(partition, replicantName, invokerHA.getStub(), mode);
invokerHA.registerBean(getTargetName(), target);
String clusterFamilyName = partitionName + "/" + getTargetName() + "/";
// make ABSOLUTLY sure we do register with the DRM AFTER the HATarget
// otherwise we will refresh the *old* home in JNDI (ie before the proxy
// is re-generated)
drm.registerListener (replicantName, this);
ClassLoader cl = Thread.currentThread().getContextClassLoader();
Class clazz;
LoadBalancePolicy policy;
clazz = cl.loadClass(loadBalancePolicy);
policy = (LoadBalancePolicy)clazz.newInstance();
invoker = invokerHA.createProxy(getTargetName(), policy, clusterFamilyName + "H");
// JRMPInvokerProxyHA.colocation.add(new Integer(jmxNameHash));
super.startService();
|
public void | stopService()
super.stopService();
try
{
// JRMPInvokerProxyHA.colocation.remove(new Integer(jmxNameHash));
invokerHA.unregisterBean(getTargetName());
target.destroy();
}
catch (Exception ignored)
{
// ignore.
}
if (drm != null)
drm.unregisterListener(replicantName, this);
|