国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      REST服務(wù)源代碼生成的制作方法

      文檔序號(hào):11160851閱讀:368來(lái)源:國(guó)知局
      REST服務(wù)源代碼生成的制造方法與工藝

      本申請(qǐng)涉及以下申請(qǐng),于2012年5月17日提交的、名稱(chēng)為“METHOD FOR REWRITING DYNAMICALLY GENERATED UNIFORM RESOURCE LOCATORS IN PROXIED HYPER TEXT MARKUP LANGUAGE CONTENT(用于重寫(xiě)代理的超文本標(biāo)記語(yǔ)言?xún)?nèi)容中的動(dòng)態(tài)生成的統(tǒng)一資源定位符的方法)”、序號(hào)為13/474,709(代理人案卷號(hào)ORACP0062)的美國(guó)專(zhuān)利申請(qǐng),該申請(qǐng)?jiān)诖送ㄟ^(guò)引用并入,如同在本說(shuō)明書(shū)中完全闡述一樣。



      背景技術(shù):

      本申請(qǐng)涉及軟件,并且更具體地涉及用于便于開(kāi)發(fā)和實(shí)現(xiàn)諸如web服務(wù)之類(lèi)的可遠(yuǎn)程訪(fǎng)問(wèn)軟件的系統(tǒng)和方法。

      可遠(yuǎn)程訪(fǎng)問(wèn)軟件在各種要求高的應(yīng)用中被采用,這些要求高的應(yīng)用包括對(duì)于諸如移動(dòng)設(shè)備之類(lèi)的分布式客戶(hù)機(jī)來(lái)說(shuō)可訪(fǎng)問(wèn)的企業(yè)基于云的軟件。在許多企業(yè)計(jì)算環(huán)境中,不同軟件系統(tǒng)必須諸如經(jīng)由web服務(wù)或經(jīng)由用于經(jīng)由因特網(wǎng)(Internet)在軟件系統(tǒng)之間傳送數(shù)據(jù)的其他機(jī)制來(lái)交換數(shù)據(jù)。請(qǐng)求數(shù)據(jù)的軟件系統(tǒng)被稱(chēng)為服務(wù)請(qǐng)求者,而處理請(qǐng)求并且提供數(shù)據(jù)的軟件系統(tǒng)被稱(chēng)為服務(wù)提供者。

      用于實(shí)現(xiàn)這樣的可遠(yuǎn)程訪(fǎng)問(wèn)軟件的用于便于開(kāi)發(fā)web服務(wù)、應(yīng)用編程接口(API)等的軟件開(kāi)發(fā)方法和工具通常需要實(shí)現(xiàn)計(jì)算機(jī)代碼的快速開(kāi)發(fā)和安裝的高效機(jī)制。

      常規(guī)地,諸如代表性狀態(tài)傳輸(REST)服務(wù)之類(lèi)的web服務(wù)的開(kāi)發(fā)需要對(duì)服務(wù)接口細(xì)節(jié)的分析,該服務(wù)接口細(xì)節(jié)即客戶(hù)機(jī)設(shè)備和遠(yuǎn)程內(nèi)容服務(wù)器之間的通信接口的細(xì)節(jié)。這樣的分析通常被手動(dòng)執(zhí)行,即經(jīng)由軟件開(kāi)發(fā)工具被手工編碼。然而,可以包括打開(kāi)接口對(duì)象和文件;按需在視覺(jué)上檢查和編輯服務(wù)組件;以及相應(yīng)地編輯服務(wù)代碼的手動(dòng)方法可能是過(guò)于費(fèi)時(shí)和易于出錯(cuò)的。

      一般而言,使用現(xiàn)有工具經(jīng)由API接口對(duì)REST服務(wù)的開(kāi)發(fā)可能是過(guò)于勞動(dòng)密集的、成本高的以及易于出錯(cuò)的。



      技術(shù)實(shí)現(xiàn)要素:

      示例方法便于諸如代表性狀態(tài)傳輸(REST)web服務(wù)之類(lèi)的web服務(wù)的開(kāi)發(fā)。示例方法包括確定諸如用于REST服務(wù)的統(tǒng)一服務(wù)接口之類(lèi)的服務(wù)接口的一個(gè)或多個(gè)特性;接收具有與前述確定相關(guān)聯(lián)的信息的文件;以及基于文件自動(dòng)生成計(jì)算機(jī)代碼以實(shí)現(xiàn)REST服務(wù)。

      在更具體的實(shí)施例中,服務(wù)接口的特性包括XML文件中維護(hù)的信息。XML文件可以表示應(yīng)用到服務(wù)接口的REST分析工具的輸出。web服務(wù)可以利用或包括經(jīng)由自動(dòng)生成的步驟已映射到REST服務(wù)的一個(gè)或多個(gè)資源。

      代碼生成器可以被用于自動(dòng)生成包括REST服務(wù)的計(jì)算機(jī)代碼。代碼生成器適合于創(chuàng)建包含包括所生成的計(jì)算機(jī)代碼的一個(gè)或多個(gè)編程語(yǔ)言類(lèi)的轉(zhuǎn)儲(chǔ)(dump)文件。名稱(chēng)注釋修飾符便于處理由代碼生成器接收的包中指定的類(lèi)。包中的每個(gè)類(lèi)的每個(gè)方法被處理以響應(yīng)于此產(chǎn)生一個(gè)或多個(gè)更新的方法,該一個(gè)或多個(gè)更新的方法已根據(jù)服務(wù)接口細(xì)節(jié)(即信息)來(lái)更新。

      在具體實(shí)施例中,該一個(gè)或多個(gè)編程語(yǔ)言類(lèi)適合于經(jīng)由諸如Jersey REST容器之類(lèi)的REST容器被部署在Java(R)平臺(tái)上。輸出轉(zhuǎn)儲(chǔ)文件包括用于所有生成的Java REST資源文件的計(jì)算機(jī)代碼。代碼生成器采用經(jīng)由Java歸檔(archive)維護(hù)的計(jì)算機(jī)代碼。

      示例方法還可以包括接收觸發(fā)計(jì)算機(jī)代碼(即代碼生成器)的運(yùn)行的命令。命令可以是GET超文本傳送協(xié)議(HTTP)方法、POST HTTP方法或其他方法。代碼生成器適合于自動(dòng)導(dǎo)入所有服務(wù)依賴(lài)關(guān)系以用于合并到轉(zhuǎn)儲(chǔ)文件中。

      因此,本文討論的某些實(shí)施例向開(kāi)發(fā)者提供系統(tǒng)引導(dǎo)以便于編寫(xiě)REST服務(wù)并且還提供用于快速生成REST服務(wù)或?qū)⑵渌?lèi)型的web服務(wù)轉(zhuǎn)換為REST服務(wù)的代碼生成工具。盡管某些具體實(shí)施例特別適合于生成Jersey REST服務(wù),但是類(lèi)似方法可以被擴(kuò)展到其他平臺(tái),諸如采用Apache CXF或RestEasy的平臺(tái)。

      通過(guò)實(shí)現(xiàn)用于REST服務(wù)的自動(dòng)代碼生成,包括生成用于將現(xiàn)有web服務(wù)轉(zhuǎn)換為REST服務(wù)的開(kāi)銷(xiāo)(overhead)代碼,開(kāi)發(fā)成本和人為錯(cuò)誤可以被降低。

      通過(guò)參考說(shuō)明書(shū)的剩余部分和附圖可以實(shí)現(xiàn)對(duì)本文公開(kāi)的特定實(shí)施例的本質(zhì)和優(yōu)點(diǎn)的進(jìn)一步理解。

      附圖說(shuō)明

      圖1是示出了實(shí)現(xiàn)代表性狀態(tài)傳輸(REST)服務(wù)的自動(dòng)生成的第一示例系統(tǒng)的示圖。

      圖2是表征(characterize)圖1的代碼生成器的示例類(lèi)的框圖。

      圖3是經(jīng)由圖1的代碼生成器實(shí)現(xiàn)并且適合于處理經(jīng)由可擴(kuò)展標(biāo)記語(yǔ)言(XML)提供并且表征服務(wù)接口的包的示例過(guò)程的流程圖。

      圖4是適合于用于與圖1-3的實(shí)施例一起使用的示例方法的流程圖。

      具體實(shí)施方式

      出于本討論的目的,企業(yè)可以是人的任何組織,諸如商業(yè)機(jī)構(gòu)(business)、大學(xué)、政府、軍隊(duì)等等。本文可互換地采用術(shù)語(yǔ)“組織”和“企業(yè)”。組織的人員(即企業(yè)人員)可以包括與組織相關(guān)聯(lián)的任何人,諸如雇員、承包商、董事會(huì)成員、客戶(hù)聯(lián)系人等等。

      企業(yè)計(jì)算環(huán)境可以是被用于商業(yè)機(jī)構(gòu)或組織的任何計(jì)算環(huán)境。計(jì)算環(huán)境可以是被用于執(zhí)行包括計(jì)算機(jī)處理的一個(gè)或多個(gè)任務(wù)的計(jì)算資源的任何集合。示例企業(yè)計(jì)算環(huán)境包括跨網(wǎng)絡(luò)分布的各種計(jì)算資源并且還可以包括內(nèi)聯(lián)網(wǎng)web服務(wù)器上的私有和共享內(nèi)容、數(shù)據(jù)庫(kù)、本地硬盤(pán)或文件服務(wù)器上的文件、郵件系統(tǒng)、文檔管理系統(tǒng)、門(mén)戶(hù)(portal)等等。

      出于本討論的目的,web資源可以是可以被命名并且經(jīng)由計(jì)算機(jī)網(wǎng)絡(luò)尋址的任何事物,包括計(jì)算語(yǔ)言類(lèi)(例如,Java類(lèi))、對(duì)象、web服務(wù)等等。一般而言,諸如URL之類(lèi)的經(jīng)由統(tǒng)一資源識(shí)別符(URI)或web地址引用的任何事物可以被認(rèn)為是web資源。URI可以是指定網(wǎng)絡(luò)地址的任何字符串。

      企業(yè)軟件可以是適合于便于實(shí)現(xiàn)諸如管理企業(yè)資源、管理客戶(hù)關(guān)系等之類(lèi)的任何企業(yè)相關(guān)過(guò)程或操作的計(jì)算機(jī)代碼的任何集合。本文可互換地采用術(shù)語(yǔ)“企業(yè)軟件”和“企業(yè)應(yīng)用”。然而,企業(yè)應(yīng)用可以包括諸如用戶(hù)界面(UI)軟件模塊或組件之類(lèi)的一個(gè)或多個(gè)企業(yè)軟件模塊或組件。

      企業(yè)數(shù)據(jù)可以是關(guān)于組織或商業(yè)機(jī)構(gòu)的任何信息,包括關(guān)于客戶(hù)、約會(huì)(appointment)、會(huì)議、機(jī)會(huì)、客戶(hù)交互、項(xiàng)目、任務(wù)、資源、訂單(order)、企業(yè)人員等等的信息。企業(yè)數(shù)據(jù)的示例包括工作相關(guān)筆記、約會(huì)數(shù)據(jù)、客戶(hù)聯(lián)系信息、工作訂單的描述、資產(chǎn)描述、照片、聯(lián)系信息、日歷信息、企業(yè)層級(jí)信息(例如,公司組織圖表信息)等等。

      為了清楚起見(jiàn),諸如硬盤(pán)驅(qū)動(dòng)器、處理器、操作系統(tǒng)、電源、因特網(wǎng)服務(wù)提供商(ISP)、類(lèi)加載器、字節(jié)碼編譯器等之類(lèi)的某些公知組件已從附圖中省略。然而,可以獲取本教導(dǎo)的本領(lǐng)域技術(shù)人員將知道實(shí)現(xiàn)哪些組件以及怎樣實(shí)現(xiàn)它們以滿(mǎn)足給定實(shí)施方式的需要。

      圖1是示出了實(shí)現(xiàn)代表性狀態(tài)傳輸(REST)服務(wù)的自動(dòng)生成的第一示例系統(tǒng)10的示圖。在該示例實(shí)施例中,系統(tǒng)10適合于便于參照服務(wù)接口22經(jīng)由代碼生成器實(shí)用程序(utility)應(yīng)用編程接口(API)16(還被簡(jiǎn)稱(chēng)為代碼生成器)將服務(wù)項(xiàng)目28的web服務(wù)轉(zhuǎn)換為REST服務(wù)30。

      注意到系統(tǒng)10的各個(gè)模塊可以以與所示出的不同的方式被分組、安排、耦接和/或分布,而不脫離本教導(dǎo)的范圍。例如,在替代分組中,代碼生成器16可以被認(rèn)為是開(kāi)發(fā)系統(tǒng)20的一部分,而Jersey REST容器18和伴隨的服務(wù)30可以被認(rèn)為是Java運(yùn)行時(shí)系統(tǒng)或平臺(tái)24的一部分。類(lèi)似地,在某些實(shí)施方式中,模塊之間的互連可以不同于所示出的互連。

      第一示例系統(tǒng)10包括經(jīng)由諸如REST服務(wù)30之類(lèi)的一個(gè)或多個(gè)服務(wù)與一個(gè)或多個(gè)企業(yè)數(shù)據(jù)庫(kù)32進(jìn)行通信的REST客戶(hù)機(jī)14。REST服務(wù)30包括部署就緒(deployment-ready)代碼,該部署就緒代碼可以經(jīng)由Java運(yùn)行時(shí)系統(tǒng)24運(yùn)行并且適合于便于根據(jù)服務(wù)接口22訪(fǎng)問(wèn)經(jīng)由企業(yè)數(shù)據(jù)庫(kù)32維護(hù)的數(shù)據(jù)。

      出于本討論的目的,REST客戶(hù)機(jī)可以是在支持REST服務(wù)的系統(tǒng)中操作或與支持REST服務(wù)的系統(tǒng)通信的任何客戶(hù)機(jī)。類(lèi)似地,REST服務(wù)器可以是適合于用于與REST架構(gòu)風(fēng)格一起使用或者與REST服務(wù)一起使用的任何服務(wù)器。客戶(hù)機(jī)可以是適合于接收來(lái)自被稱(chēng)為服務(wù)器的另一計(jì)算機(jī)或系統(tǒng)的內(nèi)容的任何計(jì)算機(jī)、系統(tǒng)或網(wǎng)絡(luò)資源。服務(wù)器系統(tǒng)可以是一個(gè)或多個(gè)服務(wù)器的任何集合。

      示例開(kāi)發(fā)者系統(tǒng)和圖形用戶(hù)界面(GUI)20(還被簡(jiǎn)稱(chēng)為開(kāi)發(fā)者系統(tǒng))與代碼生成器實(shí)用程序API 16和服務(wù)接口22通信。開(kāi)發(fā)者系統(tǒng)20包括REST分析工具26,REST分析工具26包括適合于便于服務(wù)接口22的分析以及生成包含分析的結(jié)果的可擴(kuò)展標(biāo)記語(yǔ)言(XML)文件的計(jì)算機(jī)代碼。

      REST分析工具26還與服務(wù)項(xiàng)目28和代碼生成器16通信。代碼生成器16接收具有服務(wù)接口22的分析結(jié)果的XML文件,并且還可以接收關(guān)于服務(wù)項(xiàng)目28的服務(wù)項(xiàng)目信息,包括表征要被轉(zhuǎn)換為REST服務(wù)30的web服務(wù)的類(lèi)文件。代碼生成器16接收來(lái)自開(kāi)發(fā)者系統(tǒng)20的XML文件,然后運(yùn)行過(guò)程以基于從開(kāi)發(fā)者系統(tǒng)20接收的輸入來(lái)自動(dòng)生成REST服務(wù)30。

      服務(wù)項(xiàng)目28可以包括用于尚未被配置為作為REST服務(wù)操作的服務(wù)的計(jì)算機(jī)代碼。該計(jì)算機(jī)代碼可以表示被遞送到代碼生成器API16或者對(duì)于代碼生成器API 16來(lái)說(shuō)可訪(fǎng)問(wèn)以用于在根據(jù)對(duì)服務(wù)接口22的分析來(lái)生成REST服務(wù)30中使用的包的一部分。

      代碼生成器16適合于生成REST服務(wù)30,以使得服務(wù)可以訪(fǎng)問(wèn)(即,可以調(diào)用)經(jīng)由服務(wù)接口22可用的所有必需的REST映射的服務(wù)。代碼生成器16可以被實(shí)現(xiàn)為Java歸檔。

      REST服務(wù)30經(jīng)由Jersey REST容器18被存儲(chǔ),并且它表示用于包括REST服務(wù)30的編程語(yǔ)言類(lèi)的轉(zhuǎn)儲(chǔ)位置。出于本討論的目的,編程語(yǔ)言類(lèi)可以是作為軟件代碼的一部分被采用并且可以封裝數(shù)據(jù)和/或功能(例如,屬性和/或方法)的任何計(jì)算對(duì)象。

      在本示例實(shí)施例中,REST服務(wù)30表示根據(jù)Jersey RESTful Web服務(wù)框架實(shí)現(xiàn)的RESTful web服務(wù)。Jersey RESTful Web服務(wù)框架是便于根據(jù)與Java規(guī)范請(qǐng)求(Java Specification Requests,JSR)311和339一致的JAX-RS(用于RESTful Web服務(wù)的Java API)API在Java中實(shí)現(xiàn)web服務(wù)的開(kāi)源框架?;ハ嗤ㄐ诺膚eb服務(wù)的Jersey實(shí)現(xiàn)提供便于在諸如容器18之類(lèi)的Java小服務(wù)程序(servlet)容器中實(shí)現(xiàn)RESTful web服務(wù)的庫(kù)。

      可以包括Java虛擬機(jī)(JVM)和包括Java API、類(lèi)加載器、剖析器(profiler)等的相關(guān)聯(lián)平臺(tái)的Java運(yùn)行時(shí)系統(tǒng)24適合于選擇性地執(zhí)行、解釋或者(例如,經(jīng)由即時(shí)(JIT)編譯器)既執(zhí)行又解釋REST服務(wù)30的計(jì)算機(jī)代碼。REST客戶(hù)機(jī)14可以包括適合于調(diào)用(call)、援用(invoke)或以其他方式使用REST服務(wù)30以調(diào)用采用REST服務(wù)30的應(yīng)用的瀏覽器、API和其他客戶(hù)機(jī)側(cè)軟件。

      例如,REST客戶(hù)機(jī)14可以經(jīng)由REST服務(wù)30和伴隨的Java運(yùn)行時(shí)系統(tǒng)24請(qǐng)求經(jīng)由企業(yè)數(shù)據(jù)庫(kù)32提供的數(shù)據(jù)和/或功能。REST客戶(hù)機(jī)14(即,請(qǐng)求者)可以經(jīng)由服務(wù)接口22向服務(wù)器系統(tǒng)12(即,提供者)發(fā)送請(qǐng)求消息。請(qǐng)求消息可以被尋址到經(jīng)由Java運(yùn)行時(shí)系統(tǒng)24運(yùn)行的REST服務(wù)30。運(yùn)行的REST服務(wù)30然后根據(jù)請(qǐng)求從企業(yè)數(shù)據(jù)庫(kù)32檢索數(shù)據(jù)以及促進(jìn)采用服務(wù)接口22來(lái)向REST客戶(hù)機(jī)14遞送數(shù)據(jù)檢索的結(jié)果。

      總之,代碼生成器實(shí)用程序API 16便于REST服務(wù)的自動(dòng)創(chuàng)建。每個(gè)服務(wù)接口22被分析其特性,然后得到的分析數(shù)據(jù)被供應(yīng)給代碼生成器16以便于REST服務(wù)30的自動(dòng)生成。如本文所討論的基于服務(wù)接口細(xì)節(jié)的REST服務(wù)計(jì)算機(jī)代碼的自動(dòng)生成可以大大減少開(kāi)發(fā)和部署REST服務(wù)30所需要的開(kāi)發(fā)時(shí)間和錯(cuò)誤。

      采用開(kāi)發(fā)者系統(tǒng)20的開(kāi)發(fā)者可以手動(dòng)創(chuàng)建表征服務(wù)接口22的XML文件和/或采用REST分析工具26。下文更全面地討論示例XML文件。

      在開(kāi)發(fā)web服務(wù)時(shí),服務(wù)項(xiàng)目28被保持在XML文件中指定的類(lèi)路徑中,以用于由代碼生成器API 16和伴隨的Java運(yùn)行時(shí)系統(tǒng)24使用。開(kāi)發(fā)者可以采用開(kāi)發(fā)者系統(tǒng)20以諸如經(jīng)由GET和/或POST超文本傳送協(xié)議(HTTP)方法來(lái)調(diào)用或激活代碼生成器16。

      在方法調(diào)用中指定的(對(duì)應(yīng)于REST服務(wù)30的位置的)轉(zhuǎn)儲(chǔ)位置將使所有Java REST資源文件被生成并且準(zhǔn)備好被使用。所有服務(wù)依賴(lài)關(guān)系(例如,REST服務(wù)30對(duì)其他服務(wù)的依賴(lài)關(guān)系)被自動(dòng)導(dǎo)入到REST服務(wù)30中或者以其他方式被考慮以使得REST服務(wù)30能夠適當(dāng)?shù)毓ぷ鳌?/p>

      注意到一般而言,諸如REST服務(wù)30之類(lèi)的web服務(wù)可以由包括服務(wù)器側(cè)和客戶(hù)機(jī)側(cè)應(yīng)用的不同web應(yīng)用調(diào)用或使用。例如,REST客戶(hù)機(jī)14的API可以由REST客戶(hù)機(jī)14采用,以請(qǐng)求來(lái)自服務(wù)器系統(tǒng)12的服務(wù)。服務(wù)器系統(tǒng)12可以包括可以與REST客戶(hù)機(jī)14對(duì)接的其他web應(yīng)用,而不脫離本教導(dǎo)的范圍。

      出于本討論的目的,web應(yīng)用可以是適合于由一個(gè)或多個(gè)客戶(hù)機(jī)設(shè)備通過(guò)諸如因特網(wǎng)或內(nèi)聯(lián)網(wǎng)之類(lèi)的網(wǎng)絡(luò)訪(fǎng)問(wèn)的任何計(jì)算機(jī)代碼,例如軟件應(yīng)用。web應(yīng)用可以調(diào)用和/或?qū)崿F(xiàn)一個(gè)或多個(gè)web服務(wù)。

      web服務(wù)可以是響應(yīng)于經(jīng)由諸如萬(wàn)維網(wǎng)(World Wide Web)之類(lèi)的網(wǎng)絡(luò)從客戶(hù)機(jī)發(fā)送到服務(wù)器的信號(hào)(例如,請(qǐng)求消息)經(jīng)由服務(wù)器上運(yùn)行的軟件而激活或?qū)崿F(xiàn)的任何軟件功能或操作。實(shí)現(xiàn)web服務(wù)操作的軟件還可以被稱(chēng)為web服務(wù)、軟件服務(wù)或者在此被簡(jiǎn)稱(chēng)為服務(wù)。

      一般而言,web應(yīng)用可以經(jīng)由諸如Java、JavaScript、Flash、Silverlight等之類(lèi)的各種方法和伴隨機(jī)制來(lái)實(shí)現(xiàn)。此外,某些web應(yīng)用可以由執(zhí)行若干過(guò)程的過(guò)程模板來(lái)定義,其中每個(gè)過(guò)程經(jīng)由分開(kāi)的web服務(wù)實(shí)現(xiàn)。

      一般而言,軟件服務(wù)提供可以由(可以跨網(wǎng)絡(luò)分布的)不同應(yīng)用或過(guò)程重復(fù)使用的功能(例如,能力),這些不同應(yīng)用或過(guò)程經(jīng)由例如經(jīng)由中間件指定的并且與服務(wù)描述一致的預(yù)定接口來(lái)訪(fǎng)問(wèn)功能。

      遵守REST架構(gòu)風(fēng)格的web服務(wù)被稱(chēng)為RESTful web服務(wù)。REST架構(gòu)風(fēng)格指定用于web服務(wù)的約束,包括與可以適合于便于可擴(kuò)展性、可修改性、可重用性等的統(tǒng)一接口的兼容性。

      REST架構(gòu)風(fēng)格要求客戶(hù)機(jī)服務(wù)器架構(gòu),其中數(shù)據(jù)和功能被認(rèn)為是資源。使用可以對(duì)應(yīng)于網(wǎng)頁(yè)中的鏈接的統(tǒng)一資源識(shí)別符(URI)來(lái)訪(fǎng)問(wèn)這些資源。使用定義良好的(well-defined)操作(例如,GET、POST等)和諸如HTTP之類(lèi)的通信協(xié)議來(lái)作用于資源。因此,客戶(hù)機(jī)和服務(wù)器使用標(biāo)準(zhǔn)化的接口和協(xié)議來(lái)交換資源的表示。

      服務(wù)接口22表示用于包括REST客戶(hù)機(jī)14和服務(wù)器系統(tǒng)12的網(wǎng)絡(luò)資源之間的REST通信的統(tǒng)一接口。出于本討論的目的,服務(wù)接口可以是便于包括web服務(wù)的網(wǎng)絡(luò)資源之間的相互通信的任何機(jī)制。服務(wù)接口通常適合于實(shí)現(xiàn)和執(zhí)行暴露的服務(wù)與軟件應(yīng)用和/或與服務(wù)通信的其他服務(wù)之間的合約(contract)。

      在例如系統(tǒng)10的REST系統(tǒng)中,來(lái)自客戶(hù)機(jī)(即,服務(wù)的請(qǐng)求者)的請(qǐng)求包含用于服務(wù)請(qǐng)求的信息。表征請(qǐng)求者和提供者(例如,客戶(hù)機(jī)和服務(wù)器)之間的通信交互的會(huì)話(huà)狀態(tài)可以被存儲(chǔ)在客戶(hù)機(jī)處。然而,會(huì)話(huà)狀態(tài)可以由例如服務(wù)器系統(tǒng)12的服務(wù)器傳送到另一服務(wù)。

      客戶(hù)機(jī)(例如,REST客戶(hù)機(jī)14)向服務(wù)器系統(tǒng)12發(fā)出請(qǐng)求以轉(zhuǎn)變到新的狀態(tài)。每個(gè)應(yīng)用狀態(tài)的表示可以包括用于隨后的客戶(hù)機(jī)狀態(tài)轉(zhuǎn)變的鏈路(URI)。服務(wù)接口22便于應(yīng)用、服務(wù)等的解耦,從而使得潛在地不同的應(yīng)用和系統(tǒng)能夠相互通信和相互操作。

      圖2是表征圖1的代碼生成器的示例類(lèi)結(jié)構(gòu)40的框圖。經(jīng)由圖1的代碼生成器16為REST web服務(wù)構(gòu)建的類(lèi)將一般與類(lèi)40一致。然而,本領(lǐng)域技術(shù)人員將意識(shí)到特定類(lèi)的細(xì)節(jié)可以不同并且可以具有不同數(shù)量和類(lèi)型的屬性,包括方法屬性。

      類(lèi)40包括由計(jì)算環(huán)境(其可以包括各種庫(kù)、協(xié)議規(guī)范等等)支持的類(lèi)屬性數(shù)據(jù)42和方法部分44的方法屬性或組件54。

      類(lèi)數(shù)據(jù)42(即,屬性)包括路徑的識(shí)別(@path)46、修飾符48、服務(wù)名稱(chēng)50和對(duì)包52的引用。方法部分44的方法組件包括表征路徑方法56(@path)、接收(accepts)方法58(@accepts)、GET方法60(@GET)、查詢(xún)參數(shù)方法62(@QueryParam)、輸入變量方法64、輸出變量方法66、初始化方法68和調(diào)用方法70的屬性。

      參照?qǐng)D1和2,代碼生成器類(lèi)40的方法屬性64和一般類(lèi)屬性42適合于由圖1的代碼生成器16采用以處理從開(kāi)發(fā)者系統(tǒng)20接收的包(包括要被轉(zhuǎn)換為REST服務(wù)30并且是服務(wù)項(xiàng)目28的一部分的web服務(wù)的類(lèi))以便于生成REST服務(wù)30。

      圖3是示出了經(jīng)由圖1的代碼生成器實(shí)現(xiàn)并且適合于處理經(jīng)由表征圖1的服務(wù)接口22的XML文件提供的包的示例過(guò)程80的流程圖。

      示例方法80包括初始分析步驟82,初始分析步驟82包括分析包(包括由代碼生成器16經(jīng)由圖1的開(kāi)發(fā)者系統(tǒng)20接收的XML文件)以獲得用于實(shí)現(xiàn)對(duì)包中指示的資源名稱(chēng)的必需改變的信息。

      隨后,包中的類(lèi)被傳遞到名稱(chēng)處理步驟84。名稱(chēng)處理步驟84包括參照如所示包括在圖2的代碼生成器類(lèi)40中的類(lèi)屬性42使用名稱(chēng)注釋修飾符處理每個(gè)類(lèi)。

      接下來(lái),方法處理步驟86對(duì)于包中的每個(gè)類(lèi)選擇性地處理如所示包括在圖2的代碼生成器類(lèi)40中的方法54。類(lèi)屬性42和伴隨的方法屬性54的處理可以包括如下文更全面地討論的根據(jù)映射邏輯的映射。

      檢查步驟88隨后檢查以確認(rèn)包中的所有類(lèi)是否已經(jīng)歷名稱(chēng)處理84和方法處理86。如果包中的所有類(lèi)已經(jīng)歷名稱(chēng)處理84和方法處理86,則執(zhí)行轉(zhuǎn)儲(chǔ)文件創(chuàng)建步驟90。否則,控制返回到名稱(chēng)處理步驟84和方法處理步驟86直至包中的所有類(lèi)被完全處理。

      轉(zhuǎn)儲(chǔ)文件創(chuàng)建步驟90包括自動(dòng)創(chuàng)建具有實(shí)現(xiàn)圖1的REST服務(wù)30所需要的所有處理后的服務(wù)類(lèi)的轉(zhuǎn)儲(chǔ)文件。

      參照?qǐng)D1-3,對(duì)服務(wù)接口22的分析產(chǎn)生信息,包括諸如名稱(chēng)、修飾符類(lèi)型、注釋等之類(lèi)的類(lèi)屬性,并且還包括諸如方法名稱(chēng)、輸入?yún)⒘?argument)和返回類(lèi)型之類(lèi)的方法數(shù)據(jù)。

      經(jīng)由以下偽代碼示出了可以由圖1的開(kāi)發(fā)者系統(tǒng)20分析以產(chǎn)生要供給代碼生成器16的XML文件的示例服務(wù)接口規(guī)范:

      從對(duì)服務(wù)接口22的分析得到的XML文件的示例部分如下:

      由代碼生成器16使用以將服務(wù)接口22的屬性映射到REST服務(wù)30的屬性的示例映射度量被提供在以下表中。

      表1

      用于代碼生成器16的輸出的一部分的示例偽代碼如下:

      圖4是適合于與圖1-3的實(shí)施例一起使用的示例方法100的流程圖。示例方法102包括第一步驟102,第一步驟102包括確定諸如圖1的服務(wù)接口22之類(lèi)的服務(wù)接口的一個(gè)或多個(gè)特性。

      參照?qǐng)D1和4,第二步驟104包括接收具有與該確定相關(guān)聯(lián)的信息的文件,例如XML文件。XML文件可以經(jīng)由圖1的開(kāi)發(fā)者系統(tǒng)20提供。

      第三步驟106包括基于文件自動(dòng)生成計(jì)算機(jī)代碼以實(shí)現(xiàn)代表性狀態(tài)傳輸(REST)服務(wù)。計(jì)算機(jī)代碼可以由圖1的代碼生成器16根據(jù)圖4的過(guò)程80自動(dòng)生成。

      注意到方法100可以被擴(kuò)充或以其他方式改變,而不脫離本教導(dǎo)的范圍。例如,方法100還可以包括采用接收作為來(lái)自圖1的REST分析工具26的輸出的XML文件的代碼生成器以自動(dòng)生成計(jì)算機(jī)代碼,即共同構(gòu)成REST服務(wù)30的類(lèi)。

      在某些實(shí)施例中,作為服務(wù)項(xiàng)目28的一部分的web服務(wù)包括經(jīng)由代碼生成器16映射到REST服務(wù)30的一個(gè)或多個(gè)資源。

      示例方法100還可以包括采用代碼生成器16以創(chuàng)建包含包括所生成的計(jì)算機(jī)代碼的一個(gè)或多個(gè)編程語(yǔ)言類(lèi)的轉(zhuǎn)儲(chǔ)文件。代碼生成器16可以采用名稱(chēng)注釋修飾符以便于處理在由代碼生成器16接收的包中指定的類(lèi)。

      方法還可以包括采用代碼生成器16以處理包的類(lèi)的每個(gè)方法以響應(yīng)于此產(chǎn)生一個(gè)或多個(gè)更新的方法。更新的方法被更新以符合由服務(wù)接口22的特性需要的限制或約束。

      示例方法100還可以包括經(jīng)由Jersey REST容器(例如,圖1的容器18)在Java平臺(tái)(例如,如由圖1的Java運(yùn)行時(shí)系統(tǒng)24表示的Java平臺(tái))上部署一個(gè)或多個(gè)編程語(yǔ)言類(lèi)(例如,Java類(lèi))。Java類(lèi)可以是由代碼生成器16輸出并且由REST服務(wù)30表示的轉(zhuǎn)儲(chǔ)文件的一部分,并且該轉(zhuǎn)儲(chǔ)文件包含用于所有生成的Java REST資源文件的計(jì)算機(jī)代碼。所有服務(wù)依賴(lài)關(guān)系被合并到跳轉(zhuǎn)(jump)文件中。

      方法100還可以包括采用經(jīng)由Java(R)歸檔實(shí)現(xiàn)的計(jì)算機(jī)代碼(例如,代碼生成器16)以觸發(fā)代碼生成器16的運(yùn)行,該計(jì)算機(jī)代碼響應(yīng)于收到來(lái)自開(kāi)發(fā)者系統(tǒng)20的GET HTTP方法和/或POST方法。

      盡管已參照其特定實(shí)施例來(lái)描述說(shuō)明書(shū),但是這些特定實(shí)施例僅是說(shuō)明性的而不是限制性的。例如,盡管某些實(shí)施例討論Jersey REST服務(wù)的自動(dòng)生成,但是實(shí)施例不限制于此。例如,Apache CXF(TM)、RestEasy或WildFly實(shí)施方式是可能的。

      包括C、C++、Java、匯編語(yǔ)言等的任何合適的編程語(yǔ)言可以被用于實(shí)現(xiàn)特定實(shí)施例的例程(routine)。諸如過(guò)程式編程技術(shù)或面向?qū)ο缶幊碳夹g(shù)之類(lèi)的不同編程技術(shù)可以被采用。例程可以在單個(gè)處理設(shè)備或多個(gè)處理器上執(zhí)行。盡管步驟、操作或計(jì)算可以以具體順序呈現(xiàn),但是在不同特定實(shí)施例中該順序可以被改變。在一些特定實(shí)施例中,在本說(shuō)明書(shū)中被示為順序的多個(gè)步驟可以同時(shí)執(zhí)行。

      特定實(shí)施例可以在用于由指令執(zhí)行系統(tǒng)、裝置、系統(tǒng)或設(shè)備使用或者與指令執(zhí)行系統(tǒng)、裝置、系統(tǒng)或設(shè)備連接的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中實(shí)現(xiàn)。特定實(shí)施例可以在軟件或硬件或二者的組合中以控制邏輯的形式實(shí)現(xiàn)??刂七壿嬙谟梢粋€(gè)或多個(gè)處理器執(zhí)行時(shí)可以是可操作的,以執(zhí)行特定實(shí)施例中描述的內(nèi)容。

      特定實(shí)施例可以通過(guò)使用被編程的通用數(shù)字計(jì)算機(jī)、通過(guò)使用專(zhuān)用集成電路、可編程邏輯器件、現(xiàn)場(chǎng)可編程門(mén)陣列來(lái)實(shí)現(xiàn),光系統(tǒng)、化學(xué)系統(tǒng)、生物系統(tǒng)、量子系統(tǒng)或納米工程系統(tǒng)、組件和機(jī)制可以被使用。一般而言,特定實(shí)施例的功能可以由本領(lǐng)域已知的任何方式來(lái)實(shí)現(xiàn)。分布式、聯(lián)網(wǎng)系統(tǒng)、組件和/或電路可以被使用。數(shù)據(jù)的通信或傳送可以是有線(xiàn)的、無(wú)線(xiàn)的或者通過(guò)任何其他方式。

      還將理解的是附圖/圖中所描繪的元件中的一個(gè)或多個(gè)元件還可以如根據(jù)特定應(yīng)用有用的以更分開(kāi)或更集成的方式實(shí)現(xiàn),或者甚至在某些情況中被移除或被表現(xiàn)為不可操作的。實(shí)現(xiàn)可以被存儲(chǔ)在機(jī)器可讀介質(zhì)中的程序或代碼以允許計(jì)算機(jī)執(zhí)行上文描述的方法中的任何方法也在精神和范圍內(nèi)。

      除非上下文另外清楚指出,否則如本文在說(shuō)明書(shū)中和所附權(quán)利要求書(shū)各處使用的“一”、“一個(gè)”和“該”包括復(fù)數(shù)引用。此外,除非上下文另外清楚指出,否則如本文在說(shuō)明書(shū)中和所附權(quán)利要求書(shū)各處使用的“在……中”的含義包括“在……中”和“在……上”。

      因此,盡管本文已描述了特定實(shí)施例,但是在上述公開(kāi)中也意味著一定范圍的修改、各種改變和替換,并且將理解的是在一些實(shí)例中特定實(shí)施例的一些特征將在沒(méi)有其他特征的對(duì)應(yīng)使用的情況下被采用,而不脫離如所闡述的范圍和精神。因此,可以做出許多修改以使特定情況或材料適應(yīng)本質(zhì)的范圍和精神。

      當(dāng)前第1頁(yè)1 2 3 
      網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1