Tomcat 9跳过所有jars tld扫描的速度较慢,默认TldScan为false



我在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

最新更新