| Method from org.jboss.proxy.generic.ProxyFactoryHA Detail: |
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(Object cacheID,
String proxyBindingName,
ClassLoader loader,
Class[] ifaces) {
GenericProxyFactory proxyFactory = new GenericProxyFactory();
theProxy = proxyFactory.createProxy(cacheID, getTargetName(), invoker,
getJndiName(), proxyBindingName, getInterceptorClasses(), loader, ifaces);
}
|
public void createService() throws Exception {
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);
}
|
protected void destroyService() throws Exception {
super.destroyService();
getServer().removeNotificationListener(getTargetName(), listener);
}
|
public String getLoadBalancePolicy() {
return loadBalancePolicy;
}
|
public HAPartition getPartition() {
return partition;
}
|
public synchronized void replicantsChanged(String key,
List newReplicants,
int newReplicantsViewId,
boolean merge) {
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(String loadBalancePolicy) {
this.loadBalancePolicy = loadBalancePolicy;
}
|
public void setPartition(HAPartition partition) {
this.partition = partition;
}
|
protected void startService() throws Exception {
String partitionName = partition.getPartitionName();
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() throws Exception {
super.stopService();
// JBAS-5164. Unregister the listener first, or when we destroy
// the target we will get a callback and rebind the proxy
if (drm != null)
drm.unregisterListener(replicantName, this);
try
{
// JRMPInvokerProxyHA.colocation.remove(new Integer(jmxNameHash));
invokerHA.unregisterBean(getTargetName());
target.destroy();
}
catch (Exception ignored)
{
// ignore.
}
}
|