Author: billbarker Date: Tue May 23 22:04:20 2006 New Revision: 409072 URL: http://svn.apache.org/viewvc?rev=409072&view=rev Log: Port RMI fix from 5.5
Modified: tomcat/tc6.0.x/trunk/java/org/apache/catalina/loader/WebappClassLoader.java Modified: tomcat/tc6.0.x/trunk/java/org/apache/catalina/loader/WebappClassLoader.java URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/loader/WebappClassLoader.java?rev=409072&r1=409071&r2=409072&view=diff ============================================================================== --- tomcat/tc6.0.x/trunk/java/org/apache/catalina/loader/WebappClassLoader.java (original) +++ tomcat/tc6.0.x/trunk/java/org/apache/catalina/loader/WebappClassLoader.java Tue May 23 22:04:20 2006 @@ -98,7 +98,7 @@ * * @author Remy Maucherat * @author Craig R. McClanahan - * @version $Revision: 378251 $ $Date: 2006-02-16 15:19:13 +0100 (jeu., 16 févr. 2006) $ + * @version $Revision$ $Date: 2006-05-19 19:52:46 -0700 (Fri, 19 May 2006) $ */ public class WebappClassLoader extends URLClassLoader @@ -141,6 +141,7 @@ "javax.servlet.Servlet" // Servlet API }; + /** * Set of package names which are not allowed to be loaded from a webapp * class loader without delegating first. @@ -511,6 +512,13 @@ this.loaderDir = new File(workDir, "loader"); } + /** + * Utility method for use in subclasses. + * Must be called before Lifecycle methods to have any effect. + */ + protected void setParentClassLoader(ClassLoader pcl) { + parent = pcl; + } // ------------------------------------------------------- Reloader Methods @@ -1064,7 +1072,7 @@ && (!(name.endsWith(".class")))) { // Copy binary content to the work directory if not present File resourceFile = new File(loaderDir, name); - url = resourceFile.toURL(); + url = getURI(resourceFile); } } catch (Exception e) { // Ignore @@ -1401,9 +1409,9 @@ URL[] urls = new URL[length]; for (i = 0; i < length; i++) { if (i < filesLength) { - urls[i] = getURL(files[i]); + urls[i] = getURL(files[i], true); } else if (i < filesLength + jarFilesLength) { - urls[i] = getURL(jarRealFiles[i - filesLength]); + urls[i] = getURL(jarRealFiles[i - filesLength], true); } else { urls[i] = external[i - filesLength - jarFilesLength]; } @@ -1831,7 +1839,7 @@ ResourceEntry entry = new ResourceEntry(); try { entry.source = getURI(new File(file, path)); - entry.codeBase = getURL(new File(file, path)); + entry.codeBase = getURL(new File(file, path), false); } catch (MalformedURLException e) { return null; } @@ -1957,7 +1965,7 @@ entry = new ResourceEntry(); try { - entry.codeBase = getURL(jarRealFiles[i]); + entry.codeBase = getURL(jarRealFiles[i], false); String jarFakeUrl = getURI(jarRealFiles[i]).toString(); jarFakeUrl = "jar:" + jarFakeUrl + "!/" + path; entry.source = new URL(jarFakeUrl); @@ -2274,7 +2282,7 @@ /** * Get URL. */ - protected URL getURL(File file) + protected URL getURL(File file, boolean encoded) throws MalformedURLException { File realFile = file; @@ -2283,7 +2291,11 @@ } catch (IOException e) { // Ignore } - return realFile.toURL(); + if(encoded) { + return getURI(realFile); + } else { + return realFile.toURL(); + } } @@ -2294,13 +2306,13 @@ protected URL getURI(File file) throws MalformedURLException { + File realFile = file; try { realFile = realFile.getCanonicalFile(); } catch (IOException e) { // Ignore } - return realFile.toURI().toURL(); } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]