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); } /**