【问题标题】:Is it possible to turn off taglib scanning in Tomcat?是否可以在 Tomcat 中关闭 taglib 扫描?
【发布时间】:2009-09-28 22:18:51
【问题描述】:

在启动时,Tomcat 会递归地扫描 WEB-INF 目录中的 TLD(标签库描述符)文件。因此,如果一个 webapp 在该目录下有很多文件,它会减慢启动过程。有谁知道在这种情况下是否有办法完全关闭扫描,或者至少提供一个过滤器来缩小搜索范围?

【问题讨论】:

  • 有没有办法只分配您要扫描的特定罐子?
  • 但是如果你删除了一些 jars,它们将不会被正确计算,是吗?
  • @Aerox 我不太明白你的问题?您的意思是要指出,如果您这样做,将找不到标记库描述符?如果是这样,那对我来说不是(现在仍然不是)问题,因为我没有使用 JSP。
  • 我假设你使用了 JSP 页面,所以我说如果你完全关闭扫描,我想如果需要一些特定的 JAR 来进行干净的启动,你就无法构建它。如果您不使用 JAR,可能不是这样,是吗?

标签: java tomcat taglib


【解决方案1】:

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

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

但是,如果不扫描 JAR,您在 JAR 文件中定义的 TLD 将无法工作。您必须在 WEB-INF 中定义所有 TLD。

【讨论】:

  • 似乎是 Tomcat 7 的属性。
  • 你知道我为什么会收到这个错误吗? “将属性 'processTlds' 设置为 'false' 没有找到匹配的属性。”是不是因为我在全局 Tomcat /conf/context.xml 中添加了属性?
  • 即使在我从 /conf/context.xml 中删除该属性并将其添加到 META-INF/context.xml 之后,也会出现相同的消息(“没有匹配的属性”)。 Tomcat 8.5 不支持此属性吗?
【解决方案2】:

我对同样的问题感到困惑。查看 Tomcat 7.0.40 的源代码,无法通过设置 'processTlds=false' 来避免扫描 jar,它们仍然会被扫描 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 中

【讨论】:

    【解决方案3】:

    在 Tomcat 8 上,可以通过将具有以下配置的 META-INF\context.xml 添加到您的 WAR 文件中来解决此问题。 无需更改全局 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

    【讨论】:

      【解决方案4】:

      作为替代方案(如果您仍然喜欢扫描一些 JAR),您可以将新值附加到“{TOMCAT_HOME}/conf/catalina.properties”中的“tomcat.util.scan.DefaultJarScanner.jarsToSkip”属性。

      【讨论】:

      • 这是 Tomcat 7 中的新功能,对吧?就我而言,我仍在使用 Tomcat 6,但对于 Tomcat 7 用户来说,这看起来是个不错的选择。
      • 是的。不适用于 Tomcat 6。属性出现在 Tomcat 7 中。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多