在Oracle Cloud上的Prime-UI,JAX-RS和Jersey和Gson

如今,Oracle云无处不在。 最初,拉里(Larry)否认在很长一段时间内都需要云,并且在去年的开放世界(Open World)之后就宣布了一些非常早期的公告,而且可用性很差,似乎没有人对此感兴趣了。 但是对我来说,它仍然是隐藏的宝藏,我相信它有赢得客户的机会。 在深入了解该示例之前,该示例将向您展示如何在Oracle Cloud Service上将JAX-RS与Jersey一起使用,我想向您介绍该服务。 随意跳过此第一部分。

Oracle Cloud到底是什么?为什么要关心它?

Oracle Cloud是一个营销术语。 它试图捕获几个共享一个称为平台服务的公共基础的不同服务。 这两个基本上是Java和数据库服务。 从技术上讲,这并不是太新。 我们谈论的是甲骨文的“ 云应用基础 ”。

它位于整个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和包扫描路径一起注册即可,即可为您的注释实现。 选择您喜欢的任何映射。 紧随此示例之后,您应该意识到,稍后我将用URL将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,我认为这可能是炫耀称为Prime-UI的最新Primefaces后代中可能发生的事情的一种好方法。 这些家伙通过提供小部件库,在将他们已经广为使用的JSF库PrimeFaces推向jQuery世界方面做得很好。 通过下载prime-ui zip文件,从PrimeFaces网站获得所需的一切。 如果您是从NetBeans中的Web项目开始的,并且没有添加JSF,则最终会在webapp文件夹中包含一个漂亮的小jsp文件。 打开它并对其进行一些更改和调整。 最重要的是HTML5 doctype声明和所需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>

自动完成示例将输入文本字段绑定到后端,并为您提供预输入功能。 假设您已经在运行上面的其余服务,现在只需在头部分添加以下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的Prime-UI,Jersey和Gson在Oracle Cloud上在Oracle Cloud上的使用,该博客来自Java软件企业软件开发 。

翻译自: https://www.javacodegeeks.com/2013/02/prime-ui-jax-rs-with-jersey-and-gson-on-oracle-cloud.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/369215.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

推荐20个很有帮助的 Web 前端开发教程

在平常的搜索中&#xff0c;我碰到过很多有趣的信息&#xff0c;应用程序和文档&#xff0c;我把它们整理在下面这个列表。这是收藏的遇到的有用内容的一个伟大的方式&#xff0c;可以在你需要的时候方便查阅。相信你会在这个列表中发现对你很有用的资料。 1. CSS Vocabulary 一…

Scrapy爬虫框架解析

Scrapy框架解析Scrapy框架大致包括以下几个组件&#xff1a;Scrapy Engine、Spiders、Scheduler、Item Pipeline、Downloader&#xff1b;组件Scrapy Engine这是框架的核心&#xff0c;负责控制数据流在整个系统的各个组件间的流动过程&#xff0c;并且在特定动作发生时触发相应…

Couchbase 2.0归类视图简介

大多数应用程序必须处理“主/详细”类型的数据&#xff1a; 啤酒厂和啤酒 部门和员工 发票和项目 … 例如&#xff0c;这对于创建如下应用程序视图是必需的&#xff1a; 借助Couchbase和许多面向文档的数据库&#xff0c;您可以采用不同的方式来处理此问题&#xff0c;您…

(转)利用WPF的ListView进行大数据量异步加载

原文&#xff1a;http://www.cnblogs.com/scy251147/archive/2012/01/08/2305319.html 由于之前利用Winform的ListView进行大数据量加载的时候&#xff0c;诟病良多&#xff0c;所以今天试着用WPF的ListView来做了一下&#xff0c;结果没有让我失望&#xff0c;我将一个拥有430…

有关循环和判断的几个小问题

注意在while嵌套的if语句之外&#xff0c;还有一个cin>>n;因为刚刚没有这一部分的时候&#xff0c;执行的结果是这样的&#xff1a; 把while里面的cin>>n;注释掉了之后&#xff0c;在cmd里执行的时候&#xff0c;只能输入数字&#xff0c;但是没有任何的反应。 但其…

PHP7 学习笔记(五)安装event扩展(libevent)

一、描述&#xff1a;有效安排I/O&#xff0c;时间和信号的扩展 使用可用于特定平台的最佳I/O通知机制的事件,是PHP基础设施的libevent端口。 二、下载地址&#xff1a;http://pecl.php.net/package/event 三、安装支持库libevent&#xff0c;需要编译高版本&#xff08;这里以…

有关输出图形的代码,我觉得好难啊,好蒙啊。

这里的代码其实没看懂过&#xff0c;自己看到书上这一题的时候也是挺蒙的&#xff0c;压根不知道要怎么下手&#xff0c;照着书上把代码打进去之后也不清楚原理&#xff0c;可怕的是&#xff0c;反反复复对着答案敲了几遍代码&#xff0c;执行结果还是这样的&#xff0c;和课本…

Windows环境变量的应用

