环境:ubuntu 12.04 LAMP (PHP5.3.10)
先来看下,我整个测试的过程和出现问题地方。
web service
client
math.wsdl文件已经事先生成好了。。。
执行client调用add的方法的结果,没有然后问题。
/×××××××××××××××××××××××××××××××××××××××××××××/
问题来了。。
现在,我在service的类下面添加多一个方法 test
重新生成wsdl文件
现在我们client来调用test这个方法。。
错误出来了。。。
原来linux会缓存使用过的webservice wsdl文件,
当调用webservice服务时,会读取缓存中的,进而导致抛出了以上错误。
我们可以在/tmp下看见缓存的相关文件。。wsdl 开头的文件就是web service 的wsdl缓存文件
最粗暴直接的解决方法就是将缓存文件,直接删除。。到/tmp文件下,删除相关的webservice wsdl的缓存文件。
然后再重新run。。
see,“hello,world!”出来了。。。
我们再看下/tmp。。。是不是又出来了web service wsdl的缓存文件呀。。
当然,这会很烦。如果你经常修改,web service 的方法。我们也可以在service 和 client 下都添加上这样的代码来关闭wsdl的缓存。这样就不用每次都去手动地去删除/tmp下的缓存文件了。。(是服务端和客户端都关闭wsdl的缓存)