一次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