soap-UI生成axis客户端代码的问题


placeholder image
admin 发布于:2012-10-19 23:48:00
阅读:loading

虽然使用soap-UI生成axis客户端代码的次数不是很多,也不少,但是每次使用屡试不爽,前几天遇到这么个错误让我很尴尬,在调试一个WebService接口的时候,调用的时候一直报错,错误信息为:
Caused by: java.lang.IllegalArgumentException: argument type mismatch 
看上去是 参数类型不匹配的问题,于是就找定位到跟设置参数值相关的代码, 但是又仔细想想,我这是使用axis调用WS的客户端代码呀,哪有什么参数转换的呢?这里不讨论用什么技术实现的问题,只说说基于此种实现遇到的此种问题的解决过程。总结一下我的解决问题的思路:
1、先检查了一下调用代码,发现没问题。
2、网上查询相关错误信息,发现这个错误跟axis扯到一起的博客非常少,报的这个错基本都是BeanUtils相关的。
3、使用soap-UI和CXF生成客户端调用代码,调用正常,验证接口服务端是正确的。
4、重新编译工程、重新发布等,问题依旧。
5、咨询相关同事,问题依旧。
6、想起当时一个国际化的项目,韩老板在调试Struts2国际化代码的时候,对class类文件进行了调试,调试结果还让我看了的,所以印象很深刻(第一次知道了给jar包附加源代码除了能看到源码和注释外,还能debug),我也试着下载axis-1.4-src源码,使用eclipse附加上源码,断点,debug,开始。
7、通过对源码的debug,我发现更详细的错误原因为:在反射的时候,传递的参数类型错误,这跟上面说的参数不匹配是同一个意思,知道了哪一行代码抛的错误,仔细查看发现是反射某个对象的时候参数类型传递的是个数组 [] 类型,而代码里面是 二维数组 [][] 类型,那么
我只需要将参数类型修改统一了,问题应该可以解决了。
 

贴出来这块代码了:
    
private com.xxx.RequestValidateItem[][] requestValidateCollection;

为什么要搞这个日志记录这个错误呢?由于使用工具生成的客户端调用代码这种问题很隐晦,一般没人会想得到会是这个问题。谨记 。你如果也遇到了在使用axis客户端代码调用接口的时候,抛argument type mismatch 错误,不妨看看这个。
soap-ui生成axis的客户端代码有问题,至少我就遇到了。 

中,百步穿杨!

 点赞


 发表评论

当前回复:作者

 评论列表


留言区