当我在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。
答案 0 :(得分:1)
为了避免类转换异常,我强烈建议不要在WEB-INF / lib文件夹中打包任何JBoss或JDK提供的jar。如果由于某种原因,必须使用jboss-classloading.xml
文件加载隔离加载隔离。
此原则也适用于其他Java EE容器(Websphere,Weblogic,GlassFish等)。您永远不想在自己的工件中打包JDK和容器提供的库。
您可以使用JBoss Tattletale这是一个很好的开源工具,可以找出哪些依赖关系不包含在WAR / EAR中。