jax-rs/jersey_在Oracle Cloud上的Prime-UI,JAX-RS和Jersey和Gson
jax-rs/jersey
如今,Oracle云無處不在。 最初,拉里(Larry)否認在很長一段時間內都需要云,并且在去年的開放世界(Open World)之后就發布了一些非常早的公告,而且可用性很差,似乎沒有人對此感興趣了。 但是對我來說,它仍然是隱藏的寶藏,我相信它有贏得客戶的機會。 在深入探討該示例之前,它將向您展示如何在Oracle Cloud Service上將JAX-RS與Jersey一起使用,我想向您介紹該服務。 隨意跳過此第一部分。
Oracle Cloud到底是什么?為什么要關心它?
Oracle Cloud是一個營銷術語。 它試圖捕獲幾個共享一個稱為平臺服務的公共基礎的不同服務。 這兩個基本上是Java和數據庫服務。 從技術上講,這并不是太新。 我們談論的是Oracle的“ 云應用基礎 ”。
它位于整個Oracle Fusion Middleware Stack的底部(至少在可用的營銷幻燈片中),并且是在Exalogic設備上運行的基本軟件堆棧。 與Java開發人員最相關的部分是Java EE 5 WebLogic Server和一個稱為Traffic Director的負載平衡解決方案。 整潔的部分是,您實際上可以在云中擁有一臺真正的Exalogic機器的個人股份,而即使是最小的機架成本也只有一部分成本。 它正在全球的數據中心中運行。 完全管理,包括許可證。 因此,支付每月的螨蟲就可以完成管理部分。 而且,如果您有令人愉快的處理許可和受支持平臺的知識,那么您將對其中的附加價值有所了解。 從技術上講,Java服務一點都不感興趣。 EE 5已過時,即使基于Java SE 6的JRockit都具有Java SE 7的所有新功能以及SE 6的公開更新終止政策,這使過去看起來像陌生人。 但是我仍然認為這是一個好的開始,并且我非常期待在云中擁有最新的WebLogic 12c和一個不錯的Java 7。
WebLogic Server和JAX-RS
你還記得古代嗎? Java EE 5? 幾年來一直使用最新的EE 6規范,感覺就像您必須再次駕駛學生所擁有的汽車。 信不信由你:JAX-R根本不是EE 5的一部分。 這正是JAX-RS無法在Oracle Java Service上立即可用的原因。 但是您可能知道Weblogic團隊非常了解它們在采用EE方面運行較晚的事實,因此,他們正在推出功能,這些功能將包含在基本服務器中,并且下一個規范版本將逐漸包含在較早版本中。 早在2011年初,JAX-RS發生了同樣的情況。從10.3.4版開始,您只需添加庫依賴項或將其打包到應用程序中,就可以將Jersey作為JAX-RS實現。 這也適用于Java服務。 只需在您最喜歡的IDE中啟動一個新的Maven項目(可能是最新的NetBeans 7.3,它已在市場上流行)并添加
<dependency><groupId>com.sun.jersey</groupId><artifactId>jersey-server</artifactId><version>1.9</version><scope>provided</scope></dependency>澤西島作為具有范圍的依賴項。 另一個指針是應該編譯的Java版本。 確保SE 7不會插入某處,并將mavven編譯器插件設置為使用源版本1.6和目標版本1.6。 令人遺憾的是...接下來要添加的是Jersey的weblogic.xml庫參考:
<library-ref><library-name>jax-rs</library-name><specification-version>1.1</specification-version><implementation-version>1.9</implementation-version></library-ref>這只是告訴容器將其添加到類加載器中。 通常,您必須先將其部署到您的域中。 但請相信我:它已經存在,您可以使用它。 如果您使用的是NetBeans,并且從新的“來自Patterns的RESTful Web服務”向導開始,則可能會遇到另外兩個(不需要的)依賴關系,但這將使您避免將Jersey配置添加到web.xml中,看起來應該如此如下所示:
<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和程序包掃描路徑一起注冊即可,即可為您的注釋實現。 選擇您喜歡的任何映射。 緊隨此示例之后,您應該知道,稍后我將使用JavaScript將URL硬編碼到服務。 注意“ / webresources”部分。
添加一些JSON
您肯定注意到了et.eisele.primeui.cloud軟件包參考。 讓我們看看這個類:
@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; }這基本上包含國家的String []。 每個條目都將轉換為ValueHolder對象,并添加到ArrayList,借助Google的gson庫將其轉換為JSON。 這是我們需要包含在pom.xml中的第二個依賴項
<dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.2.2</version><scope>compile</scope></dependency>通過使用編譯范圍,確保將其與您的應用程序打包在一起。 現在大部分完成了。 您注意到@QueryParam('query')。 我圍繞從String []中選擇正確的條目來確定要返回哪個ValueHolder,建立了更多的邏輯。 有關完整示例,請參閱github上的RestResource 。 現在,我們需要一個不錯的前端。
Prime-UI進行救援
如今,每個人都在談論JavaScript,我認為這可能是炫耀最新Primefaces后代Prime-UI可能實現的某些事情的好方法。 這些家伙通過提供小部件庫,在將他們已經廣為使用的JSF庫PrimeFaces推向jQuery世界方面做得很好。 通過下載prime-ui zip文件,從PrimeFaces網站獲得所需的一切。 如果您是從NetBeans中的Web項目開始的,并且沒有添加JSF,則最終會在webapp文件夾中包含一個漂亮的小jsp文件。 打開它并對其進行一些更改和調整。 最重要的是HTML5文檔類型聲明和所需JavaScript導入:
<%@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>自動完成示例將輸入文本字段綁定到后端,并為您提供預輸入功能。 假設您已在上面運行了REST服務,現在只需在頭部分添加以下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>并將輸入標記添加到頁面的正文部分:
<input id='remote' name='remote' type='text'/>那就是你要做的。 一句話。 如果您打算按原樣部署該應用程序,則系統將在其前面顯示一個登錄屏幕,提示您。 為了向公眾開放,您必須添加一個空白
<login-config/>您的web.xml的元素。 現在繼續并將云添加到您的IDE ,并將應用程序部署到您的試用實例。 如果您使用的是github源碼 ,則應如下所示:
根據查詢,它返回更合格的結果。 用郵遞員的方式看起來像這樣:
帶走
我希望,您根本沒想到這會成為火箭科學。 這是一篇基本的文章,內容涉及大多數WebLogic服務器開發人員可能已經知道的內容。 這是Oracle Java Cloud Service的最大優點之一,也是一個很大的缺點。 如果您了解WebLogic,則很可能會喜歡它。 如果您處于開放源代碼方面,則可能會遇到Oracle中間件人員熟知的問題,而您卻不了解。 EE 5并不比EE 6完整,而EE 7在解決所有不同實現之間的特定于供應商的問題上只會稍好一點。 但是再說一遍:這對您來說不是新事物,對吧? 現在開始:進行試駕并分享您的經驗! 期待閱讀他們!
參考:我們的JCG合作伙伴 Markus Eisele在Java軟件企業博客上的Prime-UI,Jersey和Gson在Oracle Cloud上的Oracle Cloud 。
翻譯自: https://www.javacodegeeks.com/2013/02/prime-ui-jax-rs-with-jersey-and-gson-on-oracle-cloud.html
jax-rs/jersey
總結
以上是生活随笔為你收集整理的jax-rs/jersey_在Oracle Cloud上的Prime-UI,JAX-RS和Jersey和Gson的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 端到端BPM(带有DMN标记)
- 下一篇: 备案域名交易平台(已备案域名交易平台)