一次WebService调用其实并非方法调用,而是发送SOAP消息,即xml文档片断。调用详细过程以下:java
一、客户端将调用方法、参数,转换生成xml文档片断(SOAP消息,input消息),该文档片断必须符合wsdl定义的格式。spring
二、客户端经过网络将生成的xml文档片断传给服务器。服务器
三、服务器接受到客户端发来的xml文档片断。网络
四、服务器解析xml文档片断,提取其中的数据,并将数据转换为调用WebService所须要的参数值。spa
五、服务器执行方法。code
六、服务器将方法的执行结果再次转换为xml文档片断(SOAP消息,output消息),该文档片断必须符合wsdl定义的格式。orm
七、服务端经过网络将执行结果的xml文档片断经过网络发送给客户端。xml
八、客户端接收到执行结果的xml文档片断。对象
九、客户端解析执行结果的xml文档片断,提取其中的数据,并将数据转换为调用WebService的返回值。接口
从上面的调用本质上来看,方法的执行是在服务端,客户端只作发送xml、接收xml、解析xml。因此,一种语言支持WebService惟一的要求就是:该语言支持xml文档的解析、生成、网络传输。为何WebService离不开xml呢?WebService的三个基础以下:
一、WSDL:Web Service Definition Language——WebService定义语言
二、SOAP:Simple Object Access Protocol——简单对象访问协议
三、UDDI:Universal Description Discovery and Integration——通用描述、发现与集成服务,是一种目录服务
其中的WSDL与SOAP都为xml,因此WebService离不开xml。
XML的两个重要属性 1.targetNamespace实现类的包路径 targetNamespace="http://impl.ws.cn.xp.com/" 2.namespace <import namespace="http://ws.cn.xp.com/" location="http://127.0.0.1/XXX?wsdl=1"/> 接口的包路径,这里的import实际上导入的是另外一个wsdl,包路径不同因此用import的方式导入 3.xmlns:导入命名空间,spring的xml文件同理
xml片断分析
http://127.0.0.1/XXX?wsdl下面的xml
http://127.0.0.1/XXX?wsdl=1路径下的wsdl以下图:
http://127.0.0.1/XXX?xsd=1路径下的xml