我们的应用程序将多个EAR部署到单个JBOSS-AS。
每个EAR都使用SLF4J进行日志记录,并且可以在WAR的lib中使用。我们还有一个案例,我们也将单独部署EAR。
以下是我们为单个EAR获得的部署ERROR。我们为每个EAR获得了类似的ERROR。
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.
此错误是因为我们根据说明URL有多个SLF4j绑定。
问题:
不应该是警告而不是警告 错误?
- 醇>
有没有办法在没有的情况下运行它 错误,没有删除 来自WARs的slf4j-jcl-1.5.8.jar?
SideNote: 即使我们在大多数EAR中出现错误,也没有其他问题。 每个缩进的功能都正常工作。
答案 0 :(得分:3)
slf4j的这种行为是设计的。如果你不喜欢它,你必须在slf4j网站上提出错误报告。
问题是JBoss在其默认的类加载器中提供了一个slf4j绑定,并且你带来了自己的。我对JBoss不太熟悉,不知道默认情况下是否可以使用common / lib中的slf4j jar,或者如果你把它放在那里,但是在那个位置你可能无法禁用它。您可能想在jboss网站上提出错误报告。
问题源于我不相信它已经在servlet规范中明确说明了web容器类加载器应该提供什么以及它不应该提供什么。因此会出现部署问题。
唯一的解决方法是删除自己的slf4j绑定并登录jboss记录器。
但请注意,如果您让Web容器执行日志记录,它将是您的最佳跨平台,因为您无法保证按规范访问文件系统。