Java EE 6企業(yè)級(jí)應(yīng)用開發(fā)教程:第12章 Web Service_第1頁
Java EE 6企業(yè)級(jí)應(yīng)用開發(fā)教程:第12章 Web Service_第2頁
Java EE 6企業(yè)級(jí)應(yīng)用開發(fā)教程:第12章 Web Service_第3頁
Java EE 6企業(yè)級(jí)應(yīng)用開發(fā)教程:第12章 Web Service_第4頁
Java EE 6企業(yè)級(jí)應(yīng)用開發(fā)教程:第12章 Web Service_第5頁
已閱讀5頁,還剩56頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第1212章 Web ServiceWeb Service吉林大學(xué)軟件學(xué)院本章主要內(nèi)容Web ServiceWeb Service產(chǎn)生背景產(chǎn)生背景Web ServiceWeb Service概述概述相關(guān)標(biāo)準(zhǔn)與技術(shù)相關(guān)標(biāo)準(zhǔn)與技術(shù)Web ServiceWeb Service架構(gòu)架構(gòu) Web ServiceWeb Service的種類的種類利用利用JAX-WSJAX-WS建立建立Web ServiceWeb Service利用利用JAX-RSJAX-RS構(gòu)建構(gòu)建RESTful Web ServiceRESTful Web Service問題的產(chǎn)生網(wǎng)站數(shù)據(jù)共享數(shù)據(jù)共享問題假如有一個(gè)在線新聞?wù)军c(diǎn)向其它站

2、點(diǎn)站點(diǎn)提供本站的在線新聞,而這些新聞均儲(chǔ)存在數(shù)據(jù)庫中。不可能通過訪問數(shù)據(jù)庫這種原始的方式(訪問權(quán)限、密碼安全問題)。企業(yè)內(nèi)部各系統(tǒng)間數(shù)據(jù)交流數(shù)據(jù)交流問題人事部門財(cái)務(wù)部門銷售部門科研部門手機(jī)功能集成功能集成問題當(dāng)前氣溫某商品價(jià)格(比價(jià))實(shí)時(shí)新聞 .遺留系統(tǒng)的重用問題重用問題Web 服務(wù)的產(chǎn)生背景商業(yè)要求業(yè)務(wù)敏捷性要求:IT實(shí)現(xiàn)的自動(dòng)業(yè)務(wù)流程能夠快速構(gòu)造和快速調(diào)整保護(hù)企業(yè)對(duì)信息技術(shù)的投資要求:能夠低成本地對(duì)原有IT系統(tǒng)更新、升級(jí)和維護(hù);充分利用原有遺留系統(tǒng)構(gòu)建新系統(tǒng)支持企業(yè)組織變革(虛擬企業(yè))要求:IT能夠支持動(dòng)態(tài)聯(lián)盟,軟件互操作性強(qiáng)Web 服務(wù)的產(chǎn)生背景IT技術(shù)的不足編程語言C、C+、VB、Fo

3、xPro、Java、C#、J+、.編程級(jí)別上的發(fā)展史結(jié)構(gòu)化編程函數(shù)與過程-功能分解面向?qū)ο蟮木幊堂嫦蚪M件的重構(gòu)分布式計(jì)算Sun RPC (1985) 遠(yuǎn)程過程調(diào)用協(xié)議 (Remote Procedure Call Protocol )CORBA (1992) 公用對(duì)象請(qǐng)求代理(調(diào)度)程序體系結(jié)構(gòu)(Common Object Request Broker Architecture) Microsoft COM (1993) Componet Object Model,組件對(duì)象模型 Microsoft DCOM (1996) Distributed Component Object Model J

4、ava RMI (1996) Remote Method Invocation遠(yuǎn)程方法調(diào)用 Microsoft COM+ (COM、DCOM、MTS )Web 服務(wù)的產(chǎn)生背景主流分布式應(yīng)用技術(shù)的缺點(diǎn):目前的分布式對(duì)象技術(shù)各自為政客戶端與服務(wù)端緊耦合平臺(tái)之間互操作困難COM+CORBARPCIIOPNDRCDRIDLOMG IDLRPC 通訊協(xié)議通訊協(xié)議消息消息格式格式描述描述語言語言Windows RegistryNaming Service探索探索機(jī)制機(jī)制Java RMIIIOP or JRMPJava Ser. FormatJavaRMI Registry or JNDI開放的技術(shù)和統(tǒng)一的

