You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2016/02/05 14:39:13 UTC
svn commit: r1728664 - in /tomcat/trunk:
java/org/apache/tomcat/util/descriptor/web/FragmentJarScannerCallback.java
java/org/apache/tomcat/util/scan/Constants.java
java/org/apache/tomcat/util/scan/StandardJarScanner.java
webapps/docs/changelog.xml
Author: markt
Date: Fri Feb 5 13:39:13 2016
New Revision: 1728664
URL: http://svn.apache.org/viewvc?rev=1728664&view=rev
Log:
Ensure that /WEB-INF/classes is never processed as a web fragment.
Modified:
tomcat/trunk/java/org/apache/tomcat/util/descriptor/web/FragmentJarScannerCallback.java
tomcat/trunk/java/org/apache/tomcat/util/scan/Constants.java
tomcat/trunk/java/org/apache/tomcat/util/scan/StandardJarScanner.java
tomcat/trunk/webapps/docs/changelog.xml
Modified: tomcat/trunk/java/org/apache/tomcat/util/descriptor/web/FragmentJarScannerCallback.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/descriptor/web/FragmentJarScannerCallback.java?rev=1728664&r1=1728663&r2=1728664&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/descriptor/web/FragmentJarScannerCallback.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/descriptor/web/FragmentJarScannerCallback.java Fri Feb 5 13:39:13 2016
@@ -111,6 +111,11 @@ public class FragmentJarScannerCallback
@Override
public void scan(File file, String webappPath, boolean isWebapp) throws IOException {
+ // Fragments unpacked in WEB-INF/classes are not handled
+ if ("/WEB-INF/classes".equals(webappPath)) {
+ return;
+ }
+
WebXml fragment = new WebXml();
fragment.setWebappJar(isWebapp);
fragment.setDelegate(delegate);
Modified: tomcat/trunk/java/org/apache/tomcat/util/scan/Constants.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/scan/Constants.java?rev=1728664&r1=1728663&r2=1728664&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/scan/Constants.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/scan/Constants.java Fri Feb 5 13:39:13 2016
@@ -33,6 +33,7 @@ public final class Constants {
/* Commons strings */
public static final String JAR_EXT = ".jar";
public static final String WEB_INF_LIB = "/WEB-INF/lib/";
+ public static final String WEB_INF_CLASSES = "/WEB-INF/classes";
/* Context attributes - used to pass short-cuts to Jasper */
public static final String MERGED_WEB_XML =
Modified: tomcat/trunk/java/org/apache/tomcat/util/scan/StandardJarScanner.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/scan/StandardJarScanner.java?rev=1728664&r1=1728663&r2=1728664&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/scan/StandardJarScanner.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/scan/StandardJarScanner.java Fri Feb 5 13:39:13 2016
@@ -172,15 +172,16 @@ public class StandardJarScanner implemen
}
// Scan WEB-INF/classes
- if (isScanAllDirectories()) {
- try {
- URL url = context.getResource("/WEB-INF/classes/META-INF");
+ URL webInfURL = null;
+ try {
+ webInfURL = context.getResource(Constants.WEB_INF_CLASSES);
+ if (isScanAllDirectories()) {
+ URL url = context.getResource(Constants.WEB_INF_CLASSES + "/META-INF");
if (url != null) {
// Class path scanning will look at WEB-INF/classes since
// that is the URL that Tomcat's web application class
// loader returns. Therefore, it is this URL that needs to
// be added to the set of processed URLs.
- URL webInfURL = context.getResource("/WEB-INF/classes");
if (webInfURL != null) {
processedURLs.add(webInfURL);
}
@@ -190,9 +191,9 @@ public class StandardJarScanner implemen
log.warn(sm.getString("jarScan.webinfclassesFail"), e);
}
}
- } catch (MalformedURLException e) {
- // Ignore
}
+ } catch (MalformedURLException e) {
+ // Ignore. Won't happen. URLs are of the correct form.
}
// Scan the classpath
@@ -244,8 +245,12 @@ public class StandardJarScanner implemen
log.debug(sm.getString(
"jarScan.classloaderJarScan", urls[i]));
}
+ String webappPath = null;
+ if (urls[i].equals(webInfURL)) {
+ webappPath = Constants.WEB_INF_CLASSES;
+ }
try {
- process(scanType, callback, urls[i], null, isWebapp);
+ process(scanType, callback, urls[i], webappPath, isWebapp);
} catch (IOException ioe) {
log.warn(sm.getString(
"jarScan.classloaderFail", urls[i]),
Modified: tomcat/trunk/webapps/docs/changelog.xml
URL: http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1728664&r1=1728663&r2=1728664&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/trunk/webapps/docs/changelog.xml Fri Feb 5 13:39:13 2016
@@ -45,6 +45,14 @@
issues do not "pop up" wrt. others).
-->
<section name="Tomcat 9.0.0.M4" rtext="In development">
+ <subsection name="Catalina">
+ <changelog>
+ <fix>
+ Ensure that <code>/WEB-INF/classes</code> is never processed as a web
+ fragment. (markt)
+ </fix>
+ </changelog>
+ </subsection>
<subsection name="Coyote">
<changelog>
<fix>
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org