jboss-eap-5.1下部署应用时Jar包冲突的解决方案

sqtmtd 2014-02-20 09:36:57
最近负责了几个项目,应公司运维部的要求,需要把jboss4.0.5GA升级到jboss-eap-5.1,在升级过程中也出现了一些波折,主要问题就是Jar包冲突的问题,我们都知道jboss-eap-5.1以后的版本集成了很多开发的而且我们平时又需要用到的Jar包,在做项目时项目中已有了这些包,部署后应用就启不启来,报各种Jar包冲突错误, 解决这类错误的方法是改变jboss-eap-5.1的Jar包加载顺序,在加载应用时,先加载应用中lib下的Jar,解决方法是在WEB-INF目录下新建jboss-web.xml文件,文件内容如下:
<!DOCTYPE jboss-web PUBLIC "-//JBoss//DTD Web Application 5.0//EN"
"http://www.jboss.org/j2ee/dtd/jboss-web_5_0.dtd">
<jboss-web>
<!-- For load class independently 用来配置JBoss的class loader,避免class加载冲突 -->
<class-loading java2ClassLoadingCompliance='true'>
<loader-repository>com.example:archive=test.war
<loader-repository-config>java2ParentDelegaton=true</loader-repository-config>
</loader-repository>
</class-loading>
</jboss-web>

在项目中加入jboss-web.xml后可以解决99%的Jar冲突,但有一种例外,那就是项目中使用了CXF WebService,虽然在项目启动时不会报错,但在实际调用WebService时会报以下错误:
Caused by: javax.wsdl.WSDLException: WSDLException: faultCode=PARSER_ERROR: java.lang.RuntimeException: Cannot create a secure XMLInputFactory
如果开发员对jboss-eap-5.1各种参数都很了解的话,解决起来也不是难事,不熟就有点麻烦,呵呵,我就是不熟的那种,花了两三天,找了各种资料最后在一位运维的同事帮助下才解决这个问题,其实也很简单,只要修改一下jboss的启动参数就可以了,方法如下:
打开%JBOSS_HOME%lib/run.conf文件,在JAVA_OPTS的值的参数后面追加上“ -Dorg.apache.cxf.stax.allowInsecureParser=true”便可解决这个问题。

这两个小方法可以帮助到其他同行。
...全文
678 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
一杯就醉1929 2015-01-26
  • 打赏
  • 举报
回复
狂赞,,,,,,,,,,,,,,,
ilyyhb 2014-10-21
  • 打赏
  • 举报
回复
<loader-repository>com.example:archive=test.war ,这个com.example是什么啊,怎么写到具体的项目里啊
cronland 2014-04-24
  • 打赏
  • 举报
回复
项目中使用了axis2 webserice,调用的时候也报错了,有没有遇到过?
姜小白- 2014-02-20
  • 打赏
  • 举报
回复
谢谢楼主总结分享

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