package org.jboss.net.axis;
import org.jboss.axis.EngineConfiguration;
import org.jboss.axis.Handler;
import org.jboss.axis.deployment.wsdd.WSDDService;
import org.jboss.axis.deployment.wsdd.providers.WSDDHandlerProvider;
public class ServiceClassLoaderAwareWSDDHandlerProvider
extends WSDDHandlerProvider
{
public Handler newProviderInstance(WSDDService arg0,
EngineConfiguration arg1)
throws Exception
{
Deployment deployment = (Deployment)arg0.getParametersTable().
get(Constants.SERVICE_DEPLOYMENT_PARAMETER);
if (deployment != null)
{
ClassLoader loader = deployment.getDeploymentLoader();
ClassLoader old = Thread.currentThread().getContextClassLoader();
Thread.currentThread().setContextClassLoader(loader);
try
{
return super.newProviderInstance(arg0, arg1);
}
finally
{
Thread.currentThread().setContextClassLoader(old);
}
}
else
{
return super.newProviderInstance(arg0, arg1);
}
}
}