You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by js...@apache.org on 2006/03/04 12:22:48 UTC

svn commit: r383088 - in /incubator/tuscany/java/sca/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2: handler/ExternalWebServiceClient.java handler/WebServiceEntryPointInOutSyncMessageReceiver.java util/AxiomHelper.java

Author: jsdelfino
Date: Sat Mar  4 03:22:44 2006
New Revision: 383088

URL: http://svn.apache.org/viewcvs?rev=383088&view=rev
Log:
Added all the required classloader switches - set the server classloader on the thread to make Axis happy, and set the app classloader on the thread when invoking SDO to make SDO happy

Modified:
    incubator/tuscany/java/sca/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/handler/ExternalWebServiceClient.java
    incubator/tuscany/java/sca/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/handler/WebServiceEntryPointInOutSyncMessageReceiver.java
    incubator/tuscany/java/sca/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/util/AxiomHelper.java

Modified: incubator/tuscany/java/sca/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/handler/ExternalWebServiceClient.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/handler/ExternalWebServiceClient.java?rev=383088&r1=383087&r2=383088&view=diff
==============================================================================
--- incubator/tuscany/java/sca/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/handler/ExternalWebServiceClient.java (original)
+++ incubator/tuscany/java/sca/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/handler/ExternalWebServiceClient.java Sat Mar  4 03:22:44 2006
@@ -62,18 +62,33 @@
      */
     public Object invoke(Method method, Object[] args) {
 
-        ServiceClient serviceClient = createServiceClient(method);
-
+        ServiceClient serviceClient; 
+        ClassLoader ccl=Thread.currentThread().getContextClassLoader();
+        try {
+            Thread.currentThread().setContextClassLoader(ExternalWebServiceClient.class.getClassLoader());
+            
+            serviceClient = createServiceClient(method);
+            
+        } finally {
+            Thread.currentThread().setContextClassLoader(ccl);
+        }
+        
         String typeName = method.getName();
         String typeNS = wsPortMetaData.getPortType().getQName().getNamespaceURI();
         
         OMElement requestOM = AxiomHelper.toOMElement(typeHelper, args, new QName(typeNS, typeName));
-
+        
         OMElement responseOM;
+        ccl=Thread.currentThread().getContextClassLoader();
         try {
+            Thread.currentThread().setContextClassLoader(ExternalWebServiceClient.class.getClassLoader());
+
             responseOM = serviceClient.sendReceive(requestOM);
+            
         } catch (AxisFault e) {
             throw new ServiceRuntimeException(e);
+        } finally {
+            Thread.currentThread().setContextClassLoader(ccl);
         }
 
         Object[] os = AxiomHelper.toObjects(typeHelper, responseOM);
@@ -114,17 +129,10 @@
         }
 
         ServiceClient serviceClient;
-        ClassLoader ccl=Thread.currentThread().getContextClassLoader();
         try {
-            Thread.currentThread().setContextClassLoader(ExternalWebServiceClient.class.getClassLoader());
-            //URL url=ExternalWebServiceClient.class.getClassLoader().getResource("tuscany-axis2.xml");
-            //ConfigurationContext configurationContext=new ConfigurationContextFactory().createConfigurationContextFromFileSystem(url.toString());
-            //serviceClient = new ServiceClient(configurationContext, createAnonymousService());
             serviceClient = new ServiceClient();
         } catch (org.apache.axis2.AxisFault e) {
             throw new RuntimeException(e);
-        } finally {
-            Thread.currentThread().setContextClassLoader(ccl);
         }
 
         serviceClient.setOptions(options);

Modified: incubator/tuscany/java/sca/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/handler/WebServiceEntryPointInOutSyncMessageReceiver.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/handler/WebServiceEntryPointInOutSyncMessageReceiver.java?rev=383088&r1=383087&r2=383088&view=diff
==============================================================================
--- incubator/tuscany/java/sca/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/handler/WebServiceEntryPointInOutSyncMessageReceiver.java (original)
+++ incubator/tuscany/java/sca/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/handler/WebServiceEntryPointInOutSyncMessageReceiver.java Sat Mar  4 03:22:44 2006
@@ -71,7 +71,10 @@
     }
 
     public void invokeBusinessLogic(MessageContext msgContext, MessageContext outMsgContext) throws AxisFault {
+        
+        ClassLoader ccl=Thread.currentThread().getContextClassLoader();
         try {
+            Thread.currentThread().setContextClassLoader(entryPoint.getAggregate().getAssemblyModelContext().getApplicationResourceLoader().getClassLoader());
             
             AxisOperation axisOperation = msgContext.getAxisOperation();
             String axisOperationName= axisOperation.getName().getLocalPart();
@@ -158,6 +161,8 @@
             
             e.printStackTrace();
             throw new AxisFault("Error creating DataObject from Soapenvelope. " + e.getClass() + " " + e.getMessage(), e);
+        } finally {
+            Thread.currentThread().setContextClassLoader(ccl);
         }
 
     }

Modified: incubator/tuscany/java/sca/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/util/AxiomHelper.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/util/AxiomHelper.java?rev=383088&r1=383087&r2=383088&view=diff
==============================================================================
--- incubator/tuscany/java/sca/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/util/AxiomHelper.java (original)
+++ incubator/tuscany/java/sca/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/util/AxiomHelper.java Sat Mar  4 03:22:44 2006
@@ -106,7 +106,14 @@
             new XMLHelperImpl(typeHelper).save(dataObject, typeQN.getNamespaceURI(), typeQN.getLocalPart(), pos);
             pos.close();
 
-            XMLStreamReader parser = XMLInputFactory.newInstance().createXMLStreamReader(pis);
+            XMLStreamReader parser;
+            ClassLoader ccl=Thread.currentThread().getContextClassLoader();
+            try {
+                Thread.currentThread().setContextClassLoader(AxiomHelper.class.getClassLoader());
+                parser = XMLInputFactory.newInstance().createXMLStreamReader(pis);
+            } finally {
+                Thread.currentThread().setContextClassLoader(ccl);
+            }
             OMXMLParserWrapper builder = OMXMLBuilderFactory.createStAXOMBuilder(OMAbstractFactory.getOMFactory(), parser);
             OMElement root = builder.getDocumentElement();
 
@@ -133,7 +140,14 @@
             PipedOutputStream pos = new PipedOutputStream();
             PipedInputStream pis = new PipedInputStream(pos);
 
-            omElement.serialize(pos);
+            ClassLoader ccl=Thread.currentThread().getContextClassLoader();
+            try {
+                Thread.currentThread().setContextClassLoader(AxiomHelper.class.getClassLoader());
+                omElement.serialize(pos);
+            } finally {
+                Thread.currentThread().setContextClassLoader(ccl);
+            }
+            
             pos.flush();
             pos.close();