IT忍者神龟之Java调用net的webservice故障排除实战分享

以前用过java调用net的webservice服务端 时,出现了如下故障。2010.6月20日编写

IT忍者神龟之Java调用net的webservice故障排除实战分享_第1张图片

第一种方式(仍用cxf 解决)
step1
将 http://test.payserv.net/Paygate/ccservice.asmx?WSDL 对应的内容另存为 ccservice.wsdl

 

IT忍者神龟之Java调用net的webservice故障排除实战分享_第2张图片

这里要特别说明的是,只能通过网页中另存为ccservice.wsdl,不能简单的将网页中的复制后,再粘贴到一个文本文件中,另存为 ccservice.wsdl,这样即使经过下述的 step2后,仍然会报错

 


IT忍者神龟之Java调用net的webservice故障排除实战分享_第3张图片

 

step2
首先将 ccservice.wsdl文件中的如下内容进行如下替换
即将  <s:element ref="s:schema" /><s:any /> 替换成  <s:any minOccurs="2" maxOccurs="2"/>

 

IT忍者神龟之Java调用net的webservice故障排除实战分享_第4张图片

这样处理后,再次运行wsdl2java又报了如下错误

 

IT忍者神龟之Java调用net的webservice故障排除实战分享_第5张图片

经过仔细查看和分析,原来在ccservice.wsdl文件中,有queryResponse 和 QueryResponse 两个名字的定义,可能在 net中webservice是不区分大小写的,但是在java中生成webservice的客户端时,又是区分大小写的,所以会报上述错误。针对此,阿堂(网络时空)于时将其中的QueryResponse的名字改为了 QueryResponse1,且ccservice.wsdl文件中将所有引用QueryResponse的地方也改成了QueryResponse1。。然后再将运行就一切ok啦

 


IT忍者神龟之Java调用net的webservice故障排除实战分享_第6张图片
 

 

 

 

总结一下

在用cxf的wsdl2java命令处理net或其它语言产生的webservice时,如出现报错,要仔细观察报错信息的描述,通过自己思考和查询网络资源,有针对性的修改,一定是可以解决的。

 

 

第二种方式(用axis的webservice框架 解决)

从测试来看,不需要任何修改即可生成websercie的客户端

 

IT忍者神龟之Java调用net的webservice故障排除实战分享_第7张图片

 

不过,要需要axis如下一些jar包才能保证axis产生的webservice的客户端代码正常运行

 

IT忍者神龟之Java调用net的webservice故障排除实战分享_第8张图片

总结一下

如果用时候发现用cxf的 wsdl2java命令不能正常执行时,不妨考用axix之类的其它webservice框架来解决问题,换一个角度去解决问题。

 

调用方式
Ccservice ccservice = new Ccservice();
CcserviceSoap ccserviceSoap = ccservice.getCcserviceSoap();
ccserviceSoap.query(参数1,参数2,...);


你可能感兴趣的:(IT忍者神龟之Java调用net的webservice故障排除实战分享)