5、標(biāo)準(zhǔn)是企業(yè)技術(shù)選擇的必由之路。問題:資源如何封裝、如何描述、如何發(fā)現(xiàn)、如何訪問Web 服務(wù)的產(chǎn)生背景資源網(wǎng)絡(luò)核心問題如何封裝如何描述如何發(fā)現(xiàn)如何訪問Web 服務(wù)的產(chǎn)生背景12.1 Web Service概述 什么是Web Service?W3C的定義: Web Service提供了一種網(wǎng)絡(luò)服務(wù)的定義和獲取方式,使得運(yùn)行在不同的平臺(tái)和框架下的軟件應(yīng)用程序之間可以通過網(wǎng)絡(luò)進(jìn)行互操作。 簡(jiǎn)單地說,Web Service也是一種遠(yuǎn)程調(diào)用方式,只是因?yàn)樗哂凶悦枋觥⒖缙脚_(tái)、開放性等特點(diǎn),再加上它使用了Web上協(xié)議進(jìn)行通信,使得Web Service的開發(fā)可以使用現(xiàn)有的基礎(chǔ)設(shè)施,并具有和Web一樣穿越防火

6、墻的能力,使得Web Service得到了發(fā)展。nWeb服務(wù)實(shí)質(zhì)上是一種部署在Web上的對(duì)象,采用標(biāo)準(zhǔn)的XML格式和開放的Web規(guī)范技術(shù),向外提供其操作接口。它獨(dú)立于服務(wù)所在的機(jī)器硬件、操作系統(tǒng)和開發(fā)語言,使得基于Web的應(yīng)用程序達(dá)到松散耦合、面向組件和跨技術(shù)實(shí)現(xiàn)。歷史1998年IBM、Microsoft、UserLand等共同提出SOAP。1999年HP推出e-Speak,被認(rèn)為是業(yè)界的第一個(gè)Web Services系統(tǒng)。2000年9月發(fā)布UDDI版本1規(guī)范。2001 年 3 月,IBM、微軟將WSDL 1.1 草案提交到 W3C 會(huì)以。12.1 Web Service概述 12.2 相關(guān)標(biāo)

7、準(zhǔn)與技術(shù) 有哪些相關(guān)技術(shù)? XML SOAP WSDL UDDI如何封裝把功能變成方法如何描述WSDL如何發(fā)現(xiàn)UDDI如何訪問SOAP12.2 相關(guān)標(biāo)準(zhǔn)與技術(shù) XML(Extensible Markup Language,擴(kuò)展性標(biāo)識(shí)語言)用嚴(yán)格的嵌套標(biāo)記表示數(shù)據(jù)信息。除了易于建立和易于分析外,XML主要的優(yōu)點(diǎn)在于它既與平臺(tái)無關(guān),又與廠商無關(guān)。 有哪些相關(guān)技術(shù)? XML SOAP WSDL UDDI 有哪些相關(guān)技術(shù)? XML SOAP WSDL UDDI12.2 相關(guān)標(biāo)準(zhǔn)與技術(shù) SOAP(Simple Object Access Protocol,簡(jiǎn)單對(duì)象訪問協(xié)議)是一種輕量的、簡(jiǎn)單的、基于 X

8、ML 的協(xié)議,它被設(shè)計(jì)成在 Web 上交換結(jié)構(gòu)化的信息。 有哪些相關(guān)技術(shù)? XML SOAP WSDL UDDI12.2 相關(guān)標(biāo)準(zhǔn)與技術(shù) WSDL(Web Service Description Language,Web Service描述語言)是一種基于XML的服務(wù)描述文檔,用于描述Web Service及其函數(shù)、參數(shù)和返回值。因?yàn)槭腔赬ML的,所以WSDL既是機(jī)器可閱讀的,又是人可閱讀的。 有哪些相關(guān)技術(shù)? XML SOAP WSDL UDDI12.2 相關(guān)標(biāo)準(zhǔn)與技術(shù) UDDI (Universal Description, Discovery, and Integration,統(tǒng)一描述

9、、發(fā)現(xiàn)和集成)。UDDI是一種目錄服務(wù),提供了Web Service的注冊(cè)和搜索機(jī)制。 Web Web服務(wù)的特點(diǎn)服務(wù)的特點(diǎn) 完好的封裝性完好的封裝性 使用者而言,能且僅能看到該對(duì)象提供的功能列表使用者而言,能且僅能看到該對(duì)象提供的功能列表 松散耦合松散耦合 對(duì)于調(diào)用者來說,只要服務(wù)的調(diào)用接口不變,服務(wù)的實(shí)現(xiàn)任何變對(duì)于調(diào)用者來說,只要服務(wù)的調(diào)用接口不變,服務(wù)的實(shí)現(xiàn)任何變更對(duì)他們來說都是透明的更對(duì)他們來說都是透明的 使用標(biāo)準(zhǔn)協(xié)議規(guī)范使用標(biāo)準(zhǔn)協(xié)議規(guī)范 作為作為WebWeb服務(wù),其所有公共的協(xié)約完全使用開放的標(biāo)準(zhǔn)協(xié)議進(jìn)行描服務(wù),其所有公共的協(xié)約完全使用開放的標(biāo)準(zhǔn)協(xié)議進(jìn)行描述、傳輸和交換述、傳輸和交換

