Author: rfeng
Date: Mon Apr 13 19:25:51 2009
New Revision: 764571

URL: http://svn.apache.org/viewvc?rev=764571&view=rev
Log:
Add exclusion of axis2-adb to avoid split packages
Add TCCL to work around XMLInputFactory.newInstance call made by Axis2 which is 
not OSGi-friendly

Modified:
    tuscany/java/sca/modules/binding-ws-axis2/pom.xml
    
tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceBindingProvider.java
    
tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceProvider.java

Modified: tuscany/java/sca/modules/binding-ws-axis2/pom.xml
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-ws-axis2/pom.xml?rev=764571&r1=764570&r2=764571&view=diff
==============================================================================
--- tuscany/java/sca/modules/binding-ws-axis2/pom.xml (original)
+++ tuscany/java/sca/modules/binding-ws-axis2/pom.xml Mon Apr 13 19:25:51 2009
@@ -178,6 +178,10 @@
             <scope>runtime</scope>
             <exclusions>
                 <exclusion>
+                    <groupId>org.apache.axis2</groupId>
+                    <artifactId>axis2-adb</artifactId>
+                </exclusion>
+                <exclusion>
                     <groupId>stax</groupId>
                     <artifactId>stax-api</artifactId>
                 </exclusion>

Modified: 
tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceBindingProvider.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceBindingProvider.java?rev=764571&r1=764570&r2=764571&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceBindingProvider.java
 (original)
+++ 
tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceBindingProvider.java
 Mon Apr 13 19:25:51 2009
@@ -18,6 +18,8 @@
  */
 package org.apache.tuscany.sca.binding.ws.axis2;
 
+import javax.xml.stream.XMLInputFactory;
+
 import org.apache.axiom.om.OMElement;
 import org.apache.tuscany.sca.binding.ws.WebServiceBinding;
 import org.apache.tuscany.sca.core.FactoryExtensionPoint;
@@ -58,7 +60,9 @@
         InterfaceContract contract = wsBinding.getBindingInterfaceContract();
         contract.getInterface().resetDataBinding(OMElement.class.getName());
 
-        axisProvider = new Axis2ServiceProvider(component, service, wsBinding, 
servletHost, messageFactory);
+        // Pass in the XMLInputFactory to work around the Axis2 way of loading 
XMLInputFactory
+        XMLInputFactory inputFactory = 
modelFactories.getFactory(XMLInputFactory.class);
+        axisProvider = new Axis2ServiceProvider(component, service, wsBinding, 
servletHost, messageFactory, inputFactory);
     }
 
     public void start() {

Modified: 
tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceProvider.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceProvider.java?rev=764571&r1=764570&r2=764571&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceProvider.java
 (original)
+++ 
tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceProvider.java
 Mon Apr 13 19:25:51 2009
@@ -43,6 +43,7 @@
 import javax.wsdl.extensions.soap.SOAPAddress;
 import javax.wsdl.extensions.soap12.SOAP12Address;
 import javax.xml.namespace.QName;
+import javax.xml.stream.XMLInputFactory;
 
 import org.apache.axiom.om.OMAbstractFactory;
 import org.apache.axiom.om.OMElement;
@@ -161,7 +162,8 @@
                                 AbstractContract contract,
                                 WebServiceBinding wsBinding,
                                 ServletHost servletHost,
-                                MessageFactory messageFactory) {
+                                MessageFactory messageFactory,
+                                final XMLInputFactory xmlInputFactory) {
 
         this.component = component; 
         this.contract = contract; 
@@ -174,20 +176,27 @@
             // TuscanyAxisConfigurator tuscanyAxisConfigurator = new 
TuscanyAxisConfigurator();
             // Allow privileged access to read properties. Requires 
PropertyPermission read in
             // security policy.
-            TuscanyAxisConfigurator tuscanyAxisConfigurator =
-                AccessController.doPrivileged(new 
PrivilegedExceptionAction<TuscanyAxisConfigurator>() {
-                    public TuscanyAxisConfigurator run() throws AxisFault {
-                        return new TuscanyAxisConfigurator(isRampartRequired);
+            configContext = AccessController.doPrivileged(new 
PrivilegedExceptionAction<ConfigurationContext>() {
+                public ConfigurationContext run() throws AxisFault {
+                    ClassLoader newTccl = 
xmlInputFactory.getClass().getClassLoader();
+                    ClassLoader tccl = 
Thread.currentThread().getContextClassLoader();
+                    if (newTccl != null && newTccl != tccl) {
+                        Thread.currentThread().setContextClassLoader(newTccl);
                     }
-                });
-            configContext = tuscanyAxisConfigurator.getConfigurationContext();
+                    try {
+                        return new 
TuscanyAxisConfigurator(isRampartRequired).getConfigurationContext();
+                    } finally {
+                        if (newTccl != null && newTccl != tccl) {
+                            Thread.currentThread().setContextClassLoader(tccl);
+                        }
+                    }
+                }
+            });
             // deployRampartModule();
             // configureSecurity();
         } catch (PrivilegedActionException e) {
             throw new ServiceRuntimeException(e.getException());
-        } catch (AxisFault e) {
-            throw new ServiceRuntimeException(e); // TODO: better exception
-        } 
+        }
 
         configContext.setContextRoot(servletHost.getContextPath());
         


Reply via email to