From 6e481c109faf970288bae780bea01c236571e277 Mon Sep 17 00:00:00 2001 From: rfeng Date: Fri, 31 Jul 2009 03:42:17 +0000 Subject: Generate a gateway bundle that aggregate split META-INF/services resources git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@799510 13f79535-47bb-0310-9956-ffa450edef68 --- .../sca/binding/ws/axis2/Axis2ServiceProvider.java | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) (limited to 'java/sca/modules/binding-ws-axis2/src') diff --git a/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceProvider.java b/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceProvider.java index e6b18f8068..e314046793 100644 --- a/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceProvider.java +++ b/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceProvider.java @@ -29,6 +29,7 @@ import java.security.PrivilegedActionException; import java.security.PrivilegedExceptionAction; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collection; import java.util.Collections; import java.util.Enumeration; import java.util.HashMap; @@ -49,8 +50,6 @@ import javax.wsdl.extensions.UnknownExtensibilityElement; import javax.wsdl.extensions.soap.SOAPAddress; import javax.wsdl.extensions.soap12.SOAP12Address; import javax.xml.namespace.QName; -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.stream.XMLInputFactory; import org.apache.axiom.om.OMAbstractFactory; import org.apache.axiom.om.OMElement; @@ -62,6 +61,7 @@ import org.apache.axis2.Constants.Configuration; import org.apache.axis2.addressing.AddressingConstants; import org.apache.axis2.context.ConfigurationContext; import org.apache.axis2.context.MessageContext; +import org.apache.axis2.deployment.URLBasedAxisConfigurator; import org.apache.axis2.deployment.util.Utils; import org.apache.axis2.description.AxisEndpoint; import org.apache.axis2.description.AxisOperation; @@ -91,6 +91,7 @@ import org.apache.tuscany.sca.binding.ws.axis2.policy.configuration.Axis2ConfigP import org.apache.tuscany.sca.binding.ws.axis2.policy.configurator.Axis2BindingHeaderConfigurator; import org.apache.tuscany.sca.binding.ws.axis2.policy.header.Axis2HeaderPolicy; import org.apache.tuscany.sca.binding.ws.axis2.policy.header.Axis2SOAPHeaderString; +import org.apache.tuscany.sca.core.ExtensionPointRegistry; import org.apache.tuscany.sca.core.FactoryExtensionPoint; import org.apache.tuscany.sca.core.assembly.RuntimeAssemblyFactory; import org.apache.tuscany.sca.host.http.ServletHost; @@ -170,7 +171,7 @@ public class Axis2ServiceProvider { * This classloader is used in OSGi to work around XXXFactory.newInstance() */ private static class MultiParentClassLoader extends ClassLoader { - private final Set classLoaders = new HashSet(); + private final Collection classLoaders = new ArrayList(); /** * @param parent The parent classloaders @@ -180,7 +181,7 @@ public class Axis2ServiceProvider { super(parent); if (loaders != null) { for (ClassLoader cl : loaders) { - if (cl != null && cl != parent) { + if (cl != null && cl != parent && !classLoaders.contains(cl)) { this.classLoaders.add(cl); } } @@ -247,13 +248,15 @@ public class Axis2ServiceProvider { // security policy. configContext = AccessController.doPrivileged(new PrivilegedExceptionAction() { public ConfigurationContext run() throws AxisFault { - ClassLoader cl1 = modelFactories.getFactory(XMLInputFactory.class).getClass().getClassLoader(); - ClassLoader cl2 = - modelFactories.getFactory(DocumentBuilderFactory.class).getClass().getClassLoader(); + ClassLoader cl0 = getClass().getClassLoader(); + ClassLoader cl1 = URLBasedAxisConfigurator.class.getClassLoader(); + ClassLoader cl2 = ExtensionPointRegistry.class.getClassLoader(); +// ClassLoader cl3 = +// modelFactories.getFactory(DocumentBuilderFactory.class).getClass().getClassLoader(); ClassLoader tccl = Thread.currentThread().getContextClassLoader(); ClassLoader newTccl = tccl; - if (cl1 != tccl || cl2 != tccl) { - newTccl = new MultiParentClassLoader(null, new ClassLoader[] {cl1, cl2}); + if (cl0 != tccl || cl1 != tccl || cl2 != tccl) { + newTccl = new MultiParentClassLoader(null, new ClassLoader[] {cl0, cl1, cl2, tccl}); } if (newTccl != null && newTccl != tccl) { Thread.currentThread().setContextClassLoader(newTccl); -- cgit v1.2.3