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