本申請涉及以下申請,于2012年5月17日提交的、名稱為“METHOD FOR REWRITING DYNAMICALLY GENERATED UNIFORM RESOURCE LOCATORS IN PROXIED HYPER TEXT MARKUP LANGUAGE CONTENT(用于重寫代理的超文本標記語言內(nèi)容中的動態(tài)生成的統(tǒng)一資源定位符的方法)”、序號為13/474,709(代理人案卷號ORACP0062)的美國專利申請,該申請在此通過引用并入,如同在本說明書中完全闡述一樣。
背景技術(shù):
本申請涉及軟件,并且更具體地涉及用于便于開發(fā)和實現(xiàn)諸如web服務(wù)之類的可遠程訪問軟件的系統(tǒng)和方法。
可遠程訪問軟件在各種要求高的應用中被采用,這些要求高的應用包括對于諸如移動設(shè)備之類的分布式客戶機來說可訪問的企業(yè)基于云的軟件。在許多企業(yè)計算環(huán)境中,不同軟件系統(tǒng)必須諸如經(jīng)由web服務(wù)或經(jīng)由用于經(jīng)由因特網(wǎng)(Internet)在軟件系統(tǒng)之間傳送數(shù)據(jù)的其他機制來交換數(shù)據(jù)。請求數(shù)據(jù)的軟件系統(tǒng)被稱為服務(wù)請求者,而處理請求并且提供數(shù)據(jù)的軟件系統(tǒng)被稱為服務(wù)提供者。
用于實現(xiàn)這樣的可遠程訪問軟件的用于便于開發(fā)web服務(wù)、應用編程接口(API)等的軟件開發(fā)方法和工具通常需要實現(xiàn)計算機代碼的快速開發(fā)和安裝的高效機制。
常規(guī)地,諸如代表性狀態(tài)傳輸(REST)服務(wù)之類的web服務(wù)的開發(fā)需要對服務(wù)接口細節(jié)的分析,該服務(wù)接口細節(jié)即客戶機設(shè)備和遠程內(nèi)容服務(wù)器之間的通信接口的細節(jié)。這樣的分析通常被手動執(zhí)行,即經(jīng)由軟件開發(fā)工具被手工編碼。然而,可以包括打開接口對象和文件;按需在視覺上檢查和編輯服務(wù)組件;以及相應地編輯服務(wù)代碼的手動方法可能是過于費時和易于出錯的。
一般而言,使用現(xiàn)有工具經(jīng)由API接口對REST服務(wù)的開發(fā)可能是過于勞動密集的、成本高的以及易于出錯的。
技術(shù)實現(xiàn)要素:
示例方法便于諸如代表性狀態(tài)傳輸(REST)web服務(wù)之類的web服務(wù)的開發(fā)。示例方法包括確定諸如用于REST服務(wù)的統(tǒng)一服務(wù)接口之類的服務(wù)接口的一個或多個特性;接收具有與前述確定相關(guān)聯(lián)的信息的文件;以及基于文件自動生成計算機代碼以實現(xiàn)REST服務(wù)。
在更具體的實施例中,服務(wù)接口的特性包括XML文件中維護的信息。XML文件可以表示應用到服務(wù)接口的REST分析工具的輸出。web服務(wù)可以利用或包括經(jīng)由自動生成的步驟已映射到REST服務(wù)的一個或多個資源。
代碼生成器可以被用于自動生成包括REST服務(wù)的計算機代碼。代碼生成器適合于創(chuàng)建包含包括所生成的計算機代碼的一個或多個編程語言類的轉(zhuǎn)儲(dump)文件。名稱注釋修飾符便于處理由代碼生成器接收的包中指定的類。包中的每個類的每個方法被處理以響應于此產(chǎn)生一個或多個更新的方法,該一個或多個更新的方法已根據(jù)服務(wù)接口細節(jié)(即信息)來更新。
在具體實施例中,該一個或多個編程語言類適合于經(jīng)由諸如Jersey REST容器之類的REST容器被部署在Java(R)平臺上。輸出轉(zhuǎn)儲文件包括用于所有生成的Java REST資源文件的計算機代碼。代碼生成器采用經(jīng)由Java歸檔(archive)維護的計算機代碼。
示例方法還可以包括接收觸發(fā)計算機代碼(即代碼生成器)的運行的命令。命令可以是GET超文本傳送協(xié)議(HTTP)方法、POST HTTP方法或其他方法。代碼生成器適合于自動導入所有服務(wù)依賴關(guān)系以用于合并到轉(zhuǎn)儲文件中。
因此,本文討論的某些實施例向開發(fā)者提供系統(tǒng)引導以便于編寫REST服務(wù)并且還提供用于快速生成REST服務(wù)或?qū)⑵渌愋偷膚eb服務(wù)轉(zhuǎn)換為REST服務(wù)的代碼生成工具。盡管某些具體實施例特別適合于生成Jersey REST服務(wù),但是類似方法可以被擴展到其他平臺,諸如采用Apache CXF或RestEasy的平臺。
通過實現(xiàn)用于REST服務(wù)的自動代碼生成,包括生成用于將現(xiàn)有web服務(wù)轉(zhuǎn)換為REST服務(wù)的開銷(overhead)代碼,開發(fā)成本和人為錯誤可以被降低。
通過參考說明書的剩余部分和附圖可以實現(xiàn)對本文公開的特定實施例的本質(zhì)和優(yōu)點的進一步理解。
附圖說明
圖1是示出了實現(xiàn)代表性狀態(tài)傳輸(REST)服務(wù)的自動生成的第一示例系統(tǒng)的示圖。
圖2是表征(characterize)圖1的代碼生成器的示例類的框圖。
圖3是經(jīng)由圖1的代碼生成器實現(xiàn)并且適合于處理經(jīng)由可擴展標記語言(XML)提供并且表征服務(wù)接口的包的示例過程的流程圖。
圖4是適合于用于與圖1-3的實施例一起使用的示例方法的流程圖。
具體實施方式
出于本討論的目的,企業(yè)可以是人的任何組織,諸如商業(yè)機構(gòu)(business)、大學、政府、軍隊等等。本文可互換地采用術(shù)語“組織”和“企業(yè)”。組織的人員(即企業(yè)人員)可以包括與組織相關(guān)聯(lián)的任何人,諸如雇員、承包商、董事會成員、客戶聯(lián)系人等等。
企業(yè)計算環(huán)境可以是被用于商業(yè)機構(gòu)或組織的任何計算環(huán)境。計算環(huán)境可以是被用于執(zhí)行包括計算機處理的一個或多個任務(wù)的計算資源的任何集合。示例企業(yè)計算環(huán)境包括跨網(wǎng)絡(luò)分布的各種計算資源并且還可以包括內(nèi)聯(lián)網(wǎng)web服務(wù)器上的私有和共享內(nèi)容、數(shù)據(jù)庫、本地硬盤或文件服務(wù)器上的文件、郵件系統(tǒng)、文檔管理系統(tǒng)、門戶(portal)等等。
出于本討論的目的,web資源可以是可以被命名并且經(jīng)由計算機網(wǎng)絡(luò)尋址的任何事物,包括計算語言類(例如,Java類)、對象、web服務(wù)等等。一般而言,諸如URL之類的經(jīng)由統(tǒng)一資源識別符(URI)或web地址引用的任何事物可以被認為是web資源。URI可以是指定網(wǎng)絡(luò)地址的任何字符串。
企業(yè)軟件可以是適合于便于實現(xiàn)諸如管理企業(yè)資源、管理客戶關(guān)系等之類的任何企業(yè)相關(guān)過程或操作的計算機代碼的任何集合。本文可互換地采用術(shù)語“企業(yè)軟件”和“企業(yè)應用”。然而,企業(yè)應用可以包括諸如用戶界面(UI)軟件模塊或組件之類的一個或多個企業(yè)軟件模塊或組件。
企業(yè)數(shù)據(jù)可以是關(guān)于組織或商業(yè)機構(gòu)的任何信息,包括關(guān)于客戶、約會(appointment)、會議、機會、客戶交互、項目、任務(wù)、資源、訂單(order)、企業(yè)人員等等的信息。企業(yè)數(shù)據(jù)的示例包括工作相關(guān)筆記、約會數(shù)據(jù)、客戶聯(lián)系信息、工作訂單的描述、資產(chǎn)描述、照片、聯(lián)系信息、日歷信息、企業(yè)層級信息(例如,公司組織圖表信息)等等。
為了清楚起見,諸如硬盤驅(qū)動器、處理器、操作系統(tǒng)、電源、因特網(wǎng)服務(wù)提供商(ISP)、類加載器、字節(jié)碼編譯器等之類的某些公知組件已從附圖中省略。然而,可以獲取本教導的本領(lǐng)域技術(shù)人員將知道實現(xiàn)哪些組件以及怎樣實現(xiàn)它們以滿足給定實施方式的需要。
圖1是示出了實現(xiàn)代表性狀態(tài)傳輸(REST)服務(wù)的自動生成的第一示例系統(tǒng)10的示圖。在該示例實施例中,系統(tǒng)10適合于便于參照服務(wù)接口22經(jīng)由代碼生成器實用程序(utility)應用編程接口(API)16(還被簡稱為代碼生成器)將服務(wù)項目28的web服務(wù)轉(zhuǎn)換為REST服務(wù)30。
注意到系統(tǒng)10的各個模塊可以以與所示出的不同的方式被分組、安排、耦接和/或分布,而不脫離本教導的范圍。例如,在替代分組中,代碼生成器16可以被認為是開發(fā)系統(tǒng)20的一部分,而Jersey REST容器18和伴隨的服務(wù)30可以被認為是Java運行時系統(tǒng)或平臺24的一部分。類似地,在某些實施方式中,模塊之間的互連可以不同于所示出的互連。
第一示例系統(tǒng)10包括經(jīng)由諸如REST服務(wù)30之類的一個或多個服務(wù)與一個或多個企業(yè)數(shù)據(jù)庫32進行通信的REST客戶機14。REST服務(wù)30包括部署就緒(deployment-ready)代碼,該部署就緒代碼可以經(jīng)由Java運行時系統(tǒng)24運行并且適合于便于根據(jù)服務(wù)接口22訪問經(jīng)由企業(yè)數(shù)據(jù)庫32維護的數(shù)據(jù)。
出于本討論的目的,REST客戶機可以是在支持REST服務(wù)的系統(tǒng)中操作或與支持REST服務(wù)的系統(tǒng)通信的任何客戶機。類似地,REST服務(wù)器可以是適合于用于與REST架構(gòu)風格一起使用或者與REST服務(wù)一起使用的任何服務(wù)器。客戶機可以是適合于接收來自被稱為服務(wù)器的另一計算機或系統(tǒng)的內(nèi)容的任何計算機、系統(tǒng)或網(wǎng)絡(luò)資源。服務(wù)器系統(tǒng)可以是一個或多個服務(wù)器的任何集合。
示例開發(fā)者系統(tǒng)和圖形用戶界面(GUI)20(還被簡稱為開發(fā)者系統(tǒng))與代碼生成器實用程序API 16和服務(wù)接口22通信。開發(fā)者系統(tǒng)20包括REST分析工具26,REST分析工具26包括適合于便于服務(wù)接口22的分析以及生成包含分析的結(jié)果的可擴展標記語言(XML)文件的計算機代碼。
REST分析工具26還與服務(wù)項目28和代碼生成器16通信。代碼生成器16接收具有服務(wù)接口22的分析結(jié)果的XML文件,并且還可以接收關(guān)于服務(wù)項目28的服務(wù)項目信息,包括表征要被轉(zhuǎn)換為REST服務(wù)30的web服務(wù)的類文件。代碼生成器16接收來自開發(fā)者系統(tǒng)20的XML文件,然后運行過程以基于從開發(fā)者系統(tǒng)20接收的輸入來自動生成REST服務(wù)30。
服務(wù)項目28可以包括用于尚未被配置為作為REST服務(wù)操作的服務(wù)的計算機代碼。該計算機代碼可以表示被遞送到代碼生成器API16或者對于代碼生成器API 16來說可訪問以用于在根據(jù)對服務(wù)接口22的分析來生成REST服務(wù)30中使用的包的一部分。
代碼生成器16適合于生成REST服務(wù)30,以使得服務(wù)可以訪問(即,可以調(diào)用)經(jīng)由服務(wù)接口22可用的所有必需的REST映射的服務(wù)。代碼生成器16可以被實現(xiàn)為Java歸檔。
REST服務(wù)30經(jīng)由Jersey REST容器18被存儲,并且它表示用于包括REST服務(wù)30的編程語言類的轉(zhuǎn)儲位置。出于本討論的目的,編程語言類可以是作為軟件代碼的一部分被采用并且可以封裝數(shù)據(jù)和/或功能(例如,屬性和/或方法)的任何計算對象。
在本示例實施例中,REST服務(wù)30表示根據(jù)Jersey RESTful Web服務(wù)框架實現(xiàn)的RESTful web服務(wù)。Jersey RESTful Web服務(wù)框架是便于根據(jù)與Java規(guī)范請求(Java Specification Requests,JSR)311和339一致的JAX-RS(用于RESTful Web服務(wù)的Java API)API在Java中實現(xiàn)web服務(wù)的開源框架?;ハ嗤ㄐ诺膚eb服務(wù)的Jersey實現(xiàn)提供便于在諸如容器18之類的Java小服務(wù)程序(servlet)容器中實現(xiàn)RESTful web服務(wù)的庫。
可以包括Java虛擬機(JVM)和包括Java API、類加載器、剖析器(profiler)等的相關(guān)聯(lián)平臺的Java運行時系統(tǒng)24適合于選擇性地執(zhí)行、解釋或者(例如,經(jīng)由即時(JIT)編譯器)既執(zhí)行又解釋REST服務(wù)30的計算機代碼。REST客戶機14可以包括適合于調(diào)用(call)、援用(invoke)或以其他方式使用REST服務(wù)30以調(diào)用采用REST服務(wù)30的應用的瀏覽器、API和其他客戶機側(cè)軟件。
例如,REST客戶機14可以經(jīng)由REST服務(wù)30和伴隨的Java運行時系統(tǒng)24請求經(jīng)由企業(yè)數(shù)據(jù)庫32提供的數(shù)據(jù)和/或功能。REST客戶機14(即,請求者)可以經(jīng)由服務(wù)接口22向服務(wù)器系統(tǒng)12(即,提供者)發(fā)送請求消息。請求消息可以被尋址到經(jīng)由Java運行時系統(tǒng)24運行的REST服務(wù)30。運行的REST服務(wù)30然后根據(jù)請求從企業(yè)數(shù)據(jù)庫32檢索數(shù)據(jù)以及促進采用服務(wù)接口22來向REST客戶機14遞送數(shù)據(jù)檢索的結(jié)果。
總之,代碼生成器實用程序API 16便于REST服務(wù)的自動創(chuàng)建。每個服務(wù)接口22被分析其特性,然后得到的分析數(shù)據(jù)被供應給代碼生成器16以便于REST服務(wù)30的自動生成。如本文所討論的基于服務(wù)接口細節(jié)的REST服務(wù)計算機代碼的自動生成可以大大減少開發(fā)和部署REST服務(wù)30所需要的開發(fā)時間和錯誤。
采用開發(fā)者系統(tǒng)20的開發(fā)者可以手動創(chuàng)建表征服務(wù)接口22的XML文件和/或采用REST分析工具26。下文更全面地討論示例XML文件。
在開發(fā)web服務(wù)時,服務(wù)項目28被保持在XML文件中指定的類路徑中,以用于由代碼生成器API 16和伴隨的Java運行時系統(tǒng)24使用。開發(fā)者可以采用開發(fā)者系統(tǒng)20以諸如經(jīng)由GET和/或POST超文本傳送協(xié)議(HTTP)方法來調(diào)用或激活代碼生成器16。
在方法調(diào)用中指定的(對應于REST服務(wù)30的位置的)轉(zhuǎn)儲位置將使所有Java REST資源文件被生成并且準備好被使用。所有服務(wù)依賴關(guān)系(例如,REST服務(wù)30對其他服務(wù)的依賴關(guān)系)被自動導入到REST服務(wù)30中或者以其他方式被考慮以使得REST服務(wù)30能夠適當?shù)毓ぷ鳌?/p>
注意到一般而言,諸如REST服務(wù)30之類的web服務(wù)可以由包括服務(wù)器側(cè)和客戶機側(cè)應用的不同web應用調(diào)用或使用。例如,REST客戶機14的API可以由REST客戶機14采用,以請求來自服務(wù)器系統(tǒng)12的服務(wù)。服務(wù)器系統(tǒng)12可以包括可以與REST客戶機14對接的其他web應用,而不脫離本教導的范圍。
出于本討論的目的,web應用可以是適合于由一個或多個客戶機設(shè)備通過諸如因特網(wǎng)或內(nèi)聯(lián)網(wǎng)之類的網(wǎng)絡(luò)訪問的任何計算機代碼,例如軟件應用。web應用可以調(diào)用和/或?qū)崿F(xiàn)一個或多個web服務(wù)。
web服務(wù)可以是響應于經(jīng)由諸如萬維網(wǎng)(World Wide Web)之類的網(wǎng)絡(luò)從客戶機發(fā)送到服務(wù)器的信號(例如,請求消息)經(jīng)由服務(wù)器上運行的軟件而激活或?qū)崿F(xiàn)的任何軟件功能或操作。實現(xiàn)web服務(wù)操作的軟件還可以被稱為web服務(wù)、軟件服務(wù)或者在此被簡稱為服務(wù)。
一般而言,web應用可以經(jīng)由諸如Java、JavaScript、Flash、Silverlight等之類的各種方法和伴隨機制來實現(xiàn)。此外,某些web應用可以由執(zhí)行若干過程的過程模板來定義,其中每個過程經(jīng)由分開的web服務(wù)實現(xiàn)。
一般而言,軟件服務(wù)提供可以由(可以跨網(wǎng)絡(luò)分布的)不同應用或過程重復使用的功能(例如,能力),這些不同應用或過程經(jīng)由例如經(jīng)由中間件指定的并且與服務(wù)描述一致的預定接口來訪問功能。
遵守REST架構(gòu)風格的web服務(wù)被稱為RESTful web服務(wù)。REST架構(gòu)風格指定用于web服務(wù)的約束,包括與可以適合于便于可擴展性、可修改性、可重用性等的統(tǒng)一接口的兼容性。
REST架構(gòu)風格要求客戶機服務(wù)器架構(gòu),其中數(shù)據(jù)和功能被認為是資源。使用可以對應于網(wǎng)頁中的鏈接的統(tǒng)一資源識別符(URI)來訪問這些資源。使用定義良好的(well-defined)操作(例如,GET、POST等)和諸如HTTP之類的通信協(xié)議來作用于資源。因此,客戶機和服務(wù)器使用標準化的接口和協(xié)議來交換資源的表示。
服務(wù)接口22表示用于包括REST客戶機14和服務(wù)器系統(tǒng)12的網(wǎng)絡(luò)資源之間的REST通信的統(tǒng)一接口。出于本討論的目的,服務(wù)接口可以是便于包括web服務(wù)的網(wǎng)絡(luò)資源之間的相互通信的任何機制。服務(wù)接口通常適合于實現(xiàn)和執(zhí)行暴露的服務(wù)與軟件應用和/或與服務(wù)通信的其他服務(wù)之間的合約(contract)。
在例如系統(tǒng)10的REST系統(tǒng)中,來自客戶機(即,服務(wù)的請求者)的請求包含用于服務(wù)請求的信息。表征請求者和提供者(例如,客戶機和服務(wù)器)之間的通信交互的會話狀態(tài)可以被存儲在客戶機處。然而,會話狀態(tài)可以由例如服務(wù)器系統(tǒng)12的服務(wù)器傳送到另一服務(wù)。
客戶機(例如,REST客戶機14)向服務(wù)器系統(tǒng)12發(fā)出請求以轉(zhuǎn)變到新的狀態(tài)。每個應用狀態(tài)的表示可以包括用于隨后的客戶機狀態(tài)轉(zhuǎn)變的鏈路(URI)。服務(wù)接口22便于應用、服務(wù)等的解耦,從而使得潛在地不同的應用和系統(tǒng)能夠相互通信和相互操作。
圖2是表征圖1的代碼生成器的示例類結(jié)構(gòu)40的框圖。經(jīng)由圖1的代碼生成器16為REST web服務(wù)構(gòu)建的類將一般與類40一致。然而,本領(lǐng)域技術(shù)人員將意識到特定類的細節(jié)可以不同并且可以具有不同數(shù)量和類型的屬性,包括方法屬性。
類40包括由計算環(huán)境(其可以包括各種庫、協(xié)議規(guī)范等等)支持的類屬性數(shù)據(jù)42和方法部分44的方法屬性或組件54。
類數(shù)據(jù)42(即,屬性)包括路徑的識別(@path)46、修飾符48、服務(wù)名稱50和對包52的引用。方法部分44的方法組件包括表征路徑方法56(@path)、接收(accepts)方法58(@accepts)、GET方法60(@GET)、查詢參數(shù)方法62(@QueryParam)、輸入變量方法64、輸出變量方法66、初始化方法68和調(diào)用方法70的屬性。
參照圖1和2,代碼生成器類40的方法屬性64和一般類屬性42適合于由圖1的代碼生成器16采用以處理從開發(fā)者系統(tǒng)20接收的包(包括要被轉(zhuǎn)換為REST服務(wù)30并且是服務(wù)項目28的一部分的web服務(wù)的類)以便于生成REST服務(wù)30。
圖3是示出了經(jīng)由圖1的代碼生成器實現(xiàn)并且適合于處理經(jīng)由表征圖1的服務(wù)接口22的XML文件提供的包的示例過程80的流程圖。
示例方法80包括初始分析步驟82,初始分析步驟82包括分析包(包括由代碼生成器16經(jīng)由圖1的開發(fā)者系統(tǒng)20接收的XML文件)以獲得用于實現(xiàn)對包中指示的資源名稱的必需改變的信息。
隨后,包中的類被傳遞到名稱處理步驟84。名稱處理步驟84包括參照如所示包括在圖2的代碼生成器類40中的類屬性42使用名稱注釋修飾符處理每個類。
接下來,方法處理步驟86對于包中的每個類選擇性地處理如所示包括在圖2的代碼生成器類40中的方法54。類屬性42和伴隨的方法屬性54的處理可以包括如下文更全面地討論的根據(jù)映射邏輯的映射。
檢查步驟88隨后檢查以確認包中的所有類是否已經(jīng)歷名稱處理84和方法處理86。如果包中的所有類已經(jīng)歷名稱處理84和方法處理86,則執(zhí)行轉(zhuǎn)儲文件創(chuàng)建步驟90。否則,控制返回到名稱處理步驟84和方法處理步驟86直至包中的所有類被完全處理。
轉(zhuǎn)儲文件創(chuàng)建步驟90包括自動創(chuàng)建具有實現(xiàn)圖1的REST服務(wù)30所需要的所有處理后的服務(wù)類的轉(zhuǎn)儲文件。
參照圖1-3,對服務(wù)接口22的分析產(chǎn)生信息,包括諸如名稱、修飾符類型、注釋等之類的類屬性,并且還包括諸如方法名稱、輸入?yún)⒘?argument)和返回類型之類的方法數(shù)據(jù)。
經(jīng)由以下偽代碼示出了可以由圖1的開發(fā)者系統(tǒng)20分析以產(chǎn)生要供給代碼生成器16的XML文件的示例服務(wù)接口規(guī)范:
從對服務(wù)接口22的分析得到的XML文件的示例部分如下:
由代碼生成器16使用以將服務(wù)接口22的屬性映射到REST服務(wù)30的屬性的示例映射度量被提供在以下表中。
表1
用于代碼生成器16的輸出的一部分的示例偽代碼如下:
圖4是適合于與圖1-3的實施例一起使用的示例方法100的流程圖。示例方法102包括第一步驟102,第一步驟102包括確定諸如圖1的服務(wù)接口22之類的服務(wù)接口的一個或多個特性。
參照圖1和4,第二步驟104包括接收具有與該確定相關(guān)聯(lián)的信息的文件,例如XML文件。XML文件可以經(jīng)由圖1的開發(fā)者系統(tǒng)20提供。
第三步驟106包括基于文件自動生成計算機代碼以實現(xiàn)代表性狀態(tài)傳輸(REST)服務(wù)。計算機代碼可以由圖1的代碼生成器16根據(jù)圖4的過程80自動生成。
注意到方法100可以被擴充或以其他方式改變,而不脫離本教導的范圍。例如,方法100還可以包括采用接收作為來自圖1的REST分析工具26的輸出的XML文件的代碼生成器以自動生成計算機代碼,即共同構(gòu)成REST服務(wù)30的類。
在某些實施例中,作為服務(wù)項目28的一部分的web服務(wù)包括經(jīng)由代碼生成器16映射到REST服務(wù)30的一個或多個資源。
示例方法100還可以包括采用代碼生成器16以創(chuàng)建包含包括所生成的計算機代碼的一個或多個編程語言類的轉(zhuǎn)儲文件。代碼生成器16可以采用名稱注釋修飾符以便于處理在由代碼生成器16接收的包中指定的類。
方法還可以包括采用代碼生成器16以處理包的類的每個方法以響應于此產(chǎn)生一個或多個更新的方法。更新的方法被更新以符合由服務(wù)接口22的特性需要的限制或約束。
示例方法100還可以包括經(jīng)由Jersey REST容器(例如,圖1的容器18)在Java平臺(例如,如由圖1的Java運行時系統(tǒng)24表示的Java平臺)上部署一個或多個編程語言類(例如,Java類)。Java類可以是由代碼生成器16輸出并且由REST服務(wù)30表示的轉(zhuǎn)儲文件的一部分,并且該轉(zhuǎn)儲文件包含用于所有生成的Java REST資源文件的計算機代碼。所有服務(wù)依賴關(guān)系被合并到跳轉(zhuǎn)(jump)文件中。
方法100還可以包括采用經(jīng)由Java(R)歸檔實現(xiàn)的計算機代碼(例如,代碼生成器16)以觸發(fā)代碼生成器16的運行,該計算機代碼響應于收到來自開發(fā)者系統(tǒng)20的GET HTTP方法和/或POST方法。
盡管已參照其特定實施例來描述說明書,但是這些特定實施例僅是說明性的而不是限制性的。例如,盡管某些實施例討論Jersey REST服務(wù)的自動生成,但是實施例不限制于此。例如,Apache CXF(TM)、RestEasy或WildFly實施方式是可能的。
包括C、C++、Java、匯編語言等的任何合適的編程語言可以被用于實現(xiàn)特定實施例的例程(routine)。諸如過程式編程技術(shù)或面向?qū)ο缶幊碳夹g(shù)之類的不同編程技術(shù)可以被采用。例程可以在單個處理設(shè)備或多個處理器上執(zhí)行。盡管步驟、操作或計算可以以具體順序呈現(xiàn),但是在不同特定實施例中該順序可以被改變。在一些特定實施例中,在本說明書中被示為順序的多個步驟可以同時執(zhí)行。
特定實施例可以在用于由指令執(zhí)行系統(tǒng)、裝置、系統(tǒng)或設(shè)備使用或者與指令執(zhí)行系統(tǒng)、裝置、系統(tǒng)或設(shè)備連接的計算機可讀存儲介質(zhì)中實現(xiàn)。特定實施例可以在軟件或硬件或二者的組合中以控制邏輯的形式實現(xiàn)。控制邏輯在由一個或多個處理器執(zhí)行時可以是可操作的,以執(zhí)行特定實施例中描述的內(nèi)容。
特定實施例可以通過使用被編程的通用數(shù)字計算機、通過使用專用集成電路、可編程邏輯器件、現(xiàn)場可編程門陣列來實現(xiàn),光系統(tǒng)、化學系統(tǒng)、生物系統(tǒng)、量子系統(tǒng)或納米工程系統(tǒng)、組件和機制可以被使用。一般而言,特定實施例的功能可以由本領(lǐng)域已知的任何方式來實現(xiàn)。分布式、聯(lián)網(wǎng)系統(tǒng)、組件和/或電路可以被使用。數(shù)據(jù)的通信或傳送可以是有線的、無線的或者通過任何其他方式。
還將理解的是附圖/圖中所描繪的元件中的一個或多個元件還可以如根據(jù)特定應用有用的以更分開或更集成的方式實現(xiàn),或者甚至在某些情況中被移除或被表現(xiàn)為不可操作的。實現(xiàn)可以被存儲在機器可讀介質(zhì)中的程序或代碼以允許計算機執(zhí)行上文描述的方法中的任何方法也在精神和范圍內(nèi)。
除非上下文另外清楚指出,否則如本文在說明書中和所附權(quán)利要求書各處使用的“一”、“一個”和“該”包括復數(shù)引用。此外,除非上下文另外清楚指出,否則如本文在說明書中和所附權(quán)利要求書各處使用的“在……中”的含義包括“在……中”和“在……上”。
因此,盡管本文已描述了特定實施例,但是在上述公開中也意味著一定范圍的修改、各種改變和替換,并且將理解的是在一些實例中特定實施例的一些特征將在沒有其他特征的對應使用的情況下被采用,而不脫離如所闡述的范圍和精神。因此,可以做出許多修改以使特定情況或材料適應本質(zhì)的范圍和精神。