Tomcat 8启动速度慢原因1: At least one JAR was scanned for TLDs yet contained no TLDs

最近使用tomcat8启动项目时,发现At least one JAR was scanned for TLDs yet contained no TLDs这一步加载时间非常长,

从网上收集了各种资料最终得以解决,整理了一下过程,希望能够帮到大家。

参考文章:https://blog.csdn.net/yasi_xi/article/details/49642661

 注:${catalina.base}特指tomcat根目录

1)找到${catalina.base}/conf/logging.properties 文件,在文件末尾添加:

org.apache.catalina.startup.TldConfig.level = FINE
org.apache.jasper.compiler.TldLocationsCache.level = FINE
org.apache.jasper.servlet.TldScanner.level = FINE

2)重启Tomcat ,等完全成功启动后。此时,在${catalina.base}/logs/catalina.xxxx-xx-xx.log (xxxx-xx-xx为当前年月日)文件中能看到一下的log:

3)如果是linux环境,cd ${catalina.base}/logs/

egrep "No TLD files were found in [file:[^]+]" ${catalina.base}/catalina.out -o | egrep "[^]/]+.jar" -o | sort | uniq | sed -e 's/.jar/.jar,\/g' > skips.txt

如果是windows环境,可以使用notepad++匹配出所有jar,也可以自行使用命令匹配出所有jar(本人bat脚本写的不熟练,这里也没去研究)

4)总之最终得到的结果如下:

jcl-over-slf4j-1.7.25.jar,
jcifs-1.3.17.jar,
urlrewritefilter-4.0.4.jar,
spring-webmvc-portlet-4.3.10.RELEASE.jar,
spring-instrument-4.3.10.RELEASE.jar,
aopalliance-1.0.jar,
commons-email-1.5.jar,
jaxws-api-2.2.10.jar,
jsr173_api-1.0.jar,
fastjson-1.2.47.jar
spring-context-4.3.10.RELEASE.jar,
commons-configuration-1.10.jar
javax.persistence-2.0.0.jar
javax.mail-1.5.6.jar,
spring-test-4.3.10.RELEASE.jar
jstl-1.2.jar
xml-apis-1.0.b2.jar,
commons-net-3.6.jar,

6)将上面的结果放到 ${catalina.base}/conf/catalina.properties 文件中的 “tomcat.util.scan.StandardJarScanFilter.jarsToSkip=” 处,保存该文件,结果如下(这里支持通配符,例如spring*.jar):

5)注释掉步骤1中在 logging.properties 中添加的三行代码,删除  ${catalina.base}/work 下的所有内容,重启 Tomcat

#org.apache.catalina.startup.TldConfig.level = FINE
#org.apache.jasper.compiler.TldLocationsCache.level = FINE
#org.apache.jasper.servlet.TldScanner.level = FINE

重启后,Tomcat 将不再对步骤4中配置 jar 文件做 TLDs 扫描,tomcat启动速度也会显著加快。





 

原文地址:https://www.cnblogs.com/mingxiaoyue/p/8669181.html