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

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

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

相关文章

OpenCV copyMakeBorder()来拓展边界

使用OpenCV提供的函数copyMakeBorder()来拓展边界&#xff0c;其原型如下 void copyMakeBorder( InputArray src, OutputArray dst,int top, int bottom, int left, int right, int borderType,const Scalar& value Scalar())​ src&#xff1a;输入的数组。 dst&…

Flutter-现有iOS工程引入Flutter

前言 Flutter 是一个很有潜力的框架&#xff0c;但是目前使用Flutter的APP并不算很多&#xff0c;相关资料并不丰富&#xff0c;介绍现有工程引入Flutter的相关文章也比较少。项目从零开始&#xff0c;引入Flutter操作比较简单&#xff0c;但是现有工程引入Flutter 需要费很多精…

python有什么隐藏功能_Python的隐藏功能

文章目录Python编程语言的鲜为人知的但有用的功能是什么&#xff1f;尝试限制Python核心的答案。每个答案的一个功能给出一个功能的例子和简短描述&#xff0c;而不仅仅是文档的链接。使用标题作为第一行标记该功能。Quick links to answers:Chaining comparison operators:>…

Spring Boot –适合您的靴子!

您需要一点弹簧吗&#xff1f; 厌倦了所有繁琐的Web服务器并部署WAR文件&#xff1f; 好吧&#xff0c;你很幸运。 Spring Boot对构建可用于生产的Spring应用程序持坚定态度。 Spring Boot倾向于使用约定而非配置&#xff0c;它旨在使您尽快启动并运行。 在此博客中&#xff0…

OpenCV 像素的读取与操作

像素读取和操作 1. 利用cv::Mat的at函数&#xff0c;直接访问具体地址 void get_setImagePixel(char *imagePath, int x, int y){// Mat image imread(imagePath , 0);Mat image imread(imagePath, 1);//得宽高int w image.cols;int h image.rows;int channels image.c…

[http]HTTP状态码含义

HTTP状态码 当浏览者访问一个网页时&#xff0c;浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前&#xff0c;此网页所在的服务器会返回一个包含HTTP状态码的信息头&#xff08;server header&#xff09;用以响应浏览器的请求。 HTTP状态码的英文为HTTP …

不等式约束的拉格朗日乘数法_Abaqus血管支架仿真|接触约束执行方式

根据支架的建模基础、几何和网格划分、单元选择、材料和截面属性、分析步设置、载荷接触和约束、收敛调整&#xff0c;以及后处理、参数优化等内容。接着Abaqus血管支架仿真|建模基础、Abaqus血管支架仿真|几何和网格划分、Abaqus血管支架仿真|单元选择、Abaqus血管支架仿真|材…

OpenCV形态学运算

1.OpenCV形态学运算morphologyEx&#xff08;开运算 、闭运算 、形态学梯度 、顶帽运算 、黑帽运算 、腐蚀运算 、膨胀运算 、击中击不中运算&#xff09; void cv::morphologyEx (InputArray src,OutputArray dst,int op,InputArray kernel,Point anchor Point(-1,-1),int …

python判断成绩等级_Python计算山东新高考选考科目卷面原始成绩为等级成绩

原标题&#xff1a;Python计算山东新高考选考科目卷面原始成绩为等级成绩图书详情&#xff1a;配套资源&#xff1a;用书教师可以免费获取教学大纲、教案、课件、源码、习题答案、课堂管理与考试系统。山东省新高考政策33中&#xff0c;考生必考科目有语文、数学、英语&#xf…

java web ee_Java EE 6 Web配置文件。 在云上。 简单。

java web eeJava SE还可以。 Java EE是邪恶的。 这就是我一直想的。 好吧&#xff0c;现在不再了。 让我分享我的经验。 几周前&#xff0c;我开始考虑将旧版spring hibernate tomcat应用程序移植到新平台上&#xff1a; SAP NetWeaver云 。 我知道您在极客那里的想法&…

