package org.jboss.remoting;
import org.jboss.logging.Logger;
import org.jboss.remoting.loading.ClassByteClassLoader;
import org.jboss.remoting.marshal.MarshallLoaderFactory;
public abstract class AbstractInvoker implements Invoker
{
protected final Logger log = Logger.getLogger(getClass());
protected ClassByteClassLoader classbyteloader;
protected InvokerLocator locator;
protected InvokerLocator localServerLocator;
public AbstractInvoker (InvokerLocator locator)
{
this.classbyteloader = new ClassByteClassLoader(this.getClass().getClassLoader());
this.locator = locator;
localServerLocator = InvokerRegistry.getSuitableServerLocatorForRemote(locator);
try
{
InvokerLocator loaderLocator = MarshallLoaderFactory.convertLocator(locator);
if(loaderLocator != null)
{
classbyteloader.setClientInvoker(new Client(loaderLocator));
}
}
catch(Exception e)
{
log.error("Could not create remote class loading for invoker.", e);
}
}
public InvokerLocator getLocator ()
{
return locator;
}
public void setClientLocator(InvokerLocator locator)
{
localServerLocator = locator;
}
public InvokerLocator getClientLocator()
{
return localServerLocator;
}
public synchronized void setClassLoader (ClassLoader classloader)
{
this.classbyteloader = new ClassByteClassLoader(classloader);
}
public synchronized ClassLoader getClassLoader()
{
return classbyteloader;
}
}