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]>