有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Tomcat 9将跳过所有JAR tld扫描,并将defaultTldScan设置为false

我在SpringToolsSuite4.9.0(基于Eclipse)中的Tomcat9实例上部署了一个Spring应用程序。在再次阅读消息At least one JAR was scanned for TLDs yet contained no TLDs之后,我决定应用一些配置来摆脱它

在阅读the Tomcat docs之后,我添加了以下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中尝试了这一点:我做错了什么


共 (1) 个答案

  1. # 1 楼答案

    您需要将日志级别设置为debug,以找到导致此问题的jar列表,然后将它们分别添加到catalina配置文件中。通过将日志级别设置为调试和禁用catalina中的每个jar(不要在单独的行中提及每个jar名称),首先查找哪个jar。属性,然后再次运行应用程序。然后报告发动机启动的时间

    卡塔琳娜。性质

    雄猫。util。扫描标准过滤器。jarsToSkip=*。罐子