CXF客户端动态调用--复杂类型参数传递

这几天在公司的项目中,需要调用第三方短信平台的webservice接口群发短信。走了许多弯路,最终解决了问题,并记下实践的一些经验。

在前一个项目中,为外界提供了一些webservice接口,使用的是apache-CXF,这个组件用的挺多的,但限制也是有的,例如它不能调用axis2 RPC模式的接口(网上的说法)。

在之前用它发布服务,和调用传递字符串入参等,都是很方便、简单。挺好用。但是最近调用短信平台接口出现的一些问题,还是感悟很深刻。

服务接口是用axis2发布的,需要调用的方法入参和返回参数都是pojo。

按照一贯的流程,使用wsdl2java工具生成代码,使用jax-ws proxy模式调用生成代理接口,封装好入参pojo参数,执行报异常。


java.lang.IllegalArgumentException: argument type mismatch
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.cxf.databinding.AbstractWrapperHelper.createWrapperObject(AbstractWrapperHelper.java:99)
at org.apache.cxf.jaxws.interceptors.WrapperClassOutInterceptor.handleMessage(WrapperClassOutInterceptor.java:105)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:516)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:313)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:265)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:285)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:271)
at cn.intellisoft.hoorayos.webservice.client.DynamicClient.executeOperation(DynamicClient.java:39)

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值