Author: markt Date: Thu Aug 6 13:08:31 2009 New Revision: 801637 URL: http://svn.apache.org/viewvc?rev=801637&view=rev Log: TLD handling improvements - make non standard behaviour configurable - add a few more log messages - sync method names
Modified: tomcat/trunk/java/org/apache/catalina/startup/LocalStrings.properties tomcat/trunk/java/org/apache/catalina/startup/TldConfig.java tomcat/trunk/java/org/apache/jasper/compiler/TldLocationsCache.java tomcat/trunk/webapps/docs/config/systemprops.xml Modified: tomcat/trunk/java/org/apache/catalina/startup/LocalStrings.properties URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/startup/LocalStrings.properties?rev=801637&r1=801636&r2=801637&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/startup/LocalStrings.properties (original) +++ tomcat/trunk/java/org/apache/catalina/startup/LocalStrings.properties Thu Aug 6 13:08:31 2009 @@ -93,7 +93,9 @@ tldConfig.addListeners=Adding {0} listeners from TLD files tldConfig.cce=Lifecycle event data object {0} is not a Context tldConfig.classloaderFail=Failed to process ''{0}'' for TLDs. +tldConfig.classloaderStart=Scanning for TLDs in classloader hierarchy tldConfig.execute=Error processing TLD files for context path {0} +tldConfig.jarUrlStart=Scanning for TLD files in URL ''{0}'' tldConfig.webinflibStart=Scanning WEB-INF/lib for JARs containing META-INF/**/*.TLD tldConfig.webinflibJarFail=Failed to scan JAR ''{0}'' for TLDs tldConfig.webinfFail=Failed to process TLD found at ''{0}'' Modified: tomcat/trunk/java/org/apache/catalina/startup/TldConfig.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/startup/TldConfig.java?rev=801637&r1=801636&r2=801637&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/startup/TldConfig.java (original) +++ tomcat/trunk/java/org/apache/catalina/startup/TldConfig.java Thu Aug 6 13:08:31 2009 @@ -63,6 +63,12 @@ private static final String WEB_INF = "/WEB-INF/"; private static final String WEB_INF_LIB = "/WEB-INF/lib/"; + // Configuration properties + private static final boolean SCAN_CLASSPATH = Boolean.valueOf( + System.getProperty( + "org.apache.jasper.compiler.TldLocationsCache.SCAN_CLASSPATH", + "true")).booleanValue(); + // Names of JARs that are known not to contain any TLDs private static HashSet<String> noTldJars; @@ -334,7 +340,9 @@ tldScanWebInfLib(); // Stage 4 - Additional entries from the container - tldScanClassloaders(); + if (SCAN_CLASSPATH) { + tldScanClassloaders(); + } // Now add all the listeners we found to the listeners for this context String list[] = getTldListeners(); @@ -511,6 +519,10 @@ */ private void tldScanClassloaders() { + if (log.isTraceEnabled()) { + log.trace(sm.getString("tldConfig.classloaderStart")); + } + ClassLoader loader = Thread.currentThread().getContextClassLoader(); @@ -543,6 +555,10 @@ * Keep in sync with o.a.j.comiler.TldLocationsCache */ private void tldScanJar(URL url) throws IOException { + if (log.isTraceEnabled()) { + log.trace(sm.getString("tldConfig.jarUrlStart", url)); + } + URLConnection conn = url.openConnection(); if (conn instanceof JarURLConnection) { tldScanJar((JarURLConnection) conn); Modified: tomcat/trunk/java/org/apache/jasper/compiler/TldLocationsCache.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/compiler/TldLocationsCache.java?rev=801637&r1=801636&r2=801637&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/jasper/compiler/TldLocationsCache.java (original) +++ tomcat/trunk/java/org/apache/jasper/compiler/TldLocationsCache.java Thu Aug 6 13:08:31 2009 @@ -95,6 +95,12 @@ private static final String JAR_EXT = ".jar"; private static final String TLD_EXT = ".tld"; + // Configuration properties + private static final boolean SCAN_CLASSPATH = Boolean.valueOf( + System.getProperty( + "org.apache.jasper.compiler.TldLocationsCache.SCAN_CLASSPATH", + "true")).booleanValue(); + // Names of JARs that are known not to contain any TLDs private static HashSet<String> noTldJars; @@ -245,7 +251,9 @@ tldScanWebXml(); tldScanResourcePaths(WEB_INF); tldScanWebInfLib(); - tldScanClassloaders(); + if (SCAN_CLASSPATH) { + tldScanClassloaders(); + } initialized = true; } catch (Exception ex) { throw new JasperException(Localizer.getMessage( @@ -467,13 +475,13 @@ private void tldScanJar(URL url) throws IOException { URLConnection conn = url.openConnection(); if (conn instanceof JarURLConnection) { - scanJar((JarURLConnection) conn); + tldScanJar((JarURLConnection) conn); } else { String urlStr = url.toString(); if (urlStr.startsWith(FILE_PROTOCOL) && urlStr.endsWith(JAR_EXT)) { URL jarURL = new URL("jar:" + urlStr + "!/"); - scanJar((JarURLConnection) jarURL.openConnection()); + tldScanJar((JarURLConnection) jarURL.openConnection()); } } } @@ -487,7 +495,7 @@ * * Keep in sync with o.a.c.startup.TldConfig */ - private void scanJar(JarURLConnection conn) throws IOException { + private void tldScanJar(JarURLConnection conn) throws IOException { JarFile jarFile = null; String resourcePath = conn.getJarFileURL().toString(); Modified: tomcat/trunk/webapps/docs/config/systemprops.xml URL: http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/config/systemprops.xml?rev=801637&r1=801636&r2=801637&view=diff ============================================================================== --- tomcat/trunk/webapps/docs/config/systemprops.xml (original) +++ tomcat/trunk/webapps/docs/config/systemprops.xml Thu Aug 6 13:08:31 2009 @@ -94,6 +94,15 @@ <code>true</code> will be used.</p> </property> + <property name="org.apache.jasper.compiler. TldLocationsCache.SCAN_CLASSPATH"> + <p>When scanning the class path for TLDs, should Jasper scan all JAR files + in the classpath, including those provided by the web application's parent + clasloaders? This is intended for sharing tag libraries between multiple + web applications by making the JAR available via the common or shared + classloader. If not specified, the default value of <code>true</code> will + be used.</p> + </property> + <property name="org.apache.jasper.runtime. BodyContentImpl.LIMIT_BUFFER"> <p>If <code>true</code>, any tag buffer that expands beyond <code>org.apache.jasper.Constants.DEFAULT_TAG_BUFFER_SIZE</code> will be --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org