Tomcat 8 включает ведение журнала отладки для отображения ненужных банок

При запуске Tomcat 8 на Arch Linux ARM я получаю следующее предупреждение:

ИНФОРМАЦИЯ. По крайней мере один файл JAR был просканирован на наличие TLD, но не содержал TLD. Включите ведение журнала отладки для этого регистратора, чтобы получить полный список JAR-файлов, которые были просканированы, но в них не были найдены TLD. Пропуск ненужных JAR-файлов во время сканирования может сократить время запуска и время компиляции JSP.`

Я уже изменил ${catalina.home}/logging.properties, как описано здесь: Как исправить предупреждение компилятора JSP: один JAR был просканирован на наличие TLD, но не содержал TLD?

Я изменил некоторые уровни ведения журнала с INFO на FINE, раскомментировал «org.apache.jasper.compiler.TldLocationsCache.level = FINE» и добавил «org.apache.jasper.servlet.TldScanner.level = FINE». Таким образом, конец файла теперь выглядит следующим образом:

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = FINE org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.org.apache.juli.AsyncFileHandler

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].level = FINE org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].handlers = 3manager.org.apache.juli.AsyncFileHandler

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].level = FINE org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host- manager].handlers = 4host-manager.org.apache.juli.AsyncFileHandler

# Например, настройте регистратор org.apache.catalina.util.LifecycleBase для регистрации # каждого компонента, который расширяет изменяющееся состояние LifecycleBase: #org.apache.catalina.util.LifecycleBase.level = FINE

# Чтобы увидеть сообщения отладки в TldLocationsCache, раскомментируйте следующую строку: org.apache.jasper.compiler.TldLocationsCache.level = FINE org.apache.jasper.servlet.TldScanner.level = FINE

Но я все еще получаю предупреждение при запуске, а не ненужные пути JAR. Что случилось?


person Pascal Schulz    schedule 18.07.2014    source источник
comment
stackoverflow.com/questions/12905001/   -  person Konstantin V. Salikhov    schedule 18.07.2014
comment
возможный дубликат JSP-компилятор Tomcat 7 выдает ненужное предупреждение JAR   -  person kenorb    schedule 09.04.2015
comment
Я не думаю, что это дублирующий вопрос. Ни одна из ссылок в предыдущих комментариях не решает проблему. Я также испытываю эту проблему, когда сообщение все еще отображается, хотя я установил свои logging.properties для создания списка JAR-файлов.   -  person tekNorah    schedule 08.09.2015


Ответы (4)


Попробуйте выполнить отладку для всего:

  1. Добавьте это в конец вашего файла logging.properties, расположенного в {CATALINA-HOME}/conf:

    #To see the most detailed level of logging for all classes, uncomment the following line:
    org.apache.catalina.level=FINEST
    
  2. Перезапустите Томкэт

  3. Запустите из терминала следующее, чтобы получить список банок, которые нужно пропустить (любезно предоставлено @joseph-lust в этом сообщении ):

    egrep "No TLD files were found in \[file:[^\]+\]" {CATALINA-HOME}/logs/catalina.out -o | egrep "[^]/]+.jar" -o | sort | uniq | sed -e 's/.jar/.jar,\\/g' > ~/skips.txt
    
  4. Откройте skips.txt в домашнем каталоге вашего пользователя.

  5. Добавьте этот список в {CATALINA-HOME}/conf/catalina.properties после следующей строки:

    org.apache.catalina.startup.TldConfig.jarsToSkip=
    
  6. Обязательно удалите/закомментируйте это, когда закончите, чтобы ваши файлы журналов не стали слишком большими.

Я до сих пор не уверен, почему это происходит, поскольку, похоже, для большинства работает раскомментирование строки TldLocationsCache.

person tekNorah    schedule 08.09.2015

Более простой способ, на шаге 1 вышеприведенного поста, вместо того, чтобы включать отладку для всего, ограничьтесь org.apache.jasper:

Использовать это:

org.apache.jasper.level = FINEST

Вместо этого:

org.apache.catalina.level=FINEST
person Crmwind    schedule 31.03.2017
comment
Это должен быть комментарий к исходному ответу - person Amr ElAdawy; 01.04.2017

Я написал скрипт для поиска всех банок, не содержащих TLD:

#!/bin/sh
TOMCAT_HOME=/opt/tomcat
for i in `find $TOMCAT_HOME -follow -name "*jar"`
do
    jar tvf $i | grep -i tld > /dev/null
    if [ $? -ne 0 ]; then
        echo "$(basename $i),\\"
    fi
done

Отредактируйте TOMCAT_HOME, чтобы он соответствовал вашей установке. Сценарий создает список в форме:

jar1.jar,\
jar2.jar,\
...

который можно вставить в catalina.properties по адресу:

org.apache.catalina.startup.TldConfig.jarsToSkip=
person Serafim    schedule 29.05.2017

Строки org.apache.jasper.servlet.TldScanner.level = FINE, упомянутой в исходном вопросе, должно быть достаточно, чтобы получить ненужные пути JAR. Предположительно, что-то еще мешает ведению журнала.

Если вы используете Eclipse и запускаете Tomcat в качестве сервера на вкладке «Серверы», может потребоваться дополнительная настройка для правильного чтения logging.properties.

  1. Откройте вкладку Серверы, если она еще не открыта (Окно › Показать вид › Другое... › Сервер › Серверы). Остановите сервер Tomcat, если он запущен.
  2. На вкладке «Серверы» дважды щелкните сервер Tomcat, для которого необходимо настроить параметры ведения журнала. Это должно открыть вкладку Обзор для сервера.
  3. В разделе «Общая информация» нажмите «Открыть конфигурацию запуска». Это должно вызвать всплывающее окно «Редактировать конфигурацию».
  4. Switch to the Arguments tab. In the VM arguments section, append the following arguments, adjusting the first argument to the path of your logging.properties file:
    • -Djava.util.logging.config.file="C:\REPLACE\WITH\PATH\TO\TOMCAT\conf\logging.properties"
    • -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
  5. Запустите Tomcat и найдите в консоли строки, подобные приведенным ниже:
01-Dec-2020 20:18:32.069 FINE [main] org.apache.jasper.servlet.TldScanner$TldScannerCallback.scan No TLD files were found in [file:/C:/projects/so/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp1/webapps/so_proj/WEB-INF/lib/gson-2.8.1.jar]. Consider adding the JAR to the tomcat.util.scan.StandardJarScanFilter.jarsToSkip property in CATALINA_BASE/conf/catalina.properties file.

Отдайте должное Стиву Митчеллу, ответ здесь, который мне помог.

person GoldDragonTSU    schedule 02.12.2020