Запуск Tomcat 9 с SpringBoot-App как сервис с Ubuntu 18.04 - PullRequest
0 голосов
/ 28 сентября 2018

на самом деле я не могу правильно запустить Tomcat9-WebApp.Я был бы благодарен за любую помощь, указывающую мне в правильном направлении.


Настройка:

ОС : Ubuntu 18.04

ПриложениеСервер : Tomcat 9.0.12 (также протестирован с 8.5.34)

Веб-приложение : SpringBoot 1.5.7

JDK : 1.8.0_181

Скрипт-команда для запуска : $ CATALINA_HOME / bin / startup.sh

setenv.sh :

    JRE_HOME=path/to/jdk
    CATALINA_PID="$CATALINA_BASE/tomcat.pid"
    LOGGING_CONFIG="-Dlog4j.configurationFile=$CATALINA_BASE/conf/log4j2.xml"
    LOGGING_MANAGER="-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager"

export CLASSPATH=$CLASSPATH:$CATALINA_HOME/lib/log4j-jul-2.11.1.jar:$CATALINA_HOME/lib/log4j-core-2.11.1.jar:$CATALINA_HOME/lib/log4j-api-2.11.1.jar:$CATALINA_HOME/lib/log4j-slf4j-impl-2.11.1.jar

Если я запускаю скрипт от имени пользователя root, он работает нормально, и tomcat полностью функционирует.

Но если я запускаю тот же скрипт, что и служба, онзависает при развертывании WAR.Загрузка ЦП постоянно увеличивается до 100%

systemctl start tomcat

Трассировочные журналы заставляют меня задуматься, Tomcat сканирует каждый каталог файловой системы на предмет конфигурационных классов (например, / sys / devices /pci0000: 00/0000: 00: 18.6 / subsystem /)

o.a.c.s.ContextConfig: Scanning directory for class files with annotations [/sys/devices/pci0000:00/0000:00:18.6/subsystem ....

Размер самих лог-файлов превышает 200 МБ.Верхняя строка - это просто пример.

Как уже говорилось, любая помощь будет принята с благодарностью.


@ Edit

Ход выполнения: Я сбросил регистрацию tomcat-loggingпо умолчанию.Как только это будет сделано.Все отлично работает


С наилучшими пожеланиями

Майк

1 Ответ

0 голосов
/ 28 сентября 2018

Наконец-то у меня все заработало:

Проблема зависит от команды CLASSPATH экспорта:

Не знаю почему, но не должно быть расширения CLASSPATH.

Решение: замените

export CLASSPATH=$CLASSPATH:$CATALINA_HOME/lib/log4j-jul-2.11.1.jar:$CATALINA_HOME/lib/log4j-core-2.11.1.jar:$CATALINA_HOME/lib/log4j-api-2.11.1.jar:$CATALINA_HOME/lib/log4j-slf4j-impl-2.11.1.jar

на

export CLASSPATH=$CATALINA_HOME/lib/log4j-jul-2.11.1.jar:$CATALINA_HOME/lib/log4j-core-2.11.1.jar:$CATALINA_HOME/lib/log4j-api-2.11.1.jar:$CATALINA_HOME/lib/log4j-slf4j-impl-2.11.1.jar

, и служба будет запущена правильно.

Если кто-нибудь может дать объяснение этому поведению.Я и я держу пари, что другим тоже понравится углубиться в это.


@ Edit

Ну, у меня есть возможное объяснение этому поведению.Поскольку $ CLASSPATH не определен во время запуска, результат возможен "".Таким образом, начало этой строки выглядит так: «: / another / path ...». Его можно интерпретировать как « /: / another / path ...».В результате "/" является членом classpath.Это может заставить Spring сканировать всю файловую систему.

Внимание! Это только предположение, и оно не проверено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...