十一 04

问题描述

WEB服务接口编写完成并发布后,客户端测试程序收不到WEB服务的返回结果,Apache或Resin的log中也看不到访问记录。但测试程序返回结果为0(成功),在没有部署该WEB服务的情况下,也是这个结果,因此怀疑调用的是WSDL文件的提供者自己测试用的WEB服务接口,可能与另一方提供的WSDL文件有关。

原因分析

合作伙伴调用WEB服务就能够成功,从WEB服务主机自己的客户端调用就接收不到数据,估计与合作伙伴提供的WSDL文件有关,该WSDL文件影响了WSDL2Java生成的客户端stub代码。检查stub代码,发现其soapAction都指向了合作伙伴的测试地址。

解决方法

修改stub代码中的soapAction,改为sp(Service Provider)自己的WEB服务URL。重新编译程序并发布Web服务,问题解决。

_call.setSOAPActionURI("sp自己的Web服务地址");

小结

本小节描述的问题出现于Web服务提供方按合作伙伴统一提供的WSDL文件生成客户端代码的情况。遇到这类问题,读者可直接检查WSDL2Java自动生成的代码的有关部分。

在WSDL文件中可以看到与下列内容相似的设置。



<wsdl:service name="SPInterfaceForVNet">
<wsdl:port binding="impl:SPInterfaceSoapSoapBinding" name="SPInterfaceForVNetSoap">
 <wsdlsoap:address location="http://test.com/services/SPInterfaceSoap" />
 </wsdl:port>
 </wsdl:service>



其中 http://test.com/services/SPInterfaceSoap即为已发布的WEB服务的URL,供客户端调用。


Tags:

作者:Jock

Leave a Reply

You must be logged in to post a comment.

Switch to our mobile site