10、( (基于基于XMLXML,底層協(xié)議:,底層協(xié)議:HTTPHTTP、SMTPSMTP、FTPFTP等)等) 高度的集成性高度的集成性 采用簡(jiǎn)單易理解的標(biāo)準(zhǔn)采用簡(jiǎn)單易理解的標(biāo)準(zhǔn)WebWeb協(xié)議,屏蔽了平臺(tái)的差異性協(xié)議,屏蔽了平臺(tái)的差異性從業(yè)務(wù)、商務(wù)、技術(shù)視角看 業(yè)務(wù)視角:Web服務(wù)就是關(guān)于集成的技術(shù),即:集成同一機(jī)構(gòu)內(nèi)的應(yīng)用功能,或集成商務(wù)伙伴之間的應(yīng)用。商務(wù)視角:Web服務(wù)是一商務(wù)過程或是商務(wù)過程中的步驟。內(nèi)部的或外部的商務(wù)伙伴都可經(jīng)由網(wǎng)絡(luò)使用這項(xiàng)服務(wù),以達(dá)到某種業(yè)務(wù)目標(biāo)。技術(shù)視角:Web服務(wù)只是一個(gè)或多個(gè)相關(guān)操作的集合,這些操作可以由網(wǎng)絡(luò)訪問,并可以用服務(wù)描述來描述。Web Service與

11、傳統(tǒng)Web應(yīng)用的區(qū)別傳統(tǒng)Web應(yīng)用技術(shù)解決的問題是如何讓人人來使用Web應(yīng)用所提供的服務(wù)。Web Service則要解決如何讓計(jì)算機(jī)系統(tǒng)計(jì)算機(jī)系統(tǒng)來使用Web應(yīng)用所提供的服務(wù)??s短業(yè)務(wù)流程周期,提高企業(yè)反應(yīng)速度為更多的應(yīng)用和用戶實(shí)時(shí)地提供關(guān)鍵數(shù)據(jù),從而使企業(yè)更具敏捷性和靈活性簡(jiǎn)化了客戶的自助服務(wù)體系幫助構(gòu)建企業(yè)對(duì)外的窗口提高企業(yè)效率消除信息孤島Web Services的優(yōu)勢(shì)跨不同語言跨異構(gòu)應(yīng)用跨異構(gòu)平臺(tái)跨Internet的互操作技術(shù)“軟件變服務(wù)”遠(yuǎn)景的支撐技術(shù)業(yè)界接受的標(biāo)準(zhǔn)Services Available: any device, anywhere, anytimeWeb Services

12、的優(yōu)勢(shì)選擇目的地:天氣預(yù)報(bào):匯率:飛機(jī)票價(jià):雨雨Redmond$1.56$1,999.98Northwind 商務(wù)旅游網(wǎng)商務(wù)旅游網(wǎng)XML Web Service應(yīng)用案例Internet天氣預(yù)報(bào)天氣預(yù)報(bào)XML Web Service匯率匯率XML Web Service飛機(jī)票價(jià)飛機(jī)票價(jià)數(shù)據(jù)庫數(shù)據(jù)庫飛機(jī)票價(jià)飛機(jī)票價(jià)XML Web Service12.3 Web Service架構(gòu) Web Service中的主要角色 服務(wù)提供者(Service Provider) 服務(wù)提供者實(shí)現(xiàn)具體的服務(wù),并通過服務(wù)代理將服務(wù)進(jìn)行發(fā)布。 服務(wù)請(qǐng)求者(Service Requestor) 服務(wù)請(qǐng)求者向服務(wù)代理請(qǐng)求特定

