在启动时,Tomcat的递归方式扫描TLD(标签库描述符)文件的WEB-INF目录。其结果是,如果一个Web应用程序有很多该目录下的文件,它会减慢启动过程。没有人知道,如果在这种情况下的方式完全关闭扫描,或至少提供一种过滤器以缩小搜索范围?

有帮助吗?

解决方案

可以添加processTlds在上下文属性,

  <Context processTlds="false" ... />

然而,在JAR文件中定义你的顶级域名不会没有扫描的JAR工作。你必须定义WEB-INF所有顶级域名。

其他提示

余物通过同样的问题感到困惑。寻找到Tomcat 7.0.40的源代码,这是不可能通过设置避免罐扫描“processTlds =假”,它们仍然会被扫描web片段(ContextConfig.processJarsForWebFragments())。

有剩余2种选择:

在TOMCAT_HOME / CONF / catalina.properties设置属性

org.apache.catalina.startup.ContextConfig.jarsToSkip=*.jar

更换StandardJarScanner通过自己的实现,例如空单,并从my.war / META-INF / context.xml中引用它:

<Context processTlds="false">
    <JarScanner className="org.my.tomcat.NullJarScanner"/>
</Context>

在后一种情况下,你需要确保NullJarScanner类可在Tomcat的lib目录下,而不是你的.war

在Tomcat的8可通过增加与下方观察到WAR文件的配置的META-INF\context.xml来解决。 无需改变全局Tomcat配置。

<?xml version="1.0" encoding="UTF-8"?>
<Context>
    <JarScanner>
        <JarScanFilter tldSkip="*.*"/>
    </JarScanner>
</Context>

相关的文档可在这里: HTTP:/ /tomcat.apache.org/tomcat-8.0-doc/config/jar-scan-filter.html

作为替代方案(如果你还是喜欢扫描一些JAR文件),你可以附加新值“tomcat.util.scan.DefaultJarScanner.jarsToSkip”在“{} TOMCAT_HOME /conf/catalina.properties”属性。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top