帆软报表(finereport) 饼图联动

饼图联动&#xff1a;点击饼图1&#xff0c;饼图2和饼图3显示饼图1的关联数据&#xff0c;接着点击饼图2&#xff0c;饼图3显示饼图2的关联数据&#xff0c;点击上方清除级联&#xff0c;饼图则恢复默认展示状态 下面以上图示例效果为例&#xff0c;说明制作过程。 1.为每个饼图…

中值滤波medianBlur

C: void medianBlur(InputArray src, OutputArray dst, int ksize) 参数解释&#xff1a; . InputArray src: 输入图像&#xff0c;图像为1、3、4通道的图像&#xff0c;当模板尺寸为3或5时&#xff0c;图像深度只能为CV_8U、CV_16U、CV_32F中的一个&#xff0c;如而对于较大…

wxpython下载缓慢_我可以在wxPython的wx.grid.Grid中加速优化GridCellAttr的使用吗?

设置单元格属性将新GridCellAttr添加到GridCellAttrProvider名单。 随着列表的增长&#xff0c;查找单元格的特定属性(通过遍历列表和比较坐标)变得越来越慢。您可以尝试通过PyGridTableBase.SetAttr和GetAttr(例如使用字典)实现自己的加快步伐&#xff1a;编辑&#xff1a;更新…

特性和混入不是面向对象的

让我立刻说&#xff0c;我们将在这里讨论的功能是那些迫切需要进行放线手术的人带给面向对象编程的纯粹的毒药 &#xff0c;就像David West在他的《 Objecting Thought》一书中所建议的那样。 这些功能具有不同的名称&#xff0c;但最常见的是traits和mixins 。 我很不明白&…

模板匹配matchTemplate

C: void matchTemplate(InputArray image, InputArray templ, OutputArray result, int method); image&#xff1a;输入图像。必须为8位或者32位的浮点型。 templ&#xff1a;用于搜索的模板图像。必须小于输入图像并且是一样的数据类型。 result&#xff1a;匹配…

pandas处理csv

import pandas as pd from pandas import Series,DataFrame 打开csv文件 deli pd.read_csv(../得力.csv) 转换为DataFrame数据类型 df DataFrame(datadeli) 更改列名 df.rename(columns{"title":"商品名称","price":"价格","pr…

php 随机在文章中添加锚文本_SEO站长布局锚文本时的7大注意事项

通过对什么是锚文本链接、锚文本作用的讲解&#xff0c;以及怎样布局网站站内锚文本的介绍。相信大家都有了比较清晰的认识&#xff0c;也会重视网站锚文本的建设。但是菜鸟菌还是不得不再啰嗦点&#xff0c;锚文本虽然好处大大的&#xff0c;在布局锚文本的时候还是注意以下几…

OpenCV rectangle

void rectangle(Mat& img, Point pt1,Point pt2,const Scalar& color, int thickness1, int lineType8, int shift0) img 图像. pt1 矩形的一个顶点。 pt2 矩形对角线上的另一个顶点 color 线条颜色 (RGB) 或亮度&#xff08;灰度图像 &#xff09;(grayscale image…

【Java】NIO中Selector的select方法源码分析

该篇博客的有些内容和在之前介绍过了&#xff0c;在这里再次涉及到的就不详细说了&#xff0c;如果有不理解请看【Java】NIO中Channel的注册源码分析&#xff0c; 【Java】NIO中Selector的创建源码分析 Selector的创建在Windows下默认生成WindowsSelectorImpl对象&#xff0c;那…

简单小程序代码_小程序该如何运营

小型程序升级有三种最重要的方法&#xff1a;1.借助微信附近小程序功能实现客户扩展大家可能都知道&#xff0c;微信平台具有附近小程序的功能。此功能使用户可以查看周围五公里范围内的所有小程序。正是由于这个原因&#xff0c;一旦商人完成了这个小程序并加入了附近的小程序…