gpt4 book ai didi

jboss7.x - Logback 和 Jboss 7 - 不能一起工作?

转载 作者:行者123 更新时间:2023-12-03 07:32:11 24 4
gpt4 key购买 nike

我遇到了一个奇怪的问题。我有一个 Java 应用程序,它之前部署在 tomcat 中,并愉快地使用 logback classic 作为 slf4j 实现。现在,当我们尝试在 jboss 7.1.final 服务器中部署相同的应用程序时,它甚至没有部署应用程序 java.lang.ClassCastException: org.slf4j.impl.Slf4jLoggerFactory cannot be cast to ch.qos.logback.classic.LoggerContext这是有问题的代码行

final LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();

他的类被 spring 注入(inject)并且失败 - 因此整个应用程序无法部署。有人能解决这个问题吗?提前致谢

查看此站点和其他论坛后,我意识到 Jboss 7 与其自己的 slf4j 实现捆绑在一起,并实现与 logback 中的 LoggerContext 相同的 ILoggerFactory 接口(interface)。我们的应用程序尝试获取相同的实例,但应用程序服务器强加了它自己的 slf4j 实现。

我尝试修改 jboss\modules\org\slf4j\impl\main 中的 module.xml 并将其指向 logback jar。

<resources>
<resource-root path="logback-classic-0.9.28.jar"/>
<resource-root path="logback-core-0.9.28.jar"/>
</resources>

现在,当我启动应用程序时,我遇到了严重错误

Exception starting filter WicketFilter: java.lang.ClassCastException: ch.qos.logback.classic.LoggerContext cannot be cast to ch.qos.logback.classic.LoggerContext

我已经束手无策了。有 jboss 和 logback 专家可以帮忙吗?提前致谢

最佳答案

您需要从部署中排除 slf4j 的服务器版本。创建一个 jboss-deployment-struction.xml 文件并将其放置在您的 WARS META-INFWEB-INF 目录中。

文件的内容应如下所示:

<jboss-deployment-structure>
<deployment>
<!-- Exclusions allow you to prevent the server from automatically adding some dependencies -->
<exclusions>
<module name="org.slf4j" />
<module name="org.slf4j.impl" />
</exclusions>
</deployment>
</jboss-deployment-structure>

关于jboss7.x - Logback 和 Jboss 7 - 不能一起工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9518687/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com