Я пытаюсь использовать приложение log4j для отправки журналов в GrayLog2 (log4j2-gelf
). Поэтому я добавляю свою зависимость к моему pom.xml
, чтобы настроить мой appender для настройки log4j2.xml
. Постройте все с помощью maven и разверните его на локальном коте, и все будет хорошо. Проблема возникает, когда я пытаюсь выключить tomcat. Tomcat не останавливается, если я не kill -9 PID
кота и catalina.out
заканчивается так: Complete stack traceJava Tomcat, не связанные потоки Netty
Что привлекло мое внимание является
java.lang.NoClassDefFoundError: io/netty/util/concurrent/DefaultPromise$1
Сначала я подумал, что, возможно, есть еще одна зависимости импортейся NETTY что вызвало бы это исключение. Но я искал какое-то время и не смог найти какой-либо другой импорт нетти. Затем я увидел:
Caused by: java.lang.ClassNotFoundException: Illegal access: this web application instance has been stopped already. Could not load [io.netty.buffer.PoolArena$1]. The following stack trace is thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access.
И вот где мой вопрос идет. Я понимаю, что gelf-appender использует Netty как способ асинхронного общения с сервером GrayLog. Но это сам сервер. Таким образом, возможно ли, что Tomcat останавливает родительский сервлет, прежде чем убить базовую Netty? Что привело бы к этой проблеме? Я пытаюсь найти документацию по тому, как Tomcat отключился, но до сих пор я ничего не нашел, более того, я мог совершенно ошибаться в отношении этой диагностики ...
Я делаю некоторые копания, и кажется, что я не могу воспроизвести проблему с Jetty, так что это похоже на проблему tomcat. – MaxouMask