Author: jboynes
Date: Sun Nov 17 21:13:36 2013
New Revision: 1542822
URL: http://svn.apache.org/r1542822
Log:
Initialize the JSP runtime in Jasper's initializer to eliminate the need for a
Jasper-specific listener in the container.
Removed:
tomcat/trunk/java/org/apache/catalina/core/JasperListener.java
Modified:
tomcat/trunk/conf/server.xml
tomcat/trunk/java/org/apache/jasper/JspC.java
tomcat/trunk/java/org/apache/jasper/compiler/JspRuntimeContext.java
tomcat/trunk/java/org/apache/jasper/servlet/JasperInitializer.java
tomcat/trunk/webapps/docs/config/listeners.xml
Modified: tomcat/trunk/conf/server.xml
URL:
http://svn.apache.org/viewvc/tomcat/trunk/conf/server.xml?rev=1542822&r1=1542821&r2=1542822&view=diff
==============================================================================
--- tomcat/trunk/conf/server.xml (original)
+++ tomcat/trunk/conf/server.xml Sun Nov 17 21:13:36 2013
@@ -25,8 +25,6 @@
-->
<!--APR library loader. Documentation at /docs/apr.html -->
<Listener className="org.apache.catalina.core.AprLifecycleListener"
SSLEngine="on" />
- <!--Initialize Jasper prior to webapps are loaded. Documentation at
/docs/jasper-howto.html -->
- <Listener className="org.apache.catalina.core.JasperListener" />
<!-- Prevent memory leaks due to use of particular java/javax APIs-->
<Listener
className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
<Listener
className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
Modified: tomcat/trunk/java/org/apache/jasper/JspC.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/JspC.java?rev=1542822&r1=1542821&r2=1542822&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/jasper/JspC.java (original)
+++ tomcat/trunk/java/org/apache/jasper/JspC.java Sun Nov 17 21:13:36 2013
@@ -42,6 +42,7 @@ import java.util.Stack;
import java.util.StringTokenizer;
import java.util.Vector;
+import javax.servlet.jsp.JspFactory;
import javax.servlet.jsp.tagext.TagLibraryInfo;
import org.apache.jasper.compiler.Compiler;
@@ -50,6 +51,7 @@ import org.apache.jasper.compiler.JspRun
import org.apache.jasper.compiler.Localizer;
import org.apache.jasper.compiler.TagPluginManager;
import org.apache.jasper.compiler.TldCache;
+import org.apache.jasper.runtime.JspFactoryImpl;
import org.apache.jasper.servlet.JspCServletContext;
import org.apache.jasper.servlet.TldScanner;
import org.apache.juli.logging.Log;
@@ -94,6 +96,11 @@ import org.xml.sax.SAXException;
*/
public class JspC extends Task implements Options {
+ static {
+ // the Validator uses this to access the EL ExpressionFactory
+ JspFactory.setDefaultFactory(new JspFactoryImpl());
+ }
+
public static final String DEFAULT_IE_CLASS_ID =
"clsid:8AD9C840-044E-11D1-B3E9-00805F499D93";
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=1542822&r1=1542821&r2=1542822&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/jasper/compiler/JspRuntimeContext.java
(original)
+++ tomcat/trunk/java/org/apache/jasper/compiler/JspRuntimeContext.java Sun Nov
17 21:13:36 2013
@@ -32,13 +32,10 @@ import java.util.concurrent.ConcurrentHa
import java.util.concurrent.atomic.AtomicInteger;
import javax.servlet.ServletContext;
-import javax.servlet.jsp.JspFactory;
import org.apache.jasper.Constants;
import org.apache.jasper.JspCompilationContext;
import org.apache.jasper.Options;
-import org.apache.jasper.runtime.JspFactoryImpl;
-import org.apache.jasper.security.SecurityClassLoad;
import org.apache.jasper.servlet.JspServletWrapper;
import org.apache.jasper.util.ExceptionUtils;
import org.apache.jasper.util.FastRemovalDequeue;
@@ -74,36 +71,6 @@ public final class JspRuntimeContext {
*/
private final AtomicInteger jspUnloadCount = new AtomicInteger(0);
- /**
- * Preload classes required at runtime by a JSP servlet so that
- * we don't get a defineClassInPackage security exception.
- */
- static {
- JspFactoryImpl factory = new JspFactoryImpl();
-
SecurityClassLoad.securityClassLoad(factory.getClass().getClassLoader());
- if( System.getSecurityManager() != null ) {
- String basePackage = "org.apache.jasper.";
- try {
- factory.getClass().getClassLoader().loadClass( basePackage +
-
"runtime.JspFactoryImpl$PrivilegedGetPageContext");
- factory.getClass().getClassLoader().loadClass( basePackage +
-
"runtime.JspFactoryImpl$PrivilegedReleasePageContext");
- factory.getClass().getClassLoader().loadClass( basePackage +
-
"runtime.JspRuntimeLibrary");
- factory.getClass().getClassLoader().loadClass( basePackage +
-
"runtime.JspRuntimeLibrary$PrivilegedIntrospectHelper");
- factory.getClass().getClassLoader().loadClass( basePackage +
-
"runtime.ServletResponseWrapperInclude");
- factory.getClass().getClassLoader().loadClass( basePackage +
-
"servlet.JspServletWrapper");
- } catch (ClassNotFoundException ex) {
- throw new IllegalStateException(ex);
- }
- }
-
- JspFactory.setDefaultFactory(factory);
- }
-
// ----------------------------------------------------------- Constructors
/**
Modified: tomcat/trunk/java/org/apache/jasper/servlet/JasperInitializer.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/servlet/JasperInitializer.java?rev=1542822&r1=1542821&r2=1542822&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/jasper/servlet/JasperInitializer.java
(original)
+++ tomcat/trunk/java/org/apache/jasper/servlet/JasperInitializer.java Sun Nov
17 21:13:36 2013
@@ -22,9 +22,12 @@ import java.util.Set;
import javax.servlet.ServletContainerInitializer;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
+import javax.servlet.jsp.JspFactory;
import org.apache.jasper.compiler.Localizer;
import org.apache.jasper.compiler.TldCache;
+import org.apache.jasper.runtime.JspFactoryImpl;
+import org.apache.jasper.security.SecurityClassLoad;
import org.apache.juli.logging.Log;
import org.apache.juli.logging.LogFactory;
import org.xml.sax.SAXException;
@@ -41,6 +44,37 @@ public class JasperInitializer implement
private static final String MSG =
"org.apache.jasper.servlet.JasperInitializer";
private static final Log LOG = LogFactory.getLog(JasperInitializer.class);
+ /**
+ * Preload classes required at runtime by a JSP servlet so that
+ * we don't get a defineClassInPackage security exception.
+ */
+ static {
+ JspFactoryImpl factory = new JspFactoryImpl();
+
SecurityClassLoad.securityClassLoad(factory.getClass().getClassLoader());
+ if( System.getSecurityManager() != null ) {
+ String basePackage = "org.apache.jasper.";
+ try {
+ factory.getClass().getClassLoader().loadClass( basePackage +
+ "runtime.JspFactoryImpl$PrivilegedGetPageContext");
+ factory.getClass().getClassLoader().loadClass( basePackage +
+ "runtime.JspFactoryImpl$PrivilegedReleasePageContext");
+ factory.getClass().getClassLoader().loadClass( basePackage +
+ "runtime.JspRuntimeLibrary");
+ factory.getClass().getClassLoader().loadClass( basePackage +
+
"runtime.JspRuntimeLibrary$PrivilegedIntrospectHelper");
+ factory.getClass().getClassLoader().loadClass( basePackage +
+ "runtime.ServletResponseWrapperInclude");
+ factory.getClass().getClassLoader().loadClass( basePackage +
+ "servlet.JspServletWrapper");
+ } catch (ClassNotFoundException ex) {
+ throw new IllegalStateException(ex);
+ }
+ }
+
+ // TODO we should play nice and only set this if it's null
+ JspFactory.setDefaultFactory(factory);
+ }
+
@Override
public void onStartup(Set<Class<?>> types, ServletContext context) throws
ServletException {
if (LOG.isDebugEnabled()) {
Modified: tomcat/trunk/webapps/docs/config/listeners.xml
URL:
http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/config/listeners.xml?rev=1542822&r1=1542821&r2=1542822&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/config/listeners.xml (original)
+++ tomcat/trunk/webapps/docs/config/listeners.xml Sun Nov 17 21:13:36 2013
@@ -125,21 +125,6 @@
</subsection>
- <subsection name="Jasper Listener - org.apache.catalina.core.JasperListener">
-
- <p>The <strong>Jasper Listener</strong> initializes the Jasper 2 JSP engine
- before any web applications that may use it are loaded. For more
- information on the Jasper 2 JSP engine see the
- <a href="../jasper-howto.html">Jasper How To</a>.</p>
-
- <p>This listener must only be nested within <a
href="server.html">Server</a>
- elements.</p>
-
- <p>No additional attributes are supported by the <strong>Jasper Listener
- </strong>.</p>
-
- </subsection>
-
<subsection name="Global Resources Lifecycle Listener -
org.apache.catalina.mbeans.GlobalResourcesLifecycleListener">
<p>The <strong>Global Resources Lifecycle Listener</strong> initializes the
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]