从战争中删除Jar

时间:2013-03-11 07:26:33

标签: java log4j classloader war jboss5.x

当我在Jboss 5.1中部署war文件时,我得到了:

 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网址。

接下来我只是尝试从war中删除log4j jar文件并成功部署而没有任何错误。得到了吗?wsdl也正确了。

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

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

1 个答案:

答案 0 :(得分:1)

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

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

您可以使用JBoss Tattletale这是一个很好的开源工具,可以找出哪些依赖关系不包含在WAR / EAR中。