设置环境变量快速打开程序 如果你对桌面上密密麻麻的文件感到烦恼&#xff0c;那么下面的方法可以帮到你。 Step 1 在硬盘的某个位置添加一个文件夹&#xff0c;把你经常用的程序的快捷方式放进这个文件夹&#xff0c;快捷方式重命名最好简单易记&#xff0c;如图 注意 快捷方式…

mysql 备份数据库_mysql数据库备份

前一段时间因为误操作删除了一张表的几条数据&#xff0c;弄得很尴尬&#xff0c;正好这周有空就折腾了下数据备份的知识&#xff0c;现把mysql的数据备份相关实践和心得总结如下&#xff1a;一.使用mysqldump命令备份数据库&#xff1a;备份整个数据库(包括表结构和数据),用法…

JavaScript:Browser 对象

ylbtech-JavaScript&#xff1a;Browser 对象1. Window 对象返回顶部 1、Window 对象 Window 对象 Window 对象表示浏览器中打开的窗口。 如果文档包含框架&#xff08;<frame> 或 <iframe> 标签&#xff09;&#xff0c;浏览器会为 HTML 文档创建一个 window 对象…

深入理解line-height与vertical-align——前端布局常用属性

line-height、font-size、vertical-align是设置行内元素布局的关键属性。这三个属性是相互依赖的关系&#xff0c;改变行间距离、设置垂直对齐等都需要它们的通力合作。下面将主要介绍line-height与vertical-align&#xff1a; 行高 【定义】 line-height行高是指文本行基线之…

UWP开发入门(四)——自定义CommandBar

UWP开发入门&#xff08;四&#xff09;——自定义CommandBar 原文:UWP开发入门&#xff08;四&#xff09;——自定义CommandBar各位好&#xff0c;再次回到UWP开发入门系列&#xff0c;刚回归可能有些不适应&#xff0c;所以今天我们讲个简单的&#xff0c;自定义CommandBar&…

(转)Cobbler无人值守批量安装Linux系统

本文目录&#xff1a; 1.1 pxe安装系统 1.2 cobbler基本介绍 1.3 安装和配置cobbler 1.3.1 安装cobbler 1.3.2 配置dhcp和tftp 1.4 cobbler从本地光盘安装系统 1.4.1 生成distro 1.4.2 提供kickstart文件 1.4.3 提供profile 1.4.4 开始安装 1.5 比pxekickstart好的地方 1.6 让新…

Spring集成–从头开始应用程序,第1部分

开始之前 在本教程中&#xff0c;您将学习什么是Spring Integration &#xff0c;如何使用它以及有助于解决哪些问题。 我们将从头开始构建一个示例应用程序&#xff0c;并演示Spring Integration的一些核心组件。 如果您不熟悉Spring&#xff0c;请查看我编写的另一本有关Spri…

初学者Web介绍一些前端开发中的基本概念用到的技术

Web开发是比较费神的&#xff0c;需要掌握很多很多的东西&#xff0c;特别是从事前端开发的朋友&#xff0c;需要通十行才行。今天&#xff0c;本文向初学者介绍一些Web开发中的基本概念和用到的技术&#xff0c;从A到Z总共26项&#xff0c;每项对应一个概念或者技术。 初学者W…

Xcode 快捷键及代码格式化

按住apple键点击类名就可以定位到这个类中查看相关定义&#xff08;在日后的开发中我们会经常这么来做&#xff0c;毕竟要记住iOS开发中所有的API是不现实的&#xff0c;有些API我们可以通过这种方法来查找&#xff09; PS&#xff1a;下面都是网上百度后经过我自己整理&#x…

主席树学习小结(POJ 2104)

在高中的时候就听到过主席树了&#xff0c;感觉非常高端&#xff0c;在寒假的时候 winter homework中有一题是查找区间第K大的树&#xff0c;当时就开始百度这种网上的博客&#xff0c;发现主席树看不懂&#xff0c;因为那个root[i]&#xff0c;还有tx[x].l与tx[x].r是什么意思…

下拉菜单

<!Doctype html> <html> <head> <meta charset"utf-8"> <title>下拉菜单</title> <style> *{ margin:0; padding:0; } ul{ list-style:none; overflow:hidden; background-color:#333; } li{ float:left; } li a,.drop…

deepin下Clion连接mysql_CLion如何添加依赖库 ? 需要把mysql/Connector c++放入 用cpp连接数据库...

目前我把下载的mysql/Connector 下载后放在了project内 但是报错信息如下报错信息如下In file included from /Users/wsgdrfz/study/c/Libary_System/librarySystem/sqlConnection.h:/Users/wsgdrfz/study/c/Libary_System/librarySystem/sqlFiles/include/mysql_connection.h7…

[开源JVM] yvm - 自制Java虚拟机

中文 | English | | | YVM是用C写的一个Java虚拟机&#xff0c;现在支持Java大部分功能&#xff0c;以及一个基于标记清除算法的并发垃圾回收器. 不过还有很多bug等待修复。 感兴趣的朋友pull request/fork/star吧。 Github repo https://github.com/racaljk/yvm 已支持语言…