13、的服務(wù),服務(wù)代理查詢已發(fā)布的服務(wù),為其尋找滿足請(qǐng)求的服務(wù),并向服務(wù)請(qǐng)求者返回滿足條件的服務(wù)描述信息。 服務(wù)代理(Service Broker) 服務(wù)代理提供服務(wù)的注冊(cè)、發(fā)布和搜索機(jī)制。 12.3 Web Service架構(gòu) 角色之間的交互Web Services 工作流程那給我用用吧那給我用用吧 (SOAP)Design-Time or DynamicRuntime你都有什么服務(wù)啊你都有什么服務(wù)啊? (WSDL)http:/ with service 描述描述http:/ DISCO 或者或者 WSDL 文檔文檔12.4 Web Service的種類 12.4.1 Big Web Servic

14、e Big Web Service使用遵循SOAP標(biāo)準(zhǔn)的XML格式的消息。又被稱為基于SOAP的Web Service,它必須包含下面的組成部分: 一個(gè)正式的合約,用于描述Web Service所提供的接口,包括消息、操作、綁定、Web Service位置等細(xì)節(jié)信息。WSDL可以完成這項(xiàng)工作,當(dāng)然,也可以不使用WSDL描述服務(wù),而直接處理SOAP消息。 一個(gè)可以表達(dá)非功能需求的架構(gòu)。通常,可以建立了一個(gè)通用的詞匯表來表述這種非功能需求,如事務(wù)、安全、可信、協(xié)作等。 一個(gè)可以處理異步過程和調(diào)用的架構(gòu)。12.4 Web Service的種類 12.4.2 RESTful Web Service R

15、ESTful Web Service是遵循REST架構(gòu)約束的Web Service。一個(gè)RESTful Web Service必須遵循下面約束: 應(yīng)用程序狀態(tài)和功能等網(wǎng)絡(luò)上所有事物都被認(rèn)為是資源; 每個(gè)資源對(duì)應(yīng)一個(gè)唯一的統(tǒng)一資源標(biāo)識(shí)符; 所有資源都共享統(tǒng)一的訪問接口,以便在客戶端和服務(wù)器之間傳輸狀態(tài)。統(tǒng)一的訪問接口使用的是標(biāo)準(zhǔn)的HTTP方法,比如GET、PUT、POST和DELETE; 對(duì)資源的操作不會(huì)改變資源標(biāo)識(shí),所有的操作都是無狀態(tài)的。12.5 利用JAX-WS建立Big Web Service 12.5.1 JAX-WS簡(jiǎn)述JAX-WS (Java API for XML Web Ser

16、vices)規(guī)范是一組XML web services的JAVA API。JAX-WS 2.0 是對(duì) JAX-RPC 1.0 規(guī)范的擴(kuò)展,是 JAX-RPC 1.1 的后續(xù)版本, JAX-RPC 2.0 標(biāo)準(zhǔn)發(fā)布不久后便被重新命名為 JAX-WS 2.0。 JAX-WS 2.0 是面向 Java 5 的開發(fā) Web services 的最新編程標(biāo)準(zhǔn),它提供了新的編程模型和對(duì)以往的 JAX-RPC 方式的 Web services 進(jìn)行了增強(qiáng)。 JAX-WS 2.0 (JSR 224)是Sun新的web services協(xié)議棧,是一個(gè)完全基于標(biāo)準(zhǔn)的實(shí)現(xiàn)。12.5 利用JAX-WS建立Web Se

17、rvice 12.5.1 JAX-WS簡(jiǎn)述 JAX-WS用于建立Big Web Service,使用SOAP協(xié)議。JAX-WS自動(dòng)處理所有SOAP相關(guān)的操作,不需要開發(fā)者編寫任何處理SOAP消息的代碼。 在服務(wù)器端,用戶只需要通過Java語言定義遠(yuǎn)程調(diào)用所需要實(shí)現(xiàn)的接口,并提供相關(guān)的實(shí)現(xiàn)。通過調(diào)用JAX-WS的服務(wù)發(fā)布接口就可以將其發(fā)布為Web Service接口。 在客戶端,用戶可以通過JAX-WS的API創(chuàng)建一個(gè)代理來實(shí)現(xiàn)對(duì)于遠(yuǎn)程服務(wù)器端的調(diào)用。12.5 利用JAX-WS建立Web Service 12.5.2 創(chuàng)建Web Service(1)在Eclipse中創(chuàng)建一個(gè)“dynamic w

