You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by di...@apache.org on 2006/09/23 01:43:13 UTC

svn commit: r449127 - in /webservices/axis2/trunk/java/modules: integration/test/org/apache/axis2/spring/SpringServiceTest.java kernel/src/org/apache/axis2/Constants.java kernel/src/org/apache/axis2/receivers/AbstractMessageReceiver.java

Author: dims
Date: Fri Sep 22 16:43:12 2006
New Revision: 449127

URL: http://svn.apache.org/viewvc?view=rev&rev=449127
Log:
Fix for AXIS2-1214 - Context envContext = (Context)initContext.lookup("java:comp/env") throws NameNotFoundException

- Keep the old Axis2 1.0 behavior as default (don't save/restore) the class loader.
- Spring folks or others who rely on TCCL to find the classes in the aar can throw in the switch for "forceTCCL" if/when they need it in services.xml


Modified:
    webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/spring/SpringServiceTest.java
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/Constants.java
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/receivers/AbstractMessageReceiver.java

Modified: webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/spring/SpringServiceTest.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/spring/SpringServiceTest.java?view=diff&rev=449127&r1=449126&r2=449127
==============================================================================
--- webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/spring/SpringServiceTest.java (original)
+++ webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/spring/SpringServiceTest.java Fri Sep 22 16:43:12 2006
@@ -36,7 +36,6 @@
 import org.apache.axis2.extensions.spring.receivers.SpringAppContextAwareObjectSupplier;
 import org.apache.axis2.integration.UtilServer;
 import org.apache.axis2.integration.UtilServerBasedTestCase;
-import org.apache.axis2.receivers.AbstractMessageReceiver;
 import org.apache.axis2.receivers.RawXMLINOutMessageReceiver;
 import org.apache.axis2.wsdl.WSDLConstants;
 import org.springframework.context.support.ClassPathXmlApplicationContext;
@@ -131,6 +130,7 @@
 
         service.setClassLoader(Thread.currentThread().getContextClassLoader());
         service.addParameter(new Parameter(Constants.SERVICE_OBJECT_SUPPLIER, supplierName));
+        service.addParameter(new Parameter(Constants.SERVICE_FORCE_TCCL, "true"));
         service.addParameter(new Parameter(SpringAppContextAwareObjectSupplier.SERVICE_SPRING_BEANNAME, beanName));
 
         AxisOperation axisOp = new InOutAxisOperation(opName);
@@ -153,6 +153,7 @@
 
         service.setClassLoader(Thread.currentThread().getContextClassLoader());
         service.addParameter(new Parameter(Constants.SERVICE_OBJECT_SUPPLIER, supplierName));
+        service.addParameter(new Parameter(Constants.SERVICE_FORCE_TCCL, "true"));
         service.addParameter(new Parameter(SpringAppContextAwareObjectSupplier.SERVICE_SPRING_BEANNAME, beanName));
 
         AxisOperation axisOp = new OutInAxisOperation(opName);

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/Constants.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/Constants.java?view=diff&rev=449127&r1=449126&r2=449127
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/Constants.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/Constants.java Fri Sep 22 16:43:12 2006
@@ -106,6 +106,7 @@
     //Parameter name of Service impl class
     public static final String SERVICE_CLASS = "ServiceClass";
     public static final String SERVICE_OBJECT_SUPPLIER = "ServiceObjectSupplier";
+    public static final String SERVICE_FORCE_TCCL = "forceTCCL";
 
     /**
      * Field REQUEST_URL_PREFIX

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/receivers/AbstractMessageReceiver.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/receivers/AbstractMessageReceiver.java?view=diff&rev=449127&r1=449126&r2=449127
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/receivers/AbstractMessageReceiver.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/receivers/AbstractMessageReceiver.java Fri Sep 22 16:43:12 2006
@@ -24,6 +24,7 @@
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.Constants;
 import org.apache.axis2.util.MultiParentClassLoader;
+import org.apache.axis2.util.JavaUtils;
 import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.context.ServiceContext;
 import org.apache.axis2.description.AxisService;
@@ -39,9 +40,10 @@
 //    public static final String SERVICE_CLASS = "ServiceClass";
 //    public static final String SERVICE_OBJECT_SUPPLIER = "ServiceObjectSupplier";
     public static final String SCOPE = "scope";
+    protected boolean forceTCCL = false;
 
     protected void saveTCCL(MessageContext msgContext) {
-        if (msgContext.getAxisService() != null &&
+        if (forceTCCL && msgContext.getAxisService() != null &&
                 msgContext.getAxisService().getClassLoader() != null) {
             Thread.currentThread().setContextClassLoader(new MultiParentClassLoader(new URL[]{}, new ClassLoader[]{
                     msgContext.getAxisService().getClassLoader(),
@@ -51,9 +53,11 @@
     }
 
     protected void restoreTCCL() {
-        ClassLoader tccl = Thread.currentThread().getContextClassLoader();
-        if (tccl != null && tccl instanceof MultiParentClassLoader) {
-            Thread.currentThread().setContextClassLoader(((MultiParentClassLoader) tccl).getParents()[1]);
+        if(forceTCCL) {
+            ClassLoader tccl = Thread.currentThread().getContextClassLoader();
+            if (tccl != null && tccl instanceof MultiParentClassLoader) {
+                Thread.currentThread().setContextClassLoader(((MultiParentClassLoader) tccl).getParents()[1]);
+            }
         }
     }
 
@@ -71,6 +75,13 @@
                     msgContext.getOperationContext().getServiceContext().getAxisService();
             ClassLoader classLoader = service.getClassLoader();
 
+            if(service.getParameter(Constants.SERVICE_FORCE_TCCL) != null) {
+                Parameter serviceObjectParam =
+                        service.getParameter(Constants.SERVICE_FORCE_TCCL);
+                String value = ((String)
+                        serviceObjectParam.getValue()).trim();
+                forceTCCL = JavaUtils.isTrue(value);
+            }
             // allow alternative definition of makeNewServiceObject
             if (service.getParameter(Constants.SERVICE_OBJECT_SUPPLIER) != null) {
                 Parameter serviceObjectParam =



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org