Author: markt Date: Thu Mar 11 20:28:34 2010 New Revision: 922010 URL: http://svn.apache.org/viewvc?rev=922010&view=rev Log: Alternative fix for bug 48795. Add a new property to control if the next request always triggers recompilation after a compilation failure. Defaults to false and only applies in development mode
Modified: tomcat/trunk/conf/web.xml tomcat/trunk/java/org/apache/jasper/EmbeddedServletOptions.java tomcat/trunk/java/org/apache/jasper/JspC.java tomcat/trunk/java/org/apache/jasper/JspCompilationContext.java tomcat/trunk/java/org/apache/jasper/Options.java tomcat/trunk/java/org/apache/jasper/resources/LocalStrings.properties Modified: tomcat/trunk/conf/web.xml URL: http://svn.apache.org/viewvc/tomcat/trunk/conf/web.xml?rev=922010&r1=922009&r2=922010&view=diff ============================================================================== --- tomcat/trunk/conf/web.xml (original) +++ tomcat/trunk/conf/web.xml Thu Mar 11 20:28:34 2010 @@ -194,6 +194,14 @@ <!-- to be checked on every access. --> <!-- Used in development mode only. [4] --> <!-- --> + <!-- recompileOnFail If a JSP compilation fails should the --> + <!-- modificationTestInterval be ignored and the --> + <!-- next access trigger a re-compilation attempt? --> + <!-- Used in development mode only and is disabled --> + <!-- by default as compilation may be expensive and --> + <!-- could lead to excessive resource usage. --> + <!-- [false] --> + <!-- --> <!-- scratchdir What scratch directory should we use when --> <!-- compiling JSP pages? [default work directory --> <!-- for the current web application] --> Modified: tomcat/trunk/java/org/apache/jasper/EmbeddedServletOptions.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/EmbeddedServletOptions.java?rev=922010&r1=922009&r2=922010&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/jasper/EmbeddedServletOptions.java (original) +++ tomcat/trunk/java/org/apache/jasper/EmbeddedServletOptions.java Thu Mar 11 20:28:34 2010 @@ -170,6 +170,11 @@ public final class EmbeddedServletOption private int modificationTestInterval = 4; /** + * Is re-compilation attempted immediately after a failure? + */ + private boolean recompileOnFail = false; + + /** * Is generation of X-Powered-By response header enabled/disabled? */ private boolean xpoweredBy; @@ -238,6 +243,13 @@ public final class EmbeddedServletOption } /** + * Re-compile on failure. + */ + public boolean getRecompileOnFail() { + return recompileOnFail; + } + + /** * Is Jasper being used in development mode? */ public boolean getDevelopment() { @@ -477,6 +489,18 @@ public final class EmbeddedServletOption } } + String recompileOnFail = config.getInitParameter("recompileOnFail"); + if (recompileOnFail != null) { + if (recompileOnFail.equalsIgnoreCase("true")) { + this.recompileOnFail = true; + } else if (recompileOnFail.equalsIgnoreCase("false")) { + this.recompileOnFail = false; + } else { + if (log.isWarnEnabled()) { + log.warn(Localizer.getMessage("jsp.warning.recompileOnFail")); + } + } + } String development = config.getInitParameter("development"); if (development != null) { if (development.equalsIgnoreCase("true")) { Modified: tomcat/trunk/java/org/apache/jasper/JspC.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/JspC.java?rev=922010&r1=922009&r2=922010&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/jasper/JspC.java (original) +++ tomcat/trunk/java/org/apache/jasper/JspC.java Thu Mar 11 20:28:34 2010 @@ -520,6 +520,16 @@ public class JspC implements Options { return 0; } + + /** + * In JspC this always returns <code>false</code>. + * {...@inheritdoc} + */ + public boolean getRecompileOnFail() { + return false; + } + + /** * In JspC this always returns <code>false</code>. * {...@inheritdoc} Modified: tomcat/trunk/java/org/apache/jasper/JspCompilationContext.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/JspCompilationContext.java?rev=922010&r1=922009&r2=922010&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/jasper/JspCompilationContext.java (original) +++ tomcat/trunk/java/org/apache/jasper/JspCompilationContext.java Thu Mar 11 20:28:34 2010 @@ -595,6 +595,10 @@ public class JspCompilationContext { } catch (JasperException ex) { // Cache compilation exception jsw.setCompilationException(ex); + if (options.getDevelopment() && options.getRecompileOnFail()) { + // Force a recompilation attempt on next access + jsw.setLastModificationTest(-1); + } throw ex; } catch (Exception ex) { JasperException je = new JasperException( Modified: tomcat/trunk/java/org/apache/jasper/Options.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/Options.java?rev=922010&r1=922009&r2=922010&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/jasper/Options.java (original) +++ tomcat/trunk/java/org/apache/jasper/Options.java Thu Mar 11 20:28:34 2010 @@ -197,6 +197,12 @@ public interface Options { */ public int getModificationTestInterval(); + + /** + * Re-compile on failure. + */ + public boolean getRecompileOnFail(); + /** * Is caching enabled (used for precompilation). */ Modified: tomcat/trunk/java/org/apache/jasper/resources/LocalStrings.properties URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/resources/LocalStrings.properties?rev=922010&r1=922009&r2=922010&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/jasper/resources/LocalStrings.properties (original) +++ tomcat/trunk/java/org/apache/jasper/resources/LocalStrings.properties Thu Mar 11 20:28:34 2010 @@ -168,6 +168,7 @@ jsp.warning.mappedFile=Warning: Invalid jsp.warning.classDebugInfo=Warning: Invalid value for the initParam classdebuginfo. Will use the default value of \"false\" jsp.warning.checkInterval=Warning: Invalid value for the initParam checkInterval. Will use the default value of \"300\" seconds jsp.warning.modificationTestInterval=Warning: Invalid value for the initParam modificationTestInterval. Will use the default value of \"4\" seconds +jsp.warning.recompileOnFail=Warning: Invalid value for the initParam recompileOnFail. Will use the default value of \"false\" jsp.warning.development=Warning: Invalid value for the initParam development. Will use the default value of \"true\" jsp.warning.fork=Warning: Invalid value for the initParam fork. Will use the default value of \"true\" jsp.warning.reloading=Warning: Invalid value for the initParam reloading. Will use the default value of \"true\" --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org