18、eb project”(動(dòng)態(tài)Web工程),項(xiàng)目名設(shè)為 “BigWS_Hello”,如下圖所示。12.5 利用JAX-WS建立Web Service 12.5.2 創(chuàng)建Web Service(2)創(chuàng)建web服務(wù)類。package javaee.bigws;public class HelloWS public String sayHelloW(String name) return Hellow WebService! I am +name+!; 12.5 利用JAX-WS建立Web Service 12.5.2 創(chuàng)建Web Service(3)發(fā)布該類為webservice在HelloWS類上

19、點(diǎn)擊右鍵,在彈出的右鍵菜單中選擇Web ServicesCreate Web Service,如下圖所示12.5 利用JAX-WS建立Web Service 12.5.2 創(chuàng)建Web Service例子(3)發(fā)布該類為webservice在彈出的對(duì)話框中Web Service Type選擇“bottom up Java bean Web Service”,Service Implementation選擇上面編寫的java類HelloWS,并選中“publish the Web Service”, 點(diǎn)擊next 。12.5 利用JAX-WS建立Web Service 12.5.2 創(chuàng)建Web S

20、ervice例子(3)發(fā)布該類為webservice在彈出的界面中選擇供訪問的方法sayHelloW,點(diǎn)擊next12.5 利用JAX-WS建立Web Service 12.5.2 創(chuàng)建Web Service例子(4)查看運(yùn)行結(jié)果在網(wǎng)址http:/localhost:8080/BigWS_Hello/services查看已經(jīng)建立的Web Service,如圖所示。12.5 利用JAX-WS建立Web Service 12.5.3創(chuàng)建客戶端(1)在Eclipse中創(chuàng)建一個(gè)“web Service Client”,如下圖所示。12.5 利用JAX-WS建立Web Service 12.5.3創(chuàng)建客

21、戶端(1)在Eclipse中創(chuàng)建一個(gè)“web Service Client”,如下圖所示。12.5 利用JAX-WS建立Web Service 12.5.3創(chuàng)建客戶端(2)在彈出來的對(duì)話框中找到Service definition,填寫服務(wù)端的URL地址。最后點(diǎn)擊“finish”會(huì)自動(dòng)導(dǎo)入需要的包和生成代碼文件。如下圖:。12.5 利用JAX-WS建立Web Service 12.5.3創(chuàng)建客戶端編寫客戶端類。public class WSClient public static void main(String args) try HelloWS service = new HelloWSP

22、roxy(); System.out.println(service.sayHelloW(a teacher); catch (RemoteException e) e.printStackTrace(); 12.5 利用JAX-WS建立Web Service 12.5.3創(chuàng)建客戶端查看運(yùn)行結(jié)果12.6 構(gòu)建RESTful Web Service 12.6.1JAX-RS簡(jiǎn)述 REST的全稱為Representational State Transfer,翻譯為中文是:表現(xiàn)層狀態(tài)轉(zhuǎn)化。它不是一種框架,也不是一種規(guī)范,而是一種網(wǎng)絡(luò)應(yīng)用程序的設(shè)計(jì)而是一種網(wǎng)絡(luò)應(yīng)用程序的設(shè)計(jì)風(fēng)格和開發(fā)方式。風(fēng)格和開發(fā)

23、方式。用來降低開發(fā)的復(fù)雜性,提高系統(tǒng)的可伸縮性。12.6 構(gòu)建RESTful Web Service 12.6.1JAX-RS簡(jiǎn)述 JAX-RS使用標(biāo)注來簡(jiǎn)化RESTful Web Service的開發(fā)。 開發(fā)者可以通過標(biāo)注來定義資源開發(fā)者可以通過標(biāo)注來定義資源,以及作用于資源上操作。JAX-RS標(biāo)注是運(yùn)行時(shí)的標(biāo)注,會(huì)使用反射機(jī)制在運(yùn)行時(shí)創(chuàng)建一些輔助類和軟件部件(Artifacts)。43 所謂RESTful資源指的是網(wǎng)絡(luò)上的一個(gè)實(shí)體,或資源指的是網(wǎng)絡(luò)上的一個(gè)實(shí)體,或者說是網(wǎng)絡(luò)上的一個(gè)具體信息。者說是網(wǎng)絡(luò)上的一個(gè)具體信息。它可以是一段文本、一張圖片、一首歌曲、一種服務(wù),總之就是一個(gè)具體的實(shí)體。

24、例如:1:一則新聞。 2:煙臺(tái)下午四點(diǎn)的氣溫。3:存儲(chǔ)在國稅局?jǐn)?shù)據(jù)庫里面的商業(yè)稅率。4:SVN存儲(chǔ)的代碼版本記錄。5:谷歌搜索某關(guān)鍵詞所返回的結(jié)果。 可以用一個(gè)URI指向它,每種資源對(duì)應(yīng)一個(gè)特定的URI。要獲取這個(gè)資源,訪問它的URI就可以,因此URI就成了每一個(gè)資源的地址或獨(dú)一無二的識(shí)別符。44 URI(Uniform Resource Identifier),統(tǒng)一資源標(biāo)識(shí)符。在REST式網(wǎng)絡(luò)服務(wù)里,URI是一個(gè)資源的超鏈接。REST規(guī)范并沒有定義URI必須是超鏈接。但是因?yàn)槲覀兪褂肳eb技術(shù)來開發(fā)網(wǎng)絡(luò)服務(wù),所以在此URI都是超鏈接。 在基于REST的系統(tǒng)中,對(duì)資源的管理,定位或者其他操作,

