0

我创建了一个运行在 JBoss AS7 上的 aribaweb 应用程序。在 JBoss AS7 中,使用org.jboss.logmanager.log4j.BridgeLogger类来实现 Logger(这里的 BridgeLogger 类扩展为org.apache.log4j.Logger)。我在 JBoss AS7 服务器中部署了一个 aribaweb 应用程序。在内部,aribaweb 应用程序也使用相同的 Log4J 实现来进行日志记录,但它使用ariba.util.log.Logger类(这里 ariba Logger 类扩展为org.apache.log4j.Logger)来实现 Logger。但是由于一些与记录器问题相关的类转换异常,aribaweb 应用程序没有显示任何结果,这里遵循我的异常的几行


java.lang.ExceptionInInitializerError
    at ariba.util.core.ClassUtil.classForName(ClassUtil.java:259)
    at ariba.util.core.ClassUtil.classForName(ClassUtil.java:182)
    at ariba.ui.aribaweb.util.AWClassLoader.getClass(AWClassLoader.java:49)
    at ariba.ui.aribaweb.util.AWUtil.classForName(AWUtil.java:201)
    at ariba.ui.aribaweb.core.AWConcreteApplication.createApplication(AWConcreteApplication.java:145)
    at ariba.ui.servletadaptor.MyAWDispatcherServlet.createApplication(RimsAWDispatcherServlet.java:25)
    at ariba.ui.servletadaptor.AWDispatcherServlet.init(AWDispatcherServlet.java:54)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1202) [jbossweb-7.0.13.Final.jar:]
    ... 246 more
Caused by: java.lang.ClassCastException: org.jboss.logmanager.log4j.BridgeLogger cannot be cast to ariba.util.log.Logger
    at ariba.util.log.Log.(Log.java:90)

ariba.util.log.Log.java以下几行发生在课堂上的异常


public static final Logger startup =
        (Logger)Logger.getLogger("startup");

我不知道 JBoss 日志记录配置。JBoss AS7 中是否有任何与“startup”同名的记录器?或者有什么配置可以解决这个问题?

4

1 回答 1

3

这是由于 aribaweb 和 JBoss AS7 的 Logger 实现冲突。

JBoss AS7 默认支持 Log4J 实现。但是在 JBoss AS7 服务器org.apache.log4j.Logger类的情况下,它是由它自己的实现包装的,即org.jboss.logmanager.log4j.BridgeLogger. 在 aribaweborg.apache.log4j.Logger类的情况下,由 aribas 实现 ( ariba.util.log.Logger) 包装。为了解决这个问题,你需要从你的 war 文件中移除 JBoss AS7 的 log4j 模块依赖。为此,您需要jboss-deployment-structure.xml使用以下代码行创建一个文件


<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
  <deployment>
    <exclusions>
        <module name="org.apache.log4j" />
    </exclusions>
  </deployment>
</jboss-deployment-structure>

并且您需要将此文件部署在您的战争文件的 META-INF 文件夹中。

于 2013-10-30T08:43:38.780 回答