package org.jboss.ha.jndi;
import java.rmi.server.RMIServerSocketFactory;
import java.rmi.server.RMIClientSocketFactory;
import org.jboss.ha.framework.server.HARMIServerImpl;
import org.jboss.ha.framework.interfaces.RoundRobin;
import org.jnp.interfaces.Naming;
public class HANamingService
extends DetachedHANamingService
implements HANamingServiceMBean
{
protected RMIClientSocketFactory clientSocketFactory;
protected RMIServerSocketFactory serverSocketFactory;
protected String clientSocketFactoryName;
protected String serverSocketFactoryName;
protected int rmiPort = 0;
HARMIServerImpl rmiserver;
public HANamingService()
{
}
public void setRmiPort(int p)
{
rmiPort = p;
}
public int getRmiPort()
{
return rmiPort;
}
public String getClientSocketFactory()
{
return serverSocketFactoryName;
}
public void setClientSocketFactory(String factoryClassName)
throws ClassNotFoundException, InstantiationException, IllegalAccessException
{
this.clientSocketFactoryName = factoryClassName;
ClassLoader loader = Thread.currentThread().getContextClassLoader();
Class clazz = loader.loadClass(clientSocketFactoryName);
clientSocketFactory = (RMIClientSocketFactory) clazz.newInstance();
}
public String getServerSocketFactory()
{
return serverSocketFactoryName;
}
public void setServerSocketFactory(String factoryClassName)
throws ClassNotFoundException, InstantiationException, IllegalAccessException
{
this.serverSocketFactoryName = factoryClassName;
ClassLoader loader = Thread.currentThread().getContextClassLoader();
Class clazz = loader.loadClass(serverSocketFactoryName);
serverSocketFactory = (RMIServerSocketFactory) clazz.newInstance();
}
protected void stopService() throws Exception
{
super.stopService();
log.debug("destroy ha rmiserver");
this.rmiserver.destroy ();
}
protected Naming getNamingProxy() throws Exception
{
rmiserver = new HARMIServerImpl(partition, "HAJNDI", Naming.class,
theServer, rmiPort, clientSocketFactory, serverSocketFactory, bindAddress);
Naming proxy = (Naming) rmiserver.createHAStub(new RoundRobin());
return proxy;
}
}