首先先给出tomcat官网关于该属性的连接jarScanner的链接和jarScanFilter的链接。
简单说明一下这两个配置项,这两个配置项的作用是在服务器加载应用的时候扫描jar包的,仅仅在启动后第一次加载该应用的时候扫描一次,当加载多个应用的时候每个应用第一次加载的时候分别扫描一次jar文件。对一些属性值做下简单的说明:
true
,当JAR的名称与tldSkip的值或任何tldScan的值都不匹配时,会扫描JAR 。如果false
,当JAR的名称与任何tldScan属性的值匹配且没有和tldSkip的值匹配时,将扫描JAR 。默认值为true
。tomcat.util.scan.StandardJarScanFilter.jarsToSkip
系统属性获取默认值。再来看看使用:
Jar Scan Filter元素可以嵌套在 Jar Scanner组件中。其定义在Context标签里面,context标签可以写在context.xml中。可以按照如下形式:
<Context>
...
<JarScanner>
<JarScanFilter
pluggabilityScan="${tomcat.util.scan.StandardJarScanFilter.jarsToScan},
my_pluggable_feature.jar"/>
</JarScanner>
...
</Context>
tomcat定义了一个JarScanner接口和一个JarScanFilter接口,这两个接口分别定义如下:
JarScanner接口:
public interface JarScanner {
public void scan(JarScanType scanType, ServletContext context,
JarScannerCallback callback);
public JarScanFilter getJarScanFilter();
public void setJarScanFilter(JarScanFilter jarScanFilter);
}
JarScanFilter接口
public interface JarScanFilter {
boolean check(JarScanType jarScanType, String jarName);
}
这表明JarScanFilter是定义在JarScanner中的。和上面的JarScanFilter标签嵌套在JarScanner中相符。
tomcat默认实现了两个标准实现类来实现上面的两个接口,分别是org.apache.tomcat.util.scan.StandardJarScanner和org.apache.tomcat.util.scan.StandardJarScanFilter。