25、URI是不變的。而在非REST系統(tǒng)中,舉例來說,比如對(duì)同一文件的重命名是一個(gè)URI,移動(dòng)這個(gè)文件又是另外一個(gè)URI。45 資源是一種信息實(shí)體,它可以有多種外在表現(xiàn)形式。我們把資源具體呈現(xiàn)出來的形式,叫做它的資源具體呈現(xiàn)出來的形式,叫做它的“表現(xiàn)表現(xiàn)層層”。 比如,文本可以用txt格式表現(xiàn),也可以用HTML格式、XML格式、JSON格式表現(xiàn),甚至可以采用二進(jìn)制格式;圖片可以用JPG格式表現(xiàn),也可以用PNG格式表現(xiàn)。URI只代表資源的實(shí)體,不代表它的形式。嚴(yán)格地說,有些網(wǎng)址最后的.html后綴名是不必要的,因?yàn)檫@個(gè)后綴名表示格式,屬于表現(xiàn)層范疇,而URI應(yīng)該只代表資源的位置。它的具體表現(xiàn)形式,應(yīng)該

26、在HTTP請(qǐng)求的頭信息中用Accept和Content-Type字段指定,這兩個(gè)字段才是對(duì)表現(xiàn)層的描述。46 訪問一個(gè)網(wǎng)站,就代表了客戶端和服務(wù)器的一個(gè)互動(dòng)過程。在這個(gè)過程中,勢(shì)必涉及到數(shù)據(jù)和狀態(tài)的變化?;ヂ?lián)網(wǎng)通信協(xié)議HTTP協(xié)議,是一個(gè)無狀態(tài)協(xié)議。這意味著,所有的狀態(tài)都保存在服務(wù)器端。因此,如果如果客戶端想要操作服務(wù)器,必須通過某種手段,讓服務(wù)器客戶端想要操作服務(wù)器,必須通過某種手段,讓服務(wù)器端發(fā)生端發(fā)生狀態(tài)轉(zhuǎn)化狀態(tài)轉(zhuǎn)化(State Transfer)。而這種轉(zhuǎn)化是)。而這種轉(zhuǎn)化是建立在表現(xiàn)層之上的,所以就是建立在表現(xiàn)層之上的,所以就是表現(xiàn)層狀態(tài)轉(zhuǎn)化表現(xiàn)層狀態(tài)轉(zhuǎn)化??蛻舳擞玫降氖侄危荒苁荋

27、TTP協(xié)議。具體來說,就是HTTP協(xié)議里面,四個(gè)表示操作方式的動(dòng)詞:GET、POST、PUT、DELETE。它們分別對(duì)應(yīng)四種基本操作:GET用來獲取資源,用來獲取資源,POST用來新建資源(也可以用于用來新建資源(也可以用于更新資源),更新資源),PUT用來更新資源,用來更新資源,DELETE用來刪除資用來刪除資源。源。47 Statelessness 是restful風(fēng)格最重要的原則。它的含義是指,客戶端和服務(wù)器交互的過程中(各次請(qǐng)求之間)是無狀態(tài)的。無狀態(tài)是針對(duì)于“狀態(tài)”來說的。一個(gè)WEB應(yīng)用協(xié)議中的“狀態(tài)”指的是,為兩個(gè)相互關(guān)聯(lián)的用戶交互操作保留某種公共信息,例如用戶登錄信息,工作流等,

