CXF 在WAS上报Unmarshalling Error的问题

这两天在项目上集成CXF进行异构系统间的通讯,在Tomcat上集成开发,用cxf生成客户端代码,运行都没有问题,但是迁移到WAS7上,就出问题了

Caused by: javax.xml.ws.soap.SOAPFaultException: Unmarshalling Error: unexpected element (uri:"", local:"colNum"). Expected elements a
re <{}sql>
        at org.apache.axis2.jaxws.marshaller.impl.alt.MethodMarshallerUtils.createSystemException(MethodMarshallerUtils.java:1310)
        at org.apache.axis2.jaxws.marshaller.impl.alt.MethodMarshallerUtils.demarshalFaultResponse(MethodMarshallerUtils.java:1036)
        at org.apache.axis2.jaxws.marshaller.impl.alt.DocLitWrappedMethodMarshaller.demarshalFaultResponse(DocLitWrappedMethodMarshall
er.java:591)
        at org.apache.axis2.jaxws.client.proxy.JAXWSProxyHandler.getFaultResponse(JAXWSProxyHandler.java:532)
        at org.apache.axis2.jaxws.client.proxy.JAXWSProxyHandler.createResponse(JAXWSProxyHandler.java:470)
        at org.apache.axis2.jaxws.client.proxy.JAXWSProxyHandler.invokeSEIMethod(JAXWSProxyHandler.java:377)
        at org.apache.axis2.jaxws.client.proxy.JAXWSProxyHandler.invoke(JAXWSProxyHandler.java:185)

 这大致的意思是客户端发送的参数(uri:"", local:"colNum")与服务端接收的参数<{}sql>不一致

开始没怎么注意,就看到了

org.apache.axis2.jaxws.client.proxy.JAXWSProxyHandler

 唉,怎么老是WAS报错啊,赶快查查这个类在哪里,结果是WAS容器自己带的,这~难道是WAS不支持CXF?

一番谷歌度娘后,发现was是支持的,奇怪了,Tomcat、Application调用全都可以啊。。。。

再用soapUI调用试试,正常~~~

无奈,在csdn上看到有人说是代码中缺少命名空间注释

参考:http://blog.csdn.net/maosijunzi/article/details/8278042

一番修改之后,再部署到was上,结果。。。依旧。。。

怎么办?

检查一下服务端吧,检查了半天,还是没发现有问题。。。。

无意中,在soapUI中多加了一个请求参数,OMG,竟然报了同样的错误。

至此注意到了这个错误内容:

Unmarshalling Error: unexpected element (uri:"", local:"colNum"). Expected elements a
re <{}sql>

 参数不对,参数不对!研究一下客户端代码,没问题,依然没问题

那是不是就代表在was上部署的没问题呢?

查。。。查。。。查。。。。

发现了,原来WAS上的应用咱本来是要用jar包里的客户端代码,结果,把源码包编译后的客户端class文件放上去了,而且是旧的,自然不会调用新的jar包了

果断删除class文件,果断重启,果断测试,终于解决~

以后部署都要谨慎点啊~唉~这闹的~

相关推荐