nacho 01/06/17 11:09:19
Modified: src/share/org/apache/tomcat/util/compat
SimpleClassLoader.java Jdk12Support.java
Jdk11Compat.java
src/share/org/apache/tomcat/modules/config
LoaderInterceptor11.java
src/facade22/org/apache/tomcat/facade JspInterceptor.java
src/share/org/apache/tomcat/util/depend
DependClassLoader.java
Log:
* Changed the classloader support to construct the right Classpath for
trusted apps, was not adding the container Jars to the mix.
Revision Changes Path
1.4 +0 -1
jakarta-tomcat/src/share/org/apache/tomcat/util/compat/SimpleClassLoader.java
Index: SimpleClassLoader.java
===================================================================
RCS file:
/home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/util/compat/SimpleClassLoader.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- SimpleClassLoader.java 2001/03/06 05:39:24 1.3
+++ SimpleClassLoader.java 2001/06/17 18:09:13 1.4
@@ -524,7 +524,6 @@
}
public URL[] getURLs() {
- //TODO: Add custom implementation.
return urls;
}
1.3 +14 -8
jakarta-tomcat/src/share/org/apache/tomcat/util/compat/Jdk12Support.java
Index: Jdk12Support.java
===================================================================
RCS file:
/home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/util/compat/Jdk12Support.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- Jdk12Support.java 2001/02/06 02:46:30 1.2
+++ Jdk12Support.java 2001/06/17 18:09:13 1.3
@@ -62,6 +62,7 @@
import java.net.*;
import java.util.*;
import java.security.*;
+import org.apache.tomcat.util.depend.*;
/**
*
*/
@@ -103,16 +104,21 @@
public ClassLoader getContextClassLoader() {
return Thread.currentThread().getContextClassLoader();
}
-
- public URL[] getURLs(ClassLoader cl){
- return ((URLClassLoader)cl).getURLs();
- }
- public URL[] getParentURLs(ClassLoader cl){
- URLClassLoader scl=(URLClassLoader)cl;
- return ((URLClassLoader)cl.getParent()).getURLs();
+
+ public URL[] getURLs(ClassLoader cl,int depth){
+ int c=0;
+ do{
+ while(! (cl instanceof URLClassLoader) && cl != null )
+ cl=((DependClassLoader)cl).getParentLoader();
+ if (cl==null) break;
+ if (depth==c) return ((URLClassLoader)cl).getURLs();
+ c++;
+ cl=((URLClassLoader)cl).getParent();
+ }while((cl!=null) && ( depth >= c ));
+ return null;
}
- // -------------------- Support --------------------
+ // -------------------- Support --------------------
static class PrivilegedProxy implements PrivilegedExceptionAction
{
Action action;
1.5 +12 -6
jakarta-tomcat/src/share/org/apache/tomcat/util/compat/Jdk11Compat.java
Index: Jdk11Compat.java
===================================================================
RCS file:
/home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/util/compat/Jdk11Compat.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- Jdk11Compat.java 2001/02/10 08:12:42 1.4
+++ Jdk11Compat.java 2001/06/17 18:09:14 1.5
@@ -58,6 +58,7 @@
*/
package org.apache.tomcat.util.compat;
+import org.apache.tomcat.util.depend.*;
import java.net.URL;
@@ -110,13 +111,18 @@
return null;
}
- public URL[] getURLs(ClassLoader cl){
- return ((SimpleClassLoader)cl).getURLs();
+ public URL[] getURLs(ClassLoader cl,int depth){
+ int c=0;
+ do{
+ while(! (cl instanceof SimpleClassLoader))
+ cl=((DependClassLoader)cl).getParent();
+ if (depth==c) return ((SimpleClassLoader)cl).getURLs();
+ c++;
+ cl=((SimpleClassLoader)cl).getParentLoader();
+ }while((cl!=null) && ( depth < c ));
+ return null;
}
- public URL[] getParentURLs(ClassLoader cl){
- SimpleClassLoader scl=(SimpleClassLoader)cl;
- return ((SimpleClassLoader)scl.getParentLoader()).getURLs();
- }
+
// Other methods, as needed
1.12 +6 -6
jakarta-tomcat/src/share/org/apache/tomcat/modules/config/LoaderInterceptor11.java
Index: LoaderInterceptor11.java
===================================================================
RCS file:
/home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/modules/config/LoaderInterceptor11.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- LoaderInterceptor11.java 2001/06/16 20:18:49 1.11
+++ LoaderInterceptor11.java 2001/06/17 18:09:15 1.12
@@ -190,8 +190,8 @@
if( debug>5 ) {
log(" Context classpath URLs:");
for (int i = 0; i < classP.length; i++)
- log(" " + classP[i].toString() );
- }
+ log(" " + classP[i].toString() );
+ }
ClassLoader parent=null;
if( useAL && !context.isTrusted() ) {
@@ -246,11 +246,11 @@
URL classPaths[]=ctx.getClassPath();
convertClassPath( cpath , classPaths );
- ClassLoader parentLoader=ctx.getContextManager().getParentLoader();
- // apps class path
- convertClassPath(cpath, jdkProxy.getParentURLs(parentLoader));
+ ClassLoader Loader=ctx.getClassLoader();
+ // apps class loader
+ convertClassPath(cpath, jdkProxy.getURLs(Loader,1));
// common class loader
- convertClassPath(cpath, jdkProxy.getURLs(parentLoader));
+ convertClassPath(cpath, jdkProxy.getURLs(Loader,2));
if( debug>9 )
log("Getting classpath " + cpath);
return cpath.toString();
1.25 +5 -3
jakarta-tomcat/src/facade22/org/apache/tomcat/facade/JspInterceptor.java
Index: JspInterceptor.java
===================================================================
RCS file:
/home/cvs/jakarta-tomcat/src/facade22/org/apache/tomcat/facade/JspInterceptor.java,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -r1.24 -r1.25
--- JspInterceptor.java 2001/06/02 21:35:01 1.24
+++ JspInterceptor.java 2001/06/17 18:09:16 1.25
@@ -789,13 +789,15 @@
Jdk11Compat jdkProxy=Jdk11Compat.getJdkCompat();
URL appsCP[];
URL commonCP[];
- ClassLoader parentLoader=ctx.getContextManager().getParentLoader();
- appsCP=jdkProxy.getParentURLs(parentLoader);
- commonCP=jdkProxy.getURLs(parentLoader);
+ ClassLoader loader=ctx.getClassLoader();
+ //The next will be the container classpath in trusted apps
+ appsCP=jdkProxy.getURLs(loader,1);
+ commonCP=jdkProxy.getURLs(loader,2);
if( appsCP!=null )
cpath+=separator+extractClassPath(appsCP);
if( commonCP!=null )
cpath+=separator+extractClassPath(commonCP);
+// System.out.println("classpath: " + cpath );
return cpath;
}
String extractClassPath(URL urls[]){
1.4 +8 -4
jakarta-tomcat/src/share/org/apache/tomcat/util/depend/DependClassLoader.java
Index: DependClassLoader.java
===================================================================
RCS file:
/home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/util/depend/DependClassLoader.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- DependClassLoader.java 2001/01/14 20:55:27 1.3
+++ DependClassLoader.java 2001/06/17 18:09:18 1.4
@@ -87,12 +87,12 @@
DependManager dependM;
public DependClassLoader( DependManager depM, ClassLoader parent ) {
- super(); // will check permissions
+ super(); // will check permissions
this.parent=parent;
dependM=depM;
}
- // debug only
+ // debug only
final void log( String s ) {
System.out.println("DependClassLoader: " + s );
}
@@ -129,7 +129,7 @@
if( res==null ) {
if( debug >0 ) log( "Resource not found !!! " + name + " " +
classFileName);
}
-
+
try {
c = parent.loadClass(name);
if (c != null) {
@@ -175,7 +175,11 @@
dep.setLastModified( f.lastModified() );
dep.setTarget( c );
dep.setOrigin( f );
-
+
dependM.addDependency( dep );
+ }
+
+ public ClassLoader getParentLoader() {
+ return parent;
}
}