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文档好了, 流量不多了...