在Oracle Cloud上的Prime-UI,JAX-RS和Jersey和Gson
如今,Oracle云無處不在。 最初,拉里(Larry)否認(rèn)在很長(zhǎng)一段時(shí)間內(nèi)都需要云,并且在去年的開放世界(Open World)之后就宣布了一些非常早期的公告,而且可用性很差,似乎沒有人對(duì)此感興趣了。 但是對(duì)我來說,它仍然是隱藏的寶藏,我相信它有贏得客戶的機(jī)會(huì)。 在深入了解該示例之前,該示例將向您展示如何在Oracle Cloud Service上將JAX-RS與Jersey一起使用,我想向您介紹該服務(wù)。 隨意跳過此第一部分。
Oracle Cloud到底是什么?為什么要關(guān)心它?
Oracle Cloud是一個(gè)營(yíng)銷術(shù)語(yǔ)。 它試圖捕獲幾個(gè)共享一個(gè)稱為平臺(tái)服務(wù)的公共基礎(chǔ)的不同服務(wù)。 這兩個(gè)基本上是Java和數(shù)據(jù)庫(kù)服務(wù)。 從技術(shù)上講,這并不是太新。 我們談?wù)摰氖羌坠俏牡摹?云應(yīng)用基礎(chǔ) ”。
它位于整個(gè)Oracle Fusion Middleware Stack的底部(至少在可用的營(yíng)銷幻燈片中),是Exalogic設(shè)備上運(yùn)行的基本軟件堆棧。 與Java開發(fā)人員最相關(guān)的部分是Java EE 5 WebLogic Server和稱為Traffic Director的負(fù)載平衡解決方案。 整潔的部分是,您實(shí)際上可以在云中擁有一臺(tái)真正的Exalogic機(jī)器的個(gè)人股份,而即使是最小的機(jī)架成本也只有一部分。 它正在全球的數(shù)據(jù)中心中運(yùn)行。 完全管理并包括許可證。 因此,支付每月的螨蟲就可以完成管理部分。 而且,如果您有令人愉快的處理許可和受支持的平臺(tái)的知識(shí),那么您將對(duì)其中的附加價(jià)值有所了解。 從技術(shù)上講,Java服務(wù)一點(diǎn)都不感興趣。 EE 5已過時(shí),即使基于Java SE 6的JRockit都具有Java SE 7的所有新功能以及SE 6的公開更新終止政策,使您仿佛過去一樣陌生。 但是我仍然認(rèn)為這是一個(gè)好的開始,并且我非常期待在云中擁有最新的WebLogic 12c和像樣的Java 7。
WebLogic Server和JAX-RS
你還記得古代嗎? Java EE 5? 幾年來一直使用最新的EE 6規(guī)范,感覺就像您必須再次駕駛學(xué)生所擁有的汽車。 信不信由你:JAX-R根本不是EE 5的一部分。 這正是JAX-RS無法在Oracle Java Service上立即可用的原因。 但是您可能知道Weblogic團(tuán)隊(duì)非常清楚它們?cè)诓捎肊E方面運(yùn)行較晚的事實(shí),因此,他們正在推出一些功能,這些功能將包含在基本服務(wù)器中,并且下一個(gè)規(guī)范版本將逐漸包含在較早版本中。 早在2011年初,JAX-RS發(fā)生了同樣的情況。從10.3.4版開始,您只需添加庫(kù)依賴項(xiàng)或?qū)⑵浯虬綉?yīng)用程序中,就可以將Jersey作為JAX-RS實(shí)施。 這也適用于Java服務(wù)。 只需在您最喜歡的IDE中啟動(dòng)一個(gè)新的Maven項(xiàng)目(可能是最新的NetBeans 7.3,它已在新聞界大熱),然后添加
<dependency><groupId>com.sun.jersey</groupId><artifactId>jersey-server</artifactId><version>1.9</version><scope>provided</scope></dependency>澤西島作為具有范圍的依賴項(xiàng)。 另一個(gè)指針是應(yīng)該編譯的Java版本。 確保SE 7不會(huì)插入某處,并將mavven編譯器插件設(shè)置為使用源版本1.6和目標(biāo)版本1.6。 令人遺憾的是...接下來要添加的是Jersey的weblogic.xml庫(kù)參考:
<library-ref><library-name>jax-rs</library-name><specification-version>1.1</specification-version><implementation-version>1.9</implementation-version></library-ref>它只是告訴容器將其添加到類加載器中。 通常,您必須先將其部署到您的域中。 但是請(qǐng)相信我:它已經(jīng)存在,您可以使用它。 如果您使用的是NetBeans,并且從新的“來自Patterns的RESTful Web服務(wù)”向?qū)ч_始,則可能會(huì)遇到另外兩個(gè)(不需要的)依賴關(guān)系,但這將使您避免將Jersey配置添加到web.xml中,該外觀應(yīng)該看起來像如下所示:
<servlet><servlet-name>ServletAdaptor</servlet-name><servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class><init-param><description>Multiple packages, separated by semicolon(;), can be specified in param-value</description><param-name>com.sun.jersey.config.property.packages</param-name><param-value>net.eisele.primeui.cloud</param-value></init-param><init-param><param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name><param-value>true</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>ServletAdaptor</servlet-name><url-pattern>/webresources/*</url-pattern></servlet-mapping>只需將REST Servlet和包掃描路徑一起注冊(cè)即可,即可為您的注釋實(shí)現(xiàn)。 選擇您喜歡的任何映射。 緊隨此示例之后,您應(yīng)該意識(shí)到,稍后我將用URL將URL硬編碼到服務(wù)中。 注意“ / webresources”部分。
添加一些JSON
您肯定注意到了et.eisele.primeui.cloud軟件包參考。 讓我們看看這個(gè)類:
@Path('countries') public class RestResource { //... @GET@Produces('application/json')public String getJson(@QueryParam('query') String query) {String[] raw = {'Albania', 'Algeria', //... };List<ValueHolder> countries = new ArrayList<ValueHolder>();for (int i = 0; i < raw.length; i++) {countries.add(new ValueHolder(raw[i]));}Gson gson = new Gson();return gson.toJson(countries);} }public class ValueHolder {public ValueHolder() {}public ValueHolder(String label) {this.label = label;this.value = 'v_' + label;}private String label;private String value; }這基本上包含國(guó)家的String []。 每個(gè)條目都將轉(zhuǎn)換為ValueHolder對(duì)象,并添加到ArrayList,借助Google的gson庫(kù)將其轉(zhuǎn)換為JSON。 這是我們需要包含在pom.xml中的第二個(gè)依賴項(xiàng)
<dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.2.2</version><scope>compile</scope></dependency>通過使用編譯范圍,確保將此文件與您的應(yīng)用程序打包在一起。 現(xiàn)在大部分完成了。 您注意到@QueryParam('query')。 我圍繞從String []中選擇正確的條目來確定要返回哪個(gè)ValueHolder,建立了一些更多的邏輯。 有關(guān)完整示例,請(qǐng)參閱github上的RestResource 。 現(xiàn)在,我們需要一個(gè)不錯(cuò)的前端。
Prime-UI進(jìn)行救援
如今,每個(gè)人都在談?wù)揓avaScript,我認(rèn)為這可能是炫耀稱為Prime-UI的最新Primefaces后代中可能發(fā)生的事情的一種好方法。 這些家伙通過提供小部件庫(kù),在將他們已經(jīng)廣為使用的JSF庫(kù)PrimeFaces推向jQuery世界方面做得很好。 通過下載prime-ui zip文件,從PrimeFaces網(wǎng)站獲得所需的一切。 如果您是從NetBeans中的Web項(xiàng)目開始的,并且沒有添加JSF,則最終會(huì)在webapp文件夾中包含一個(gè)漂亮的小jsp文件。 打開它并對(duì)其進(jìn)行一些更改和調(diào)整。 最重要的是HTML5 doctype聲明和所需JavaScript導(dǎo)入:
<%@page contentType='text/html' pageEncoding='UTF-8'%> <!DOCTYPE html><!-- header, title, all the other stuff you need --><!-- jQuery --><script src='js/vendor/jquery.js'></script><!-- jQuery UI --><script src='js/vendor/jquery-ui.js'></script><!-- Prime UI Core --><script src='js/core/core.js'></script><!-- Prime UI Input Text --><script src='js/inputtext/inputtext.js'></script><!-- Prime UI Autocomplete --><script src='js/autocomplete/autocomplete.js'></script>自動(dòng)完成示例將輸入文本字段綁定到后端,并為您提供預(yù)輸入功能。 假設(shè)您已經(jīng)在運(yùn)行上面的其余服務(wù),現(xiàn)在只需在頭部分添加以下JavaScript:
<script type='text/javascript'>$(function() {$('#remote').puiautocomplete({effect: 'fade',effectSpeed: 'fast',completeSource: function(request, response) {$.ajax({type: 'GET',url: './webresources/countries',data: {query: request.query},dataType: 'json',context: this,success: function(data) {response.call(this, data);},error: function(jqXHR, textStatus, errorThrown) {console.log(textStatus, errorThrown);}});}});});</script>并將輸入標(biāo)記添加到頁(yè)面的正文部分:
<input id='remote' name='remote' type='text'/>那就是你要做的。 一句話。 如果您打算按原樣部署該應(yīng)用程序,則系統(tǒng)將在其前面顯示一個(gè)登錄屏幕,提示您。 為了向公眾開放,您必須添加一個(gè)空白
<login-config/>您的web.xml的元素。 現(xiàn)在繼續(xù),將云添加到您的IDE,然后將應(yīng)用程序部署到您的試用實(shí)例。 如果您使用的是github源碼 ,則應(yīng)如下所示:
根據(jù)查詢,它返回更合格的結(jié)果。 用郵遞員的方式看起來像這樣:
帶走
我希望,您根本沒想到這會(huì)成為火箭科學(xué)。 這是一篇基本的文章,內(nèi)容涉及大多數(shù)WebLogic服務(wù)器開發(fā)人員可能已經(jīng)知道的內(nèi)容。 這是Oracle Java Cloud Service的最大優(yōu)點(diǎn)之一,也是一個(gè)很大的缺點(diǎn)。 如果您了解WebLogic,則很可能會(huì)喜歡它。 如果您處于開放源代碼方面,則可能會(huì)遇到Oracle中間件人員熟知的問題,而您卻不了解。 EE 5并不比EE 6完整,而EE 7在解決所有不同實(shí)現(xiàn)之間的特定于供應(yīng)商的問題上只會(huì)稍好一點(diǎn)。 但是再說一遍:這對(duì)您來說不是新事物,對(duì)吧? 現(xiàn)在開始:進(jìn)行試駕并分享您的經(jīng)驗(yàn)! 期待閱讀他們!
參考:來自JCG合作伙伴 Markus Eisele的Prime-UI,Jersey和Gson在Oracle Cloud上在Oracle Cloud上的使用,該博客來自Java軟件企業(yè)軟件開發(fā) 。
翻譯自: https://www.javacodegeeks.com/2013/02/prime-ui-jax-rs-with-jersey-and-gson-on-oracle-cloud.html
總結(jié)
以上是生活随笔為你收集整理的在Oracle Cloud上的Prime-UI,JAX-RS和Jersey和Gson的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Microsoftoffice2010激
- 下一篇: 消息称三星 Galaxy Tab S9