CXF 与 websphere 不兼容的处理方式

2天之前,我真的是一点都没有接触过webservice程序,直接造成了昨天的悲剧

 

昨天,由于项目中用到了CXF发布webservice应用,客户最终要部署要was7上面.

使用的CXF版本是2.4.1,在tomcat下测试都好好的,发布到was7上面就开始报错:

 

 java.lang.IncompatibleClassChangeError: org.apache.neethi.AssertionBuilderFactory

 java.lang.IncompatibleClassChangeError: org.apache.neethi.AssertionBuilderFactory

 

上网一查,说CXF与was7不兼容,要改....先冒一身冷汗,于是按照很多人网上所说的方法,改包,删包,往endorsed目录下塞包,修改was上面的虚拟机类加载机制,都试了个试,结果一个都没用....

 

期间由于更改类加载顺序,还引起了启动servlet根本无法被加载的问题

 

整个下午一直晕到死...

 

到了晚上,上面下了死命令,今天必须把兼容性搞定...实在没办法,根据有人给出的链接,到官网上查了一下,was7专门针对axis2与cxf的不兼容给出了解决方案.并且给出了一个测试war(ear)包,于是顶着3g上网卡超流量的风险,下载了30M的cxf测试ear包,发布到was7上,居然人家就可以发布成功!而我自己写的helloworld按照它官网给出的解决方案居然发布失败..

 

于是怒了,看了下人家的版本.是cxf2.1.3的,我用的是2.4.1的,不管了,改...

 

除了更换了CXF版本外,还在打出的war包的manifest.mf文件中增加了一行:

 

 

Manifest-Version: 1.0
DisableIBMJAXWSEngine: true
Class-Path: 
 

 

最后晚上10点半发布测试,成功搞定...Oh,My God, 赶紧打的走人,晚上还要赶回另外一个地点查找账务问题...悲催啊

 

 

IBM 官方链接为:

http://www.ibm.com/developerworks/websphere/library/techarticles/1001_thaker/1001_thaker.html

 

其中例子ear包就不在此上传了,,有22M, 只传pdf文档好了, 流量不多了...

 

你可能感兴趣的:(websphere)