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();