This is an automated email from the ASF dual-hosted git repository. isapir pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/tomcat.git
commit 21d08e1952d6612da9a712a173c81174958f4b8b Author: Igal Sapir <isa...@apache.org> AuthorDate: Tue Dec 24 16:41:29 2019 -0800 BZ-63691 Skip all jar scanning if wildcard pattern is used --- java/org/apache/tomcat/JarScanFilter.java | 9 +++++++++ java/org/apache/tomcat/util/scan/StandardJarScanFilter.java | 8 ++++++++ java/org/apache/tomcat/util/scan/StandardJarScanner.java | 9 +++++++++ 3 files changed, 26 insertions(+) diff --git a/java/org/apache/tomcat/JarScanFilter.java b/java/org/apache/tomcat/JarScanFilter.java index d7f6738..d3aeb45 100644 --- a/java/org/apache/tomcat/JarScanFilter.java +++ b/java/org/apache/tomcat/JarScanFilter.java @@ -28,4 +28,13 @@ public interface JarScanFilter { * <code>false</code> if it should be excluded */ boolean check(JarScanType jarScanType, String jarName); + + /** + * + * @return <code>true</code> if all of the scans should be skipped which + * can improve startup performance. The default is <code>false</code>. + */ + default boolean isSkipAll() { + return false; + } } diff --git a/java/org/apache/tomcat/util/scan/StandardJarScanFilter.java b/java/org/apache/tomcat/util/scan/StandardJarScanFilter.java index 84d3725..6e942a2 100644 --- a/java/org/apache/tomcat/util/scan/StandardJarScanFilter.java +++ b/java/org/apache/tomcat/util/scan/StandardJarScanFilter.java @@ -36,11 +36,13 @@ public class StandardJarScanFilter implements JarScanFilter { private static final String defaultScan; private static final Set<String> defaultSkipSet = new HashSet<>(); private static final Set<String> defaultScanSet = new HashSet<>(); + private static final boolean defaultSkipAll; static { // Initialize defaults. There are no setter methods for them. defaultSkip = System.getProperty(Constants.SKIP_JARS_PROPERTY); populateSetFromAttribute(defaultSkip, defaultSkipSet); + defaultSkipAll = defaultSkipSet.contains("*") || defaultSkipSet.contains("*.jar"); defaultScan = System.getProperty(Constants.SCAN_JARS_PROPERTY); populateSetFromAttribute(defaultScan, defaultScanSet); } @@ -132,6 +134,12 @@ public class StandardJarScanFilter implements JarScanFilter { } + @Override + public boolean isSkipAll() { + return defaultSkipAll; + } + + public boolean isDefaultTldScan() { return defaultTldScan; } diff --git a/java/org/apache/tomcat/util/scan/StandardJarScanner.java b/java/org/apache/tomcat/util/scan/StandardJarScanner.java index 9b12ce9..16a2396 100644 --- a/java/org/apache/tomcat/util/scan/StandardJarScanner.java +++ b/java/org/apache/tomcat/util/scan/StandardJarScanner.java @@ -171,6 +171,10 @@ public class StandardJarScanner implements JarScanner { log.trace(sm.getString("jarScan.webinflibStart")); } + if (jarScanFilter.isSkipAll()) { + return; + } + Set<URL> processedURLs = new HashSet<>(); // Scan WEB-INF/lib @@ -282,6 +286,11 @@ public class StandardJarScanner implements JarScanner { protected void processURLs(JarScanType scanType, JarScannerCallback callback, Set<URL> processedURLs, boolean isWebapp, Deque<URL> classPathUrlsToProcess) { + + if (jarScanFilter.isSkipAll()) { + return; + } + while (!classPathUrlsToProcess.isEmpty()) { URL url = classPathUrlsToProcess.pop(); --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org