1. 目的java
基本流程如圖
對於商業用戶來講,要找到一個本身須要使用的服務,他必須知道如何來調用。
WSDL (Web Services Description Language) 規範是一個描述接口,語義以及Web服務爲了響應請求須要常常處理的工做的XML文檔。這將使簡單地服務方便,快速地被描述和記錄。
|
WSDL文檔能夠分爲兩部分。頂部分由抽象定義組成,而底部分則由具體描述組成。抽象部分以獨立於平臺和語言的方式定義SOAP消息,它們並不包含任何隨機器或語言而變的元素。這就定義了一系列服務,大相徑庭的網站均可以實現。隨網站而異的東西如序列化便納入底部分,由於它包含具體的定義。
l.
抽象定義
Types 獨立與機器和語言的類型定義 Messages 包括函數參數(輸入與輸出分開)或文檔描述 PortTypes 引用消息部分中消息定義來描述函數簽名(操做名、輸入參數、輸出參數) 2. 具體定義 Bindings PortTypes部分的每一操做在此綁定實現 Services 肯定每一綁定的端口地址
各Messages欄使用Types欄的定義,PortTypes欄使用Messages欄的定義;Bindings欄引用了PortTypes欄,Services欄引用Bindings欄,PortTypes和Bindings欄包含了operation元素,而Services欄包含了port元素。PortTypes欄裏的operation元素由Bindings欄裏的operation元素進一步修改或描述。
注意:文檔之中可能只有一個Types欄,或根本沒有。全部其餘的欄能夠只有零元素、單元素或是多元素。WSDL的列表要求全部的欄以固定的順序出現:import, types, message, portType, binding, service。全部的抽象能夠是單獨存在於別的文件中,也能夠從主文檔中導入。
第一行申明該文檔是XML。儘管這並非必需的,但它有助於XML解析器決定是否解析WSDL文件或只是報錯。
第二行是WSDL文檔的根元素:<definitions>。一些屬性附屬於根元素,就像<schema>子元素對於<types>元素。
<types>元素包含了Types欄。若是沒有須要聲明的數據類型,這欄能夠缺省。在WSDL範例中,沒有應用程序特定的types聲明,但我仍然使用了Types欄,只是爲了聲明schema namespaces。
<message>元素包含了Messages欄。若是咱們把操做看做函數,<message>元素定義了那個函數的參數。<message>元素中的每一個<part>子元素都和某個參數相符。輸入參數在<message>元素中定義,與輸出參數相隔離--輸出參數有本身的<message>元素。兼做輸入、輸出的參數在輸入輸出的<message>元素中有它們相應的<part>元素。輸出<message>元素以"Response"結尾,就像之前所用的"fooResponse"。每一個<part>元素都有名字和類型屬性,就像函數的參數有參數名和參數類型。
一個PortTypes欄中,能夠有零個、單個或多個<portType>元素。因爲抽象PortType定義能夠放置在分開的文件中,在某個WSDL文件中沒有<portType>元素是可能的。上面的例子裏只是用了一個<portType>元素。而一個<portType>元素可在<operation>元素中定義一個或是多個操做。示例僅使用了一個名爲"foo"的<operation>元素。這和某個函數名相同。<operation>元素能夠有一個、兩個、三個子元素:<input>, <output> 和<fault>元素。每一個<input>和<output>元素中的消息都引用Message欄中的相關的<message>元素。
Bindings欄能夠有零個、一個或者多個<binding>元素。它的意圖是制定每一個<operation>經過網絡調用和迴應。Services欄一樣能夠有零個、一個、多個<service>元素。它還包含了<port>元素,每一個<port>元素引用一個Bindings欄裏的<binding>元素。Bindings和Services欄都包含WSDL文檔。
|
package com.smt.service;
/******************************************************
*
* 功能描述: WebService Xfire 對象提供服務接口類</br></br>
*
* 做者: chenab </br></br>
*
* 建立時間: 2011-7-14 上午11:22:26</br></br>
*
* 版本號:V1.0 </br></br>
*****************************************************/
public
interface IBankingService {
public String transferFunds(String fromAccount);
}
|
package com.smt.service;
/*****************************************************
*
* 功能描述: webService XFire 服務接口實現類</br></br>
*
* 做者: chenab</br></br>
*
* 建立時間: 2011-7-14 上午11:28:47</br></br>
*
* 版本號:V1.0 </br></br>
*******************************************************/
public
class BankingService
implements IBankingService {
public BankingService() {
}// 空構造不可少
public String transferFunds(String fromAccount) {
String str=" 恭喜, 服務端測試成功! "+fromAccount;
System.
out.println(str);
return str;
}
}
|