Skip to content

Commit 258a111

Browse files
author
Dave Syer
committed
Use System properties for skipping Jars for TLD etc. scans
I'd prefer a fix that wasn't global for the VM, but the default values shoudl be harmless at least. Fixes gh-274
1 parent 1f1820b commit 258a111

File tree

1 file changed

+14
-7
lines changed

1 file changed

+14
-7
lines changed

spring-boot/src/main/java/org/springframework/boot/context/embedded/tomcat/TomcatEmbeddedServletContainerFactory.java

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@
3737
import org.apache.catalina.Wrapper;
3838
import org.apache.catalina.connector.Connector;
3939
import org.apache.catalina.loader.WebappLoader;
40-
import org.apache.catalina.startup.TldConfig;
4140
import org.apache.catalina.startup.Tomcat;
4241
import org.apache.catalina.startup.Tomcat.FixContextListener;
4342
import org.apache.coyote.AbstractProtocol;
@@ -90,13 +89,13 @@ public class TomcatEmbeddedServletContainerFactory extends
9089

9190
private String protocol = DEFAULT_PROTOCOL;
9291

93-
private static String DEFAULT_NO_TLD_JARS = "tomcat-*.jar,tools.jar,commons-beanutils*.jar,commons-codec*.jar,commons-collections*.jar,"
92+
private static String DEFAULT_SKIP_JARS = "tomcat-*.jar,tools.jar,commons-beanutils*.jar,commons-codec*.jar,commons-collections*.jar,"
9493
+ "commons-dbcp*.jar,commons-digester*.jar,commons-fileupload*.jar,commons-httpclient*.jar,commons-io*.jar,commons-lang*.jar,"
9594
+ "commons-logging*.jar,commons-math*.jar,commons-pool*.jar,jstl-*.jar,geronimo-spec-jaxrpc*.jar,wsdl4j*.jar,ant-*.jar,"
9695
+ "aspectj*.jar,jmx.jar,h2*.jar,hibernate*.jar,httpclient*.jar,jmx-tools-*.jar,jta*.jar,log4j-*.jar,mail*.jar,slf4j*.jar,"
9796
+ "xercesImpl-*.jar,xmlParserAPIs-*.jar,xml-apis-*.jar,junit-*.jar,hamcrest*.jar,org.hamcrest*.jar";
9897

99-
private String noTldJars = DEFAULT_NO_TLD_JARS;
98+
private String skipJars = DEFAULT_SKIP_JARS;
10099

101100
/**
102101
* Create a new {@link TomcatEmbeddedServletContainerFactory} instance.
@@ -146,7 +145,7 @@ public EmbeddedServletContainer getEmbeddedServletContainer(
146145
protected void prepareContext(Host host, ServletContextInitializer[] initializers) {
147146
File docBase = getValidDocumentRoot();
148147
docBase = (docBase != null ? docBase : createTempDir("tomcat-docbase"));
149-
TldConfig.setNoTldJars(this.noTldJars);
148+
applySkipJars();
150149
TomcatEmbeddedContext context = new TomcatEmbeddedContext();
151150
context.setName(getContextPath());
152151
context.setPath(getContextPath());
@@ -173,6 +172,14 @@ protected void prepareContext(Host host, ServletContextInitializer[] initializer
173172
postProcessContext(context);
174173
}
175174

175+
private void applySkipJars() {
176+
// Tomcat 8.0
177+
System.setProperty("tomcat.util.scan.StandardJarScanFilter.jarsToSkip",
178+
this.skipJars);
179+
// Tomcat 7.0
180+
System.setProperty("tomcat.util.scan.DefaultJarScanner.jarsToSkip", this.skipJars);
181+
}
182+
176183
private void addDefaultServlet(Context context) {
177184
Wrapper defaultServlet = context.createWrapper();
178185
defaultServlet.setName("default");
@@ -295,10 +302,10 @@ public void setBaseDirectory(File baseDirectory) {
295302
* A comma-separated list of jars to ignore for TLD scanning. See Tomcat's
296303
* catalina.properties for typical values. Defaults to a list drawn from that source.
297304
*
298-
* @param noTldJars the noTldJars to set
305+
* @param skipJars the jars to skip when scanning for tlds etc
299306
*/
300-
public void setNoTldJars(String noTldJars) {
301-
this.noTldJars = noTldJars;
307+
public void setSkipJars(String skipJars) {
308+
this.skipJars = skipJars;
302309
}
303310

304311
/**

0 commit comments

Comments
 (0)