Можно ли отключить сканирование taglib в Tomcat?

StackOverflow https://stackoverflow.com/questions/1489665

  •  18-09-2019
  •  | 
  •  

Вопрос

При запуске Tomcat рекурсивно сканирует каталоги WEB-INF на наличие файлов TLD (дескриптор библиотеки тегов).В результате, если веб-приложение содержит много файлов в этом каталоге, это замедляет процесс запуска.Кто-нибудь знает, есть ли в такой ситуации способ полностью отключить сканирование или, по крайней мере, предоставить фильтр для сужения поиска?

Это было полезно?

Решение

Вы можете добавить атрибуты processTlds в контекст,

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

Однако ваши TLD, определенные в файле JAR, не будут работать без сканирования JAR.Вы должны определить все TLD в WEB-INF.

Другие советы

Я был озадачен той же проблемой.Заглядывая в исходный код Tomcat 7.0.40, невозможно избежать сканирования jars, установив 'processTlds= false', они все равно будут проверяться на наличие веб-фрагментов (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

На 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

В качестве альтернативы (если вы все еще предпочитаете сканировать некоторые банки) вы могли бы добавить новые значения в "tomcat.util.scan.DefaultJarScanner.jarsToSkip" свойство в "{TOMCAT_HOME}/conf/catalina.properties".

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top