Web Service高階 一 執行原理

2021-06-29 15:05:15 字數 2587 閱讀 2201

在web服務中,存在三個角色:服務提供者、服務請求者和服務中介,三者之間的關係如圖1-1所示:(摘錄自:

實現乙個完整的web服務包括以下步驟:

◆ web服務提供者設計實現web服務,並將除錯正確後的web服務通過web服務中介者發布,並在uddi註冊中心註冊; (發布)

◆ web服務請求者向web服務中介者請求特定的服務,中介者根據請求查詢uddi註冊中心,為請求者尋找滿足請求的服務; (發現)

◆ web服務中介者向web服務請求者返回滿足條件的web服務描述資訊,該描述資訊用wsdl寫成,各種支援web服務的機器都能閱讀;(發現)

◆ 利用從web服務中介者返回的描述資訊(wsdl)生成相應的soap訊息,傳送給web服務提供者,以實現web服務的呼叫;(繫結)

◆ web服務提供者按soap訊息執行相應的web服務,並將服務結果返回給web服務請求者。(繫結)

圖1-1

web service

的體系結構

注:wsdl的作用就是乙個web服務說明書。服務請求者根據此wsdl生成相應的soap訊息,服務提供者在收到soap請求訊息後,

進行服務的繫結。

以下**是在web.xml中的servlet配置

紅色**部分很重要,會在web容器啟動的時候載入相應的servlet。綠色部分為該服務的外部介面。以此找到相應的jax-ws.xml檔案(如下所示)

進而繫結到相關的相應的實現類cn.ujn.service.userservice中。客戶端傳送的soap請求訊息訊息體body中包含有客戶端所請求的方法名和引數資訊。

以下為客戶端封裝的soap訊息體(以json方式與服務端進行資料傳輸)(soap rerquest envelope):--

以下為soap1.1協議呼叫web服務

/**

* 通過soap1.1協議呼叫web服務

* * text/xml 這是基於soap1.1協議

* * @param wsdl wsdl路徑

* @param method方法名

* @param namespace命名空間

* @param headerparameters 頭引數

* @param bodyparameters 體引數

* @param isbodyparametersns 體引數是否有命名空間

* @return string

* @throws exception

*/public static string invokebysoap11(string wsdl, string method,

string namespace, mapheaderparameters,

mapbodyparameters, boolean isbodyparametersns)

throws exception

}//拼裝訊息體

// 輸入引數

if (bodyparameters != null) else }}

//測試用

system.out.println(sb.tostring());

//寫入soap訊息(相對於客戶端來說,使用的是out.write())

out.write(sb.tostring().getbytes());

//獲取伺服器端的相應

int code = conn.getresponsecode();

if (code == 200)

}conn.disconnect();

return soapofresult == null ? null : soapofresult.tostring();

}

注:在客戶端傳送soap請求訊息後便處於阻塞狀態。直至服務端返回狀態碼。

以下為服務端進行響應(soap response envelope):--

1客戶端接收到服務端發來的json資料後會進行相應的解析操作。如下:

// 將soap協議進行解析(dom解析只能用於解析xml文件型別,而soap訊息就是採用xml資料格式)

document doc = xmlutil.string2doc(result);

element ele = (element) doc.getelementsbytagname("return").item(0);

方法中使用到的string2doc()方法體如下:

public static document string2doc(string str)

try catch (exception e)

return document;

}

根據返回結果,客戶端再進行相應的處理。

以上是web服務的基本工作原理。在此感謝實驗室徐師兄的技術支援。

web service的執行過程

webservice執行過程 1.客戶通過wsdl的描述生成soap,通過http傳送到伺服器 2.伺服器解析soap,提取輸入資料,執行請求的函式,返回資料 3.把2的返回資料封裝成soap,傳送給客戶端 4.客戶端解析soap,並根據wsdl的描述封裝成響應物件 在webservice中,wsd...

Web Service執行過程的總結

web service執行過程的總結 前面幾篇部落格我們搞了2個dome,讓我們對webservice服務發布,呼叫 執行 有一定的了解,今天我們再系統的梳理下webservice執行過程。1.首先我們在webservice伺服器端開發webservice介面,然後用類實現介面,最後發布webser...

lambda高階高階 延遲執行

前面的整理我們也已經說到了,使用lambda表示式的主要原因是,將 的執行延遲到乙個合適的時間點。在使用lambda表示式的時候務必記住一點就是說lambda表示式都是延遲執行的。延遲執行 的原因有很多,具體的如下。1,在另外乙個執行緒中執行 2,多次執行 3,在某個演算法的正確時間點上執行 比如排...