You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by fm...@apache.org on 2008/09/25 16:13:34 UTC

svn commit: r698978 - /incubator/sling/trunk/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/JspScriptEngineFactory.java

Author: fmeschbe
Date: Thu Sep 25 07:13:34 2008
New Revision: 698978

URL: http://svn.apache.org/viewvc?rev=698978&view=rev
Log:
SLING-675 Prevent pooling of PageContext objects (see issue for more information)

Modified:
    incubator/sling/trunk/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/JspScriptEngineFactory.java

Modified: incubator/sling/trunk/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/JspScriptEngineFactory.java
URL: http://svn.apache.org/viewvc/incubator/sling/trunk/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/JspScriptEngineFactory.java?rev=698978&r1=698977&r2=698978&view=diff
==============================================================================
--- incubator/sling/trunk/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/JspScriptEngineFactory.java (original)
+++ incubator/sling/trunk/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/JspScriptEngineFactory.java Thu Sep 25 07:13:34 2008
@@ -43,6 +43,7 @@
 import org.apache.sling.scripting.jsp.jasper.Options;
 import org.apache.sling.scripting.jsp.jasper.compiler.JspRuntimeContext;
 import org.apache.sling.scripting.jsp.jasper.runtime.JspApplicationContextImpl;
+import org.apache.sling.scripting.jsp.jasper.runtime.JspFactoryImpl;
 import org.osgi.service.component.ComponentContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -187,6 +188,9 @@
         Thread.currentThread().setContextClassLoader(jspClassLoader);
 
         try {
+            // prepare some classes
+            prepareJasperClasses();
+            
             ioProvider = new SlingIOProvider(repository);
 
             tldLocationsCache = new SlingTldLocationsCache(slingServletContext,
@@ -297,6 +301,23 @@
             this.repoCLProvider = null;
         }
     }
+    
+    private void prepareJasperClasses() {
+        final String propName = "org.apache.sling.scripting.jsp.jasper.runtime.JspFactoryImpl.USE_POOL";
+        final String propValue = System.getProperty(propName);
+        try {
+            // hacky wacky to prevent PageContext pooling !!!
+            System.setProperty(propName, "false");
+            jspClassLoader.loadClass("org.apache.sling.scripting.jsp.jasper.runtime.JspFactoryImpl");
+        } catch (Throwable t) {
+            // don't care for now
+        } finally {
+            if (propValue != null) {
+                System.setProperty(propName, propValue);
+            }
+        }
+    }
+    
     // ---------- Internal -----------------------------------------------------
 
     private class JspScriptEngine extends AbstractSlingScriptEngine {