remm 02/04/29 05:46:54 Modified: catalina/src/share/org/apache/catalina/loader WebappClassLoader.java Log: - Use the JAR URL for the codeBase (the exact source is kept separate). - This should fix bug 8611. - AFAIK, this is closer to what the URL CL is doing. - This will also force a modification of the policy files (the codeBase must be the JAR). Glenn, I think you mentioned a while ago you were ok with that change. - This change will not be ported to 4.0.x (at least not without some convincing, as it breaks the existing policy files). The change will be included in 4.1.1. Revision Changes Path 1.37 +23 -16 jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/loader/WebappClassLoader.java Index: WebappClassLoader.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/loader/WebappClassLoader.java,v retrieving revision 1.36 retrieving revision 1.37 diff -u -r1.36 -r1.37 --- WebappClassLoader.java 17 Feb 2002 08:41:25 -0000 1.36 +++ WebappClassLoader.java 29 Apr 2002 12:46:54 -0000 1.37 @@ -1,7 +1,7 @@ /* - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/loader/WebappClassLoader.java,v 1.36 2002/02/17 08:41:25 remm Exp $ - * $Revision: 1.36 $ - * $Date: 2002/02/17 08:41:25 $ + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/loader/WebappClassLoader.java,v 1.37 2002/04/29 12:46:54 remm Exp $ + * $Revision: 1.37 $ + * $Date: 2002/04/29 12:46:54 $ * * ==================================================================== * @@ -145,7 +145,7 @@ * * @author Remy Maucherat * @author Craig R. McClanahan - * @version $Revision: 1.36 $ $Date: 2002/02/17 08:41:25 $ + * @version $Revision: 1.37 $ $Date: 2002/04/29 12:46:54 $ */ public class WebappClassLoader extends URLClassLoader @@ -1607,7 +1607,7 @@ definePackage(packageName, null, null, null, null, null, null, null); } else { - definePackage(packageName, entry.manifest, entry.source); + definePackage(packageName, entry.manifest, entry.codeBase); } } @@ -1615,7 +1615,7 @@ // Create the code source object CodeSource codeSource = - new CodeSource(entry.source, entry.certificates); + new CodeSource(entry.codeBase, entry.certificates); if (securityManager != null) { @@ -1623,7 +1623,7 @@ if (pkg != null) { boolean sealCheck = true; if (pkg.isSealed()) { - sealCheck = pkg.isSealed(entry.source); + sealCheck = pkg.isSealed(entry.codeBase); } else { sealCheck = (entry.manifest == null) || !isPackageSealed(packageName, entry.manifest); @@ -1636,7 +1636,7 @@ } - synchronized(entry) { + synchronized (entry) { // Since all threads use the same ResourceEntry instance, it is // the one which will contain the class if (entry.loadedClass == null) { @@ -1699,6 +1699,7 @@ entry = new ResourceEntry(); try { entry.source = getURL(new File(files[i], path)); + entry.codeBase = entry.source; } catch (MalformedURLException e) { return null; } @@ -1756,11 +1757,11 @@ entry = new ResourceEntry(); try { - String jarFakeUrl = getURL(jarRealFiles[i]).toString(); + entry.codeBase = getURL(jarRealFiles[i]); + String jarFakeUrl = entry.codeBase.toString(); jarFakeUrl = "jar:" + jarFakeUrl + "!/" + path; entry.source = new URL(jarFakeUrl); } catch (MalformedURLException e) { - e.printStackTrace(); return null; } entry.certificates = jarEntry.getCertificates(); @@ -2038,37 +2039,43 @@ * The "last modified" time of the origin file at the time this class * was loaded, in milliseconds since the epoch. */ - long lastModified; + protected long lastModified = -1; /** * Binary content of the resource. */ - byte[] binaryContent; + protected byte[] binaryContent = null; /** * Loaded class. */ - Class loadedClass; + protected Class loadedClass = null; /** * URL source from where the object was loaded. */ - URL source; + protected URL source = null; + + + /** + * URL of the codebase from where the object was loaded. + */ + protected URL codeBase = null; /** * Manifest (if the resource was loaded from a JAR). */ - Manifest manifest = null; + protected Manifest manifest = null; /** * Certificates (if the resource was loaded from a JAR). */ - Certificate[] certificates = null; + protected Certificate[] certificates = null; }
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>