WebService是一種可以接收從Internet或者Intranet上的其它系統(tǒng)中傳遞過來的請求,輕量級的獨立的通訊技術(shù)。 這種技術(shù)允許網(wǎng)絡(luò)上的所有系統(tǒng)進行交互。隨著技術(shù)的發(fā)展,一個Web服務(wù)可以包含額外的指定功能并且可以在多個B2B應(yīng)用中協(xié)作通訊。 Web服務(wù)可以理解請求中上下文的關(guān)系,并且在每一個特定的情況下產(chǎn)生動態(tài)的結(jié)果。這些服務(wù)會根據(jù)用戶的身份,地點以及產(chǎn)生請求的原因來改變不同的處理,用以產(chǎn)生一個唯一的,定制的方案。這種協(xié)作機制對那些只對最終結(jié)果有興趣的用戶來說,是完全透明的。 UDDI在用戶能夠調(diào)用Web服務(wù)之前,必須確定這個服務(wù)內(nèi)包含哪些商務(wù)方法,找到被調(diào)用的接口定義,還要在服務(wù)端來編制軟件。所以,我們需要一種方法來發(fā)布我們的Web服務(wù)。 UDDI (Universal Description, Discovery, and Integration) 是一個主要針對Web服務(wù)供應(yīng)商和使用者的新項目。UDDI 項目中的成員可以通過UDDI Business Registry (UBR) 來操作Web服務(wù)的調(diào)用,UBR是一個全球性的服務(wù)。 Web服務(wù)供應(yīng)商可以在UBR中描述并且注冊他們的服務(wù)。 用戶可以在UBR中查找并定位那些他們需要的服務(wù)。 UDDI是一種根據(jù)描述文檔來引導(dǎo)系統(tǒng)查找相應(yīng)服務(wù)的機制。 UDDI包含標(biāo)準(zhǔn)的“白皮書”類型的商業(yè)查詢方式, “黃皮書”類型的局部查找,以及 “綠皮書”類型的服務(wù)類型查找。 UDDI利用SOAP消息機制(標(biāo)準(zhǔn)的XML/HTTP)來發(fā)布,編輯,瀏覽以及查找注冊信息。它采用XML格式來封裝各種不同類型的數(shù)據(jù),并且發(fā)送到注冊中心或者由注冊中心來返回需要的數(shù)據(jù)。WSDL對于商業(yè)用戶來說,要找到一個自己需要使用的服務(wù),他必須知道如何來調(diào)用。 WSDL (Web Services Description Language) 規(guī)范是一個描述接口,語義以及Web服務(wù)為了響應(yīng)請求需要經(jīng)常處理的工作的XML文檔。這將使簡單地服務(wù)方便,快速地被描述和記錄。以下是一個WSDL的樣例:
它包含了以下的關(guān)鍵信息: 消息的描述和格式定義可以通過XML文檔中的<types>和<message> 標(biāo)記來傳送。 <portType> 標(biāo)記中表示了消息傳送機制。 (e.g. request-only, request-response, response-only) 。 <binding> 標(biāo)記指定了編碼的規(guī)范 。 <service> 標(biāo)記中表示服務(wù)所處的位置 (URL)。 WSDL在UDDI中總是作為一個接口描述文檔。因為UDDI是一個通用的用來注冊WSDL規(guī)范的地方,UDDI的規(guī)范并不限制任何類型或者格式描述文檔。這些文檔可能是一個WSDL文檔,或者是一個正規(guī)的包含導(dǎo)向文檔的Web頁面,也可能只是一個包含聯(lián)系信息的電子郵件地址?,F(xiàn)在Java提供了一個 Java API for WSDL (JWSDL)規(guī)范。它提供了一套能快速處理WSDL文檔的方法,并且不用直接對XML文檔進行操作,它會比JAXP更方便,更快速。 SOAP當(dāng)商業(yè)用戶通過UDDI找到你的WSDL描述文檔后,他通過可以Simple Object Access Protocol (SOAP) 調(diào)用你建立的Web服務(wù)中的一個或多個操作。 SOAP是XML文檔形式的調(diào)用商業(yè)方法的規(guī)范,它可以支持不同的底層接口,象HTTP(S)或者SMTP。 之所以使用XML是因為它的獨立于編程語言,良好的可擴展性以及強大的工業(yè)支持。之所以使用HTTP是因為幾乎所有的網(wǎng)絡(luò)系統(tǒng)都可以用這種協(xié)議來通信,由于它是一種簡單協(xié)議,所以可以與任何系統(tǒng)結(jié)合,還有一個原因就是它可以利用80端口來穿越過防火墻。 SOAP的強大是因為它簡單。SOAP是一種輕量級的,非常容易理解的技術(shù),并且很容易實現(xiàn)。它有工業(yè)支持,可以從各主要的電子商務(wù)平臺供應(yīng)商那里獲得。從技術(shù)角度來看,SOAP詳細(xì)指明了如何響應(yīng)不同的請求以及如何對參數(shù)編碼。一個SOAP封裝了可選的頭信息和正文,并且通常使用HTTP POST方法來傳送到一個HTTP 服務(wù)器,當(dāng)然其他方法也是可以的,例如SMTP。SOAP同時支持消息傳送和遠(yuǎn)程過程調(diào)用。以下是一個SOAP請求。
JAXR為了支持UDDI在Java平臺上的功能,Java APIs for XML Registries (JAXR)允許開發(fā)者來訪問注冊中心。 值得注意的是,JAXR并不是建立Web服務(wù)必需的,你可以利用其他常用的XML APIs來直接集成這些協(xié)議。 JAXR是一個方便的API,它提供了Java API來發(fā)布,查找以及編輯那些注冊信息。它的重點在于基于XML的B2B應(yīng)用,復(fù)雜的地址本查找以及對XML消息訂閱的支持等Web服務(wù)。 它也可以用來訪問其他類型的注冊中心,象ebXML注冊中心。這些對Web服務(wù)的注冊信息進行的操作,可以使用當(dāng)前的一些Web服務(wù)工具來完成(例如第三方的SOAP和ebXML消息工具)。另外,當(dāng)JAXP提供了一致并具有針對性的API來完成這些操作,這將使開發(fā)變得更加容易。JAX/RPC為了使開發(fā)人員專注于建立象SOAP那樣的基于XML的請求,JCP正在開發(fā)基于RPC (JAX/RPC) 的Java API。JAX/RPC是用來發(fā)送和接收方法調(diào)用請求的,它基于XML協(xié)議,象SOAP,或者其他的象XMLP (XML Protocol,要了解更多可以參考http://www./2000/xp/)。JAX/RPC使你不用再關(guān)注這些協(xié)議的規(guī)范,使應(yīng)用的開發(fā)更快速。不久,開發(fā)人員就不用直接以XML表示方法調(diào)用了。目前有很多第三方實現(xiàn)了SOAP,開發(fā)人員可以在不同的層次上調(diào)用SOAP,并選擇使用哪一種。將來,JAX/RPC會取代這些APIs并提供一個統(tǒng)一的接口來構(gòu)造以及處理SOAP RPC請求。在接收一個從商業(yè)伙伴那里過來的SOAP請求的時候,一個Java servlet用JAX/RPC來接收這個基于XML的請求。一旦接收到請求后,servlet會調(diào)用商務(wù)方法,并且把結(jié)果回復(fù)給商業(yè)伙伴。JAXM當(dāng)從商業(yè)合作伙伴那里接收一個Web服務(wù)的請求時,我們需要Java API實現(xiàn)一個Servlet來處理ebXML消息,就象我們用JAX/RPC來處理SOAP請求一樣。 Java API for XML Messaging (JAXM) 是集成XML消息標(biāo)準(zhǔn)(象ebXML消息或者SOAP消息)的規(guī)范。 這個API是用來推動XML消息處理的,它檢測那些預(yù)定單的消息格式以及約束。它控制了所有的消息封裝機制,用一種直觀的方式分割了消息中的信息,象路由信息,發(fā)貨單。這樣,開發(fā)人員只要關(guān)注消息的有效負(fù)載,而不用去擔(dān)心那些消息的重復(fù)處理。目前的開發(fā)人員用JAXP來實現(xiàn)JAXM將要提供的功能,JAXM將會提供一套非常具有針對性的API來處理基于XML的消息傳送。這將大大簡化開發(fā)人員的代碼,并使它們具有統(tǒng)一的接口。 JAXM和JAX/RPC的差別在于處理消息導(dǎo)向的中間件以及遠(yuǎn)程過程調(diào)用的不同。JAXM注重于消息導(dǎo)向,而JAX/RPC是用來完成遠(yuǎn)程過程調(diào)用的。 請注意,在JAXM 和 JAX/RPC技術(shù)成熟之前,開發(fā)人員還是依賴于第三方的SOAP APIs,象Apache SOAP, IdooXOAP, 以及 GLUE。當(dāng)JAXM 和 JAX/RPC正式發(fā)布后,它將為當(dāng)前不同的SOAP和ebXML消息提供統(tǒng)一的接口。就象JDBC位多種不同的數(shù)據(jù)庫提供統(tǒng)一的接口。 JAXBXML綁定技術(shù)可以把XML文檔和Java對象進行自由轉(zhuǎn)換。 用JAXB,你可以在后臺的EJB層,把XML文檔轉(zhuǎn)換成Java對象。同樣你也可以把從EJB中取出的Java對象轉(zhuǎn)換成XML文檔返回給用戶。 JAXB接口提供了比SAX和DOM更高級的方法來處理XML文檔。它提供的特性可以在XML數(shù)據(jù)和Java類之間互相映射,提供了一個簡單的方法來轉(zhuǎn)換XML數(shù)據(jù)。它比逐個解析標(biāo)記更簡單。 |
|
來自: 蔡蔡 > 《技術(shù)文檔》