我在SpringToolsSuite 4.9.0(基于Eclipse(中的Tomcat9实例上部署了一个Spring应用程序。在再次阅读消息At least one JAR was scanned for TLDs yet contained no TLDs
后,我决定应用一些配置来消除它
在阅读Tomcat文档后,我添加了以下context.xml
文件:
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<JarScanner>
<JarScanFilter defaultTldScan="false"/>
</JarScanner>
</Context>
在src/main/webapp/META-INF
(它是一个Maven管理的应用程序(。
我在没有该文件的情况下启动了三次服务器(因此使用原始配置(,在有该文件的状态下启动了另外三次,并且在日志中始终得到以下时间安排。
没有context.xml
文件:
mar 11, 2021 2:27:52 PM org.apache.catalina.startup.Catalina load
INFORMAZIONI: Server initialization in [1,861] milliseconds
mar 11, 2021 2:27:52 PM org.apache.catalina.core.StandardService startInternal
INFORMAZIONI: Starting service [Catalina]
mar 11, 2021 ***2:27:52*** PM org.apache.catalina.core.StandardEngine startInternal
INFORMAZIONI: Starting Servlet engine: [Apache Tomcat/9.0.30]
mar 11, 2021 2:28:34 PM org.apache.jasper.servlet.TldScanner scanJars
INFORMAZIONI: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
mar 11, 2021 ***2:28:43*** PM org.apache.catalina.core.ApplicationContext log
INFORMAZIONI: 1 Spring WebApplicationInitializers detected on classpath
...
使用文件:
mar 11, 2021 3:12:44 PM org.apache.catalina.startup.Catalina load
INFORMAZIONI: Server initialization in [1,520] milliseconds
mar 11, 2021 3:12:44 PM org.apache.catalina.core.StandardService startInternal
INFORMAZIONI: Starting service [Catalina]
mar 11, 2021 ***3:12:44*** PM org.apache.catalina.core.StandardEngine startInternal
INFORMAZIONI: Starting Servlet engine: [Apache Tomcat/9.0.30]
mar 11, 2021 ***3:13:44*** PM org.apache.catalina.core.ApplicationContext log
INFORMAZIONI: 1 Spring WebApplicationInitializers detected on classpath
...
通过*
标记的时间,你可以看到,启用jar扫描后,我会得到50秒的时间差,而禁用jar扫描后的时间差会跳到60秒左右。
在Tomcat 9.0.30和9.0.43中尝试过:我做错了什么?
您需要设置要调试的日志级别,以找到导致此问题的jar列表,然后将它们单独添加到catalina配置文件中。通过设置日志级别来调试和禁用catalina.properties中的每个jar(而不是在单独的行中提及每个jar名称(,首先找出哪个jar,然后再次运行应用程序。然后报告发动机启动时间。
catalina.properties
tomcat.util.scan.StandardJarScanFilter.jarsToSkip=*.jar