package org.jboss.net.axis;
import org.jboss.axis.EngineConfiguration;
import org.jboss.axis.EngineConfigurationFactory;
import org.jboss.axis.client.AxisClient;
import org.jboss.axis.client.Service;
import org.jboss.axis.configuration.EngineConfigurationFactoryFinder;
import javax.naming.Context;
import javax.naming.Name;
import javax.naming.Reference;
import javax.naming.spi.ObjectFactory;
import java.util.Hashtable;
public class ServiceFactory implements ObjectFactory
{
public Object getObjectInstance(Object refObject,
Name name,
Context nameCtx,
Hashtable environment)
throws Exception
{
Service instance = null;
if (refObject instanceof Reference)
{
Reference ref = (Reference)refObject;
Class serviceClass =
Thread.currentThread().getContextClassLoader().loadClass(ref.getClassName());
EngineConfigurationFactory factory =
EngineConfigurationFactoryFinder.newFactory((String)ref
.get(Constants.CONFIGURATION_CONTEXT)
.getContent());
EngineConfiguration engine = null;
if (factory != null)
{
engine = factory.getClientEngineConfig();
}
instance = (Service)serviceClass.newInstance();
instance.setEngineConfiguration(engine);
instance.setEngine(new AxisClient(engine));
}
return instance;
}
}