0

当我在 Jboss 5.1 中部署我的战争文件时,我得到:

 ERROR [STDERR] log4j:ERROR A "org.jboss.logging.appender.FileAppender" object is not assignable to a "org.apache.log4j.Appender" variable.
 ERROR [STDERR] log4j:ERROR The class "org.apache.log4j.Appender" was loaded by
 ERROR [STDERR] log4j:ERROR [BaseClassLoader@18c1f7d{vfszip:/C:/jboss-5.1.0.GA/server/default/deploy/OnlineUsage.war/}] whereas object of type
 ERROR [STDERR] log4j:ERROR "org.jboss.logging.appender.FileAppender" was loaded by [org.jboss.bootstrap.NoAnnotationURLClassLoader@291aff].
 ERROR [STDERR] log4j:ERROR Could not instantiate appender named "FILE".

即使出现上述错误,我也可以正确点击 ?wsdl URL。

接下来我尝试简单地从war中删除log4j jar文件并成功部署,没有任何错误。得到 ?wsdl 也正确。

我的问题是这是否会在生产或实时(实时错误或绑定错误)中产生问题。

在过去我得到了一个错误Failed to create SAX Parser。如果从战争中删除 jar 不是问题,我也可以删除 XercesImpl jar 吗?由于 Jboss 有自己的 jar 文件,我可以避免 Class cast-exceptions。

4

1 回答 1

1

为了避免类转换异常,我强烈建议不要将任何 JBoss 或 JDK 提供的 jar 打包到您的 WEB-INF/lib 文件夹中。如果由于某种原因必须这样做,请使用jboss-classloading.xml文件的类加载隔离。

这一原则也适用于其他 Java EE 容器(Websphere、Weblogic、GlassFish 等)。您永远不想将 JDK 和容器提供的库打包到您自己的工件中。

您可以使用JBoss Tattletale,它是一个很棒的开源工具,可以找出哪些依赖项不能打包到 WAR/EAR 中。

于 2013-03-14T18:28:39.663 回答