Author: veithen
Date: Sun Feb 26 16:24:32 2012
New Revision: 1293862

URL: http://svn.apache.org/viewvc?rev=1293862&view=rev
Log:
Avoid unnecessarily storing references to foreign class loaders (or references 
to objects loaded from foreign class loaders) in static attributes, because 
this increases the risk of encountering class loader leaks.

Modified:
    
axis/axis1/java/trunk/axis/src/main/java/org/apache/axis/handlers/JWSHandler.java
    
axis/axis1/java/trunk/axis/src/main/java/org/apache/axis/utils/JWSClassLoader.java

Modified: 
axis/axis1/java/trunk/axis/src/main/java/org/apache/axis/handlers/JWSHandler.java
URL: 
http://svn.apache.org/viewvc/axis/axis1/java/trunk/axis/src/main/java/org/apache/axis/handlers/JWSHandler.java?rev=1293862&r1=1293861&r2=1293862&view=diff
==============================================================================
--- 
axis/axis1/java/trunk/axis/src/main/java/org/apache/axis/handlers/JWSHandler.java
 (original)
+++ 
axis/axis1/java/trunk/axis/src/main/java/org/apache/axis/handlers/JWSHandler.java
 Sun Feb 26 16:24:32 2012
@@ -26,7 +26,6 @@ import org.apache.axis.components.logger
 import org.apache.axis.constants.Scope;
 import org.apache.axis.handlers.soap.SOAPService;
 import org.apache.axis.providers.java.RPCProvider;
-import org.apache.axis.utils.ClassUtils;
 import org.apache.axis.utils.ClasspathUtils;
 import org.apache.axis.utils.JWSClassLoader;
 import org.apache.axis.utils.Messages;
@@ -40,7 +39,9 @@ import java.io.FileNotFoundException;
 import java.io.FileReader;
 import java.io.FileWriter;
 import java.util.HashMap;
+import java.util.Hashtable;
 import java.util.List;
+import java.util.Map;
 
 /** A <code>JWSHandler</code> sets the target service and JWS filename
  * in the context depending on the JWS configuration and the target URL.
@@ -57,7 +58,8 @@ public class JWSHandler extends BasicHan
     public final String OPTION_JWS_FILE_EXTENSION = "extension";
     public final String DEFAULT_JWS_FILE_EXTENSION = 
Constants.JWS_DEFAULT_FILE_EXTENSION;
 
-    protected static HashMap soapServices = new HashMap();
+    private final Map/*<String,SOAPService>*/ soapServices = new HashMap();
+    private final Map/*<String,ClassLoader>*/ classloaders = new Hashtable();
 
     /**
      * Just set up the service, the inner service will do the rest...
@@ -233,16 +235,17 @@ public class JWSHandler extends BasicHan
                                          Messages.getMessage("badCompile00", 
jFile),
                                          null, new Element[] { root } );
                 }
-                ClassUtils.removeClassLoader( clsName );
+                classloaders.remove( clsName );
                 // And clean out the cached service.
                 soapServices.remove(clsName);
             }
             
-            ClassLoader cl = ClassUtils.getClassLoader(clsName);
+            ClassLoader cl = (ClassLoader)classloaders.get(clsName);
             if (cl == null) {
                 cl = new JWSClassLoader(clsName,
                                         msgContext.getClassLoader(),
                                         cFile);
+                classloaders.put(clsName, cl);
             }
             
             msgContext.setClassLoader(cl);

Modified: 
axis/axis1/java/trunk/axis/src/main/java/org/apache/axis/utils/JWSClassLoader.java
URL: 
http://svn.apache.org/viewvc/axis/axis1/java/trunk/axis/src/main/java/org/apache/axis/utils/JWSClassLoader.java?rev=1293862&r1=1293861&r2=1293862&view=diff
==============================================================================
--- 
axis/axis1/java/trunk/axis/src/main/java/org/apache/axis/utils/JWSClassLoader.java
 (original)
+++ 
axis/axis1/java/trunk/axis/src/main/java/org/apache/axis/utils/JWSClassLoader.java
 Sun Feb 26 16:24:32 2012
@@ -67,8 +67,6 @@ public class JWSClassLoader extends Clas
         /*************************************/
         byte[] data = baos.toByteArray();
         defineClass( name, data, 0, data.length );
-
-        ClassUtils.setClassLoader(name,this);
     }
 
     /**


Reply via email to