Многочисленные привязки SLF4J в JBOSS вызвали ОШИБКУ - PullRequest
3 голосов
/ 08 июля 2011

Наше приложение имеет несколько EAR, развернутых на одной JBOSS-AS.

Каждый EAR использует SLF4J для ведения журнала, и он доступен в lib библиотеки WAR.У нас также есть случай, когда мы будем развертывать EAR отдельно.

Ниже приведены ОШИБКИ развертывания, которые мы получили для одного EAR.ОШИБКИ подобного рода мы получаем для каждого из EAR.

2011-07-07 23:27:52,794 ERROR [STDERR] (main) SLF4J: Class path contains multiple SLF4J bindings.
2011-07-07 23:27:52,794 ERROR [STDERR] (main) SLF4J: Found binding in [vfszip:/jboss-as/common/lib/lib/slf4j-jboss-logging.jar/org/slf4j/impl/StaticLoggerBinder.class]
2011-07-07 23:27:52,794 ERROR [STDERR] (main) SLF4J: Found binding in [vfszip:/Product_Ear.ear/Product_War.war/WEB-INF/lib/slf4j-jcl-1.5.8.jar/org/slf4j/impl/StaticLoggerBinder.class]
2011-07-07 23:27:52,794 ERROR [STDERR] (main) SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.

Эта ошибка связана с тем, что у нас есть несколько привязок SLF4j согласно URL-адресу объяснения.

Вопросы:

  1. Разве это не ПРЕДУПРЕЖДЕНИЕ вместо ОШИБКИ?

  2. Есть ли способ запустить его без ошибок и без удаления slf4j-jcl-1.5.8.jar из WARs?


SideNote: Даже если мы получили ошибки для большинства EAR, других проблем из-за этого нет.Все функции с отступами работают нормально.

1 Ответ

3 голосов
/ 08 июля 2011

Такое поведение slf4j разработано специально.Если вам это не нравится, вы должны подать отчет об ошибке на сайте slf4j.

Проблема в том, что JBoss предоставляет привязку slf4j в загрузчике классов по умолчанию, а вы привносите свою собственную.Я не достаточно знаком с JBoss, чтобы сказать, доступен ли jar-файл slf4j в common / lib по умолчанию или если вы положили его туда, но в этом месте вы, вероятно, не сможете его отключить.Вы можете поднять отчет об ошибке на сайте jboss.

Проблема связана с тем, что я не верю, что в спецификации сервлета прямо сказано, что должен предоставлять загрузчик классов веб-контейнера, а что нет.Следовательно, будут проблемы с развертыванием.

Единственное лекарство - это удалить собственную привязку slf4j и войти в систему регистрации jboss.

Но обратите внимание, это будет наиболее кросс-платформенной для вас, если вы позволитеведение журнала выполняется в веб-контейнере, так как вы не гарантированно получите доступ к файловой системе согласно спецификации.

...