You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2008/01/30 00:37:14 UTC

svn commit: r616563 - in /tomcat/trunk/java/org/apache/jasper: JspCompilationContext.java compiler/JspRuntimeContext.java

Author: markt
Date: Tue Jan 29 15:37:08 2008
New Revision: 616563

URL: http://svn.apache.org/viewvc?rev=616563&view=rev
Log:
Better fix for 43878. If we aren't re-loading, use a single class loader for JSPs and tag files to reduce perm gen space usage

Modified:
    tomcat/trunk/java/org/apache/jasper/JspCompilationContext.java
    tomcat/trunk/java/org/apache/jasper/compiler/JspRuntimeContext.java

Modified: tomcat/trunk/java/org/apache/jasper/JspCompilationContext.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/JspCompilationContext.java?rev=616563&r1=616562&r2=616563&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/jasper/JspCompilationContext.java (original)
+++ tomcat/trunk/java/org/apache/jasper/JspCompilationContext.java Tue Jan 29 15:37:08 2008
@@ -34,7 +34,6 @@
 import org.apache.jasper.compiler.JspUtil;
 import org.apache.jasper.compiler.Localizer;
 import org.apache.jasper.compiler.ServletWriter;
-import org.apache.jasper.servlet.JasperLoader;
 import org.apache.jasper.servlet.JspServletWrapper;
 
 /**
@@ -176,11 +175,7 @@
 
     public ClassLoader getJspLoader() {
         if( jspLoader == null ) {
-            jspLoader = new JasperLoader
-            (new URL[] {baseUrl},
-                    getClassLoader(),
-                    rctxt.getPermissionCollection(),
-                    rctxt.getCodeSource());
+            jspLoader = rctxt.getJspLoader(baseUrl, getClassLoader());
         }
         return jspLoader;
     }

Modified: tomcat/trunk/java/org/apache/jasper/compiler/JspRuntimeContext.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/compiler/JspRuntimeContext.java?rev=616563&r1=616562&r2=616563&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/jasper/compiler/JspRuntimeContext.java (original)
+++ tomcat/trunk/java/org/apache/jasper/compiler/JspRuntimeContext.java Tue Jan 29 15:37:08 2008
@@ -38,6 +38,7 @@
 import org.apache.jasper.Options;
 import org.apache.jasper.runtime.JspFactoryImpl;
 import org.apache.jasper.security.SecurityClassLoad;
+import org.apache.jasper.servlet.JasperLoader;
 import org.apache.jasper.servlet.JspServletWrapper;
 import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
@@ -155,6 +156,7 @@
     private ServletContext context;
     private Options options;
     private URLClassLoader parentClassLoader;
+    private JasperLoader jspLoader;
     private PermissionCollection permissionCollection;
     private CodeSource codeSource;                    
     private String classpath;
@@ -314,6 +316,26 @@
      */
     public String getClassPath() {
         return classpath;
+    }
+
+
+    /**
+     * Obtain the classloader to use when loading JSP resources. In development
+     * mode or when running background compilations, each JSP has a separate
+     * classloader to enable easy re-loading of modified JSPs. If not in
+     * development mode, a single loader is used to reduce perm gen usage when
+     * many JSPs all use the same handful of tags.
+     */
+    public URLClassLoader getJspLoader(URL baseUrl, ClassLoader parent) {
+        if (options.getDevelopment() || lastCheck > -1) {
+            return new JasperLoader(new URL[] {baseUrl}, parent,
+                    permissionCollection, codeSource);
+        }
+        if (jspLoader == null) {
+            jspLoader = new JasperLoader(new URL[] {baseUrl}, parent,
+                    permissionCollection, codeSource);
+        }
+        return jspLoader;
     }
 
 



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org