Author: markt
Date: Thu May 19 10:44:12 2011
New Revision: 1124680
URL: http://svn.apache.org/viewvc?rev=1124680&view=rev
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=51220
Add a system property to enable tag pooling with JSPs that use a custom base
class.
Based on a patch by Dan Mikusa.
Modified:
tomcat/trunk/java/org/apache/jasper/compiler/Generator.java
tomcat/trunk/webapps/docs/changelog.xml
tomcat/trunk/webapps/docs/config/systemprops.xml
Modified: tomcat/trunk/java/org/apache/jasper/compiler/Generator.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/compiler/Generator.java?rev=1124680&r1=1124679&r2=1124680&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/jasper/compiler/Generator.java (original)
+++ tomcat/trunk/java/org/apache/jasper/compiler/Generator.java Thu May 19
10:44:12 2011
@@ -77,6 +77,8 @@ class Generator {
System.getProperty("org.apache.jasper.compiler.Generator.VAR_EXPRESSIONFACTORY",
"_el_expressionfactory");
private static final String VAR_INSTANCEMANAGER =
System.getProperty("org.apache.jasper.compiler.Generator.VAR_INSTANCEMANAGER",
"_jsp_instancemanager");
+ private static final boolean POOL_TAGS_WITH_EXTENDS =
+
Boolean.getBoolean("org.apache.jasper.compiler.Generator.VAR_EXPRESSIONFACTORY");
/* System property that controls if the requirement to have the object
* used in jsp:getProperty action to be previously "introduced"
@@ -3423,7 +3425,7 @@ class Generator {
* clarify whether containers can override init() and destroy(). For
* now, we just disable tag pooling for pages that use "extends".
*/
- if (pageInfo.getExtends(false) == null) {
+ if (pageInfo.getExtends(false) == null || POOL_TAGS_WITH_EXTENDS) {
isPoolingEnabled = ctxt.getOptions().isPoolingEnabled();
} else {
isPoolingEnabled = false;
Modified: tomcat/trunk/webapps/docs/changelog.xml
URL:
http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1124680&r1=1124679&r2=1124680&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/trunk/webapps/docs/changelog.xml Thu May 19 10:44:12 2011
@@ -62,6 +62,14 @@
</add>
</changelog>
</subsection>
+ <subsection name="Jasper">
+ <changelog>
+ <add>
+ <bug>51220</bug>: Add a system property to enable tag pooling with JSPs
+ that use a custom base class. Based on a patch by Dan Mikusa. (markt)
+ </add>
+ </changelog>
+ </subsection>
<subsection name="Cluster">
<changelog>
<fix>
Modified: tomcat/trunk/webapps/docs/config/systemprops.xml
URL:
http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/config/systemprops.xml?rev=1124680&r1=1124679&r2=1124680&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/config/systemprops.xml (original)
+++ tomcat/trunk/webapps/docs/config/systemprops.xml Thu May 19 10:44:12 2011
@@ -98,6 +98,20 @@
<section name="Jasper">
<properties>
+ <property name="org.apache.jasper.compiler.
Generator.POOL_TAGS_WITH_EXTENDS">
+ <p>By default, JSPs that use their own base class via the extends
+ attribute of the page directive, will have Tag pooling disabled since
+ Jasper cannot guarantee that the necessary initialisation will have taken
+ place. This can have a negative impact on performance. Providing the
+ alternative base class calls _jspInit() from Servlet.init(), setting
this
+ property to <code>true</code> will enable pooling with an alternative
base
+ class. If the alternative base class does not call _jspInit() and this
+ property is <code>true</code>, NPEs will occur when attempting to use
+ tags.</p>
+ <p>If not specified, the default value of <code>false</code> will be
used.
+ </p>
+ </property>
+
<property name="org.apache.jasper.compiler. Generator.STRICT_GET_PROPERTY">
<p>If <code>true</code>, the requirement to have the object referenced in
<code>jsp:getProperty</code> action to be previously "introduced"
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]