在开发过程中CXF是部署的本地的Tomcat上的,开发完并用SoapUI简单测试过之后开始准备部署到测试环境上,测试环境是使用的WebSphere Application Server 8.0.0.5版本。
部署上去后访问wsdl页面报error500,JVMVRFY013错误,头一次看到JVM错误。。。
首先看了ApacheCXF官网的文章:
application-server-specific-configuration-guide.html#ApplicationServerSpecificConfigurationGuide-ForWebSphere6.1.0.29+,V7andV8
以及IBM的文档:
1001_thaker.pdf。
1.参照里面说的确认Class loader设置成了Classes loaded with local class loader first(parent last)
。
2.设置JVM参数-Dcom.ibm.websphere.webservices.DisableIBMJAXWSEngine=true
(或者修改war包里的WebContent/META-INF/MANIFEST.MF
添加DisableIBMJAXWSEngine:true
)来禁用了IBM JAX-WS implementation。
修改完之后依然same error…
于是乎想着更换下CXF的版本从2.3.9换成2.7.18(因为要注册到ESB上,一开始给我们的推荐版本就是2.3.9没敢直接换到3.X.X),突然间,奇迹发生了,wsdl页面能正常显示出来了,可惜高兴没多久就发现调用服务的时候依然会报错same error。。。。
最后。。再一次。。被Stackoverflow拯救了
then deleting from our deploy the following jar:
activation-*,
stax-api-* (but not stax2-api!),
jaxb-api-*,
jaxb-impl-*,
xercesImpl-*,
xml-apis-*
发现项目中包含了activation.1.1.1.jar(其实并不知道这个jar包是干什么的。。),删了之后发现一切正常了!