package org.jboss.web.loadbalancer;
import java.io.IOException;
import javax.management.ObjectName;
import javax.servlet.ServletException;
import org.jboss.mx.util.MBeanProxyExt;
import org.jboss.system.ServiceMBeanSupport;
import org.jboss.web.loadbalancer.scheduler.NoHostAvailableException;
import org.jboss.web.loadbalancer.scheduler.SchedulerMBean;
import org.jboss.web.loadbalancer.util.Request;
import org.w3c.dom.Element;
public class LoadbalancerService
extends ServiceMBeanSupport
implements LoadbalancerServiceMBean
{
protected Element config;
protected Loadbalancer loadbalancer;
protected ObjectName schedulerObjectName;
protected SchedulerMBean scheduler;
protected int timeout = 20000;
protected void startService() throws java.lang.Exception
{
scheduler = (SchedulerMBean)
MBeanProxyExt.create(SchedulerMBean.class,
schedulerObjectName);
loadbalancer = new Loadbalancer(scheduler, timeout);
}
protected void destroyService() throws java.lang.Exception
{
loadbalancer = null;
}
public void setScheduler(ObjectName schedulerObjectName)
{
this.schedulerObjectName = schedulerObjectName;
}
public ObjectName getScheduler()
{
return schedulerObjectName;
}
public int getConnectionTimeout()
{
return timeout;
}
public void setConnectionTimeout(int newTimeout)
{
this.timeout = newTimeout;
if (loadbalancer != null)
{
loadbalancer.setConnectionTimeout(newTimeout);
}
}
public int getConnectionsInUse()
{
return loadbalancer.getConnectionsInUse();
}
public void createMethod(Request schedRequest) throws NoHostAvailableException
{
loadbalancer.createMethod(schedRequest);
}
public void addRequestData(Request schedRequest)
{
loadbalancer.addRequestData(schedRequest);
}
public void handleRequest(Request schedRequest) throws ServletException, IOException
{
loadbalancer.handleRequest(schedRequest);
}
}