From: markt Date: Sat, 25 Apr 2009 23:25:36 +0000 (+0000) Subject: Reduce dependency on URLClassloader. Allow custom Loader elements to use ClassLoader... X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=8493b24c6e294a7ecb8ccf5ddd858550428616c3;p=tomcat7.0 Reduce dependency on URLClassloader. Allow custom Loader elements to use ClassLoader rather than URLClassLoader. git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@768624 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/java/org/apache/jasper/JspCompilationContext.java b/java/org/apache/jasper/JspCompilationContext.java index de766f091..286e17f7f 100644 --- a/java/org/apache/jasper/JspCompilationContext.java +++ b/java/org/apache/jasper/JspCompilationContext.java @@ -77,7 +77,7 @@ public class JspCompilationContext { protected String baseURI; protected String outputDir; protected ServletContext context; - protected URLClassLoader loader; + protected ClassLoader loader; protected JspRuntimeContext rctxt; @@ -170,7 +170,7 @@ public class JspCompilationContext { return rctxt.getParentClassLoader(); } - public void setClassLoader(URLClassLoader loader) { + public void setClassLoader(ClassLoader loader) { this.loader = loader; } diff --git a/java/org/apache/jasper/compiler/JspRuntimeContext.java b/java/org/apache/jasper/compiler/JspRuntimeContext.java index d5c13c938..aac6c55e8 100644 --- a/java/org/apache/jasper/compiler/JspRuntimeContext.java +++ b/java/org/apache/jasper/compiler/JspRuntimeContext.java @@ -110,11 +110,9 @@ public final class JspRuntimeContext { this.options = options; // Get the parent class loader - parentClassLoader = - (URLClassLoader) Thread.currentThread().getContextClassLoader(); + parentClassLoader = Thread.currentThread().getContextClassLoader(); if (parentClassLoader == null) { - parentClassLoader = - (URLClassLoader)this.getClass().getClassLoader(); + parentClassLoader = this.getClass().getClassLoader(); } if (log.isDebugEnabled()) { @@ -154,7 +152,7 @@ public final class JspRuntimeContext { */ private ServletContext context; private Options options; - private URLClassLoader parentClassLoader; + private ClassLoader parentClassLoader; private PermissionCollection permissionCollection; private CodeSource codeSource; private String classpath; @@ -218,11 +216,11 @@ public final class JspRuntimeContext { } /** - * Get the parent URLClassLoader. + * Get the parent ClassLoader. * - * @return URLClassLoader parent + * @return ClassLoader parent */ - public URLClassLoader getParentClassLoader() { + public ClassLoader getParentClassLoader() { return parentClassLoader; } @@ -325,20 +323,23 @@ public final class JspRuntimeContext { */ private void initClassPath() { - URL [] urls = parentClassLoader.getURLs(); StringBuffer cpath = new StringBuffer(); String sep = System.getProperty("path.separator"); - for(int i = 0; i < urls.length; i++) { - // Tomcat 4 can use URL's other than file URL's, - // a protocol other than file: will generate a - // bad file system path, so only add file: - // protocol URL's to the classpath. - - if( urls[i].getProtocol().equals("file") ) { - cpath.append(urls[i].getFile()+sep); + if (parentClassLoader instanceof URLClassLoader) { + URL [] urls = ((URLClassLoader)parentClassLoader).getURLs(); + + for(int i = 0; i < urls.length; i++) { + // Tomcat 4 can use URL's other than file URL's, + // a protocol other than file: will generate a + // bad file system path, so only add file: + // protocol URL's to the classpath. + + if( urls[i].getProtocol().equals("file") ) { + cpath.append(urls[i].getFile()+sep); + } } - } + } cpath.append(options.getScratchDir() + sep); @@ -408,32 +409,34 @@ public final class JspRuntimeContext { permissionCollection.add( new RuntimePermission( "accessClassInPackage.org.apache.jasper.runtime") ); - URL [] urls = parentClassLoader.getURLs(); - String jarUrl = null; - String jndiUrl = null; - for (int i=0; i