28、通常由服務(wù)器負(fù)責(zé)保存這些信息。 首先,無狀態(tài)請(qǐng)求易于實(shí)現(xiàn)負(fù)載均衡。在分布式web系統(tǒng)下,有多個(gè)可用服務(wù)器,每個(gè)服務(wù)器都可以處理客戶端請(qǐng)求。 傳統(tǒng)的有狀態(tài)請(qǐng)求,因?yàn)闋顟B(tài)信息只保存在第一次發(fā)起請(qǐng)求的那臺(tái)服務(wù)器上,之后的請(qǐng)求都只能由這臺(tái)服務(wù)器來處理,服務(wù)器無法自由調(diào)度請(qǐng)求。無狀態(tài)請(qǐng)求則完全沒有這個(gè)限制。其次,無狀態(tài)請(qǐng)求有較強(qiáng)的容錯(cuò)性和可伸縮性。如果一臺(tái)服務(wù)器宕機(jī),無狀態(tài)請(qǐng)求可以透明地交由另一臺(tái)可用服務(wù)器來處理,而有狀態(tài)的請(qǐng)求則會(huì)因?yàn)榇鎯?chǔ)請(qǐng)求狀態(tài)信息的服務(wù)器宕機(jī)而承擔(dān)狀態(tài)丟失的風(fēng)險(xiǎn)。 481 1:網(wǎng)絡(luò)上的所有事物都被抽象為資源。:網(wǎng)絡(luò)上的所有事物都被抽象為資源。2 2:網(wǎng)絡(luò)上的資源都有一個(gè)唯一標(biāo)識(shí)符,

29、即:網(wǎng)絡(luò)上的資源都有一個(gè)唯一標(biāo)識(shí)符,即URIURI。3 3:對(duì)資源的操作通過統(tǒng)一的通用接口規(guī)范來訪:對(duì)資源的操作通過統(tǒng)一的通用接口規(guī)范來訪問。問。4 4:對(duì)資源的訪問不會(huì)改變它的唯一標(biāo)識(shí)符,即:對(duì)資源的訪問不會(huì)改變它的唯一標(biāo)識(shí)符,即URIURI不變不變5 5:所有的操作都是無狀態(tài)的。:所有的操作都是無狀態(tài)的。REST的設(shè)計(jì)原則REST的設(shè)計(jì)原則49GET50POST51PUT52DELETE12.6 構(gòu)建RESTful Web Service 12.6.1JAX-RS簡(jiǎn)述JAX-RS的標(biāo)注有: Path,標(biāo)注資源類或方法的相對(duì)路徑;GET,PUT,POST,DELETE,標(biāo)注方法處理的HTTP

30、請(qǐng)求的類型;Produces,標(biāo)注返回的MIME媒體類型;Consumes,標(biāo)注可接受請(qǐng)求的MIME媒體類型;12.6 構(gòu)建RESTful Web Service 12.6.1JAX-RS簡(jiǎn)述 PathParam,QueryParam,HeaderParam, CookieParam,MatrixParam,F(xiàn)ormParam 分別標(biāo)注方法的參數(shù)來自于HTTP請(qǐng)求的不同位置,例如PathParam來自于URL的路徑,QueryParam來自于URL的查詢參數(shù),HeaderParam來自于HTTP請(qǐng)求的頭信息,CookieParam來自于HTTP請(qǐng)求的Cookie。12.6 構(gòu)建RESTful Web Service 12.6.2 創(chuàng)建RESTful Web Service (1)在Eclipse中創(chuàng)建一個(gè)“dynamic web project”(動(dòng)態(tài)Web工程),項(xiàng)目名設(shè)為 “RESTWS_Hello”,如下圖所示。12.6 構(gòu)建RESTful Web Service 12.6.2 創(chuàng)建RESTful Web Service(2)創(chuàng)建web服務(wù)類。package javaee.restws.hello;Path(/helloworld) /Path表示開啟訪問這個(gè)資源的路徑。public class HelloRESTWS GET /GET表示響應(yīng)HTTP 的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論