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- мениджър].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. Рестартирайте Tomcat

  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