使用GlassFish 4.0测试驱动Java API以处理JSON

编写规范并为其做出贡献是一回事。 如果您想提供宝贵的反馈意见,请使用它并研究真实的示例。 最新推广的GlassFish构建包含重命名为4.0,我认为现在是对Java处理JSON(JSON-P)API进行测试的好时机。

获取启用了Java EE 7的GlassFish 4.0

首先要做的是从升级的版本中获取最新的启用Java EE 7的GlassFish 4.0的副本。 我正在使用GlassFish Server开源版4.0(内部版本77 ),它似乎非常稳定。 但是总的来说,如果您要尝试这样做,请记住,升级后的版本基本上是开发版本和不稳定版本的
GlassFish 4.0正在进行的工作。 抱怨他们没有多大意义。 将下载文件解压缩到合适的位置。 对于后续步骤,您需要更新modules目录中的JSON-P RI。 遵循Arun的博客,了解如何获取和构建JSON-P RI ,并将jsonp〜git \ impl \ target \ javax.json-1.0-SNAPSHOT.jar复制到glassfish4 \ glassfish \ modules \ javax.json.jar。 如果在此步骤中做错了什么,请确保制作一份原件的副本。 如果您对此感到不舒服,也可以稍后跳过它并选择其他依赖项……事实是,JSON-P API在过去几个月中发生了很大变化,GlassFish包含的b02不再适合给你看任何东西。 因此,现在,我们必须对其进行一些调整。 之后,您将可以将全新的GlassFish安装集成到您最喜欢的IDE(可能是NetBeans)中 。

创建一个新的Java EE 7项目

Java EE 7原型位于codehaus.org快照存储库中。 为了通过NetBeans有效地使用它,您必须在“ Maven存储库”下的“服务”选项卡上配置存储库。 存储库URL为https://nexus.codehaus.org/content/repositories/snapshots/。 处理索引可能需要一段时间。 之后,继续执行“新建项目> Maven>来自原型的项目”向导,并在搜索框中输入“ webapp-javaee7”。 选择0.1-快照,然后单击“完成”。 另外,您始终可以使用以下命令行:

mvn -DarchetypeGroupId=org.codehaus.mojo.archetypes -DarchetypeArtifactId=webapp-javaee7 -DarchetypeVersion=0.1-SNAPSHOT -DarchetypeRepository=https://nexus.codehaus.org/content/repositories/snapshots/ -DgroupId=net.eisele.sample -DartifactId=javaee7-jsonp -Dversion=1.0-SNAPSHOT -Dpackage=net.eisele.javaee7jsonp -Darchetype.interactive=false --batch-mode --update-snapshots archetype:generate

现在打开项目并编辑pom.xml。 将javaee-web-api的范围更改为提供的范围,并添加json-api依赖项,如下所示:

<dependencies><dependency><groupId>javax.json</groupId><artifactId>javax.json-api</artifactId><version>1.0-SNAPSHOT</version><scope>provided</scope></dependency><dependency><groupId>javax</groupId><artifactId>javaee-web-api</artifactId><version>7.0-b72</version><scope>provided</scope></dependency></dependencies>

请确保使用版本1.0-SNAPSHOT和_not_正式记录的1.0-b02 。 我们希望将第一段中构建的最新快照与所有新API一起使用。如果您决定不采用“以自己的方式构建”,则可以简单地使用maven Central的1.0-b04。 这也有效。 请确保完全具有此依存关系顺序。 如果没有,您将使用javaee-web-api依赖项随附的旧b02。 有人说过,Maven很简单吗? 现在就这样。 让我们创建一个简单的JAX-RS端点。

添加JAX-RS人员资源

首先要做的是编写基本的JAX-RS资源。 您可以通过NetBeans的“来自Pattern的RESTful Web服务”向导来完成此操作,也可以自己概述以下简短类:

@Path('person')
public class PersonResource {public PersonResource() {}@GET@Produces('application/json')public String getJson() {return '[]';}

该课程需要注册。 您可以使用Jerseys servlet机制来执行此操作,也可以使用特定于应用程序的ApplicationConfig自己注册它:

@javax.ws.rs.ApplicationPath('webresources')
public class ApplicationConfig extends Application {@Overridepublic Set<Class<?>> getClasses() {Set<Class<?>> resources = new java.util.HashSet<>();resources.add(net.eisele.javaee7jsonp.PersonResource.class);return resources;}
}

哇..这应该是目前为止。 您应该给它试驾。 将其部署到您的域,然后尝试http:// localhost:8080 / javaee7-jsonp / webresources / person。 它应该只打印空括号[]。 现在是时候添加一些JSON-P了。

使用JSON-P构建JSON对象

我们将使用基于DOM的API构建人的JSON表示形式。 用以下代码替换PersonResource中的return语句:

JsonObjectBuilder builder = Json.createObjectBuilder();builder.add('person', Json.createObjectBuilder().add('firstName', 'Markus').add('lastName', 'Eisele'));JsonObject result = builder.build();StringWriter sw = new StringWriter();try (JsonWriter writer = Json.createWriter(sw)) {writer.writeObject(result);}return sw.toString();

现在,让我们使用我最喜欢的Chrome扩展程序来看看我们拥有的功能:


显然可以。 反过来,这将意味着读取传入的JSON。 看起来可能如下所示:

String json = '{\n'+ '    \'person\': {\n'+ '        \'firstName\': \'Markus\',\n'+ '        \'lastName\': \'Eisele\'\n'+ '    }\n'+ '}';JsonReader jr = Json.createReader(new StringReader(json));JsonValue value = jr.readObject();jr.close();

除了DOM-API之外,您还拥有一个Streaming-API,该API使用

JsonGenerator generator = Json.createGenerator(new FileWriter(..))JsonParser parser = Json.createParser(new StringReader(...));

生成和解析JSON。 请查看最新的JavaDoc以获取完整参考。 继续尝试自己开车。

参考:来自JCG合作伙伴 Markus Eisele在企业软件开发和Java博客上测试了用于驱动GlassFish 4.0处理JSON的Java API 。

翻译自: https://www.javacodegeeks.com/2013/02/test-driving-java-api-for-processing-json-with-glassfish-4-0.html

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

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

相关文章

查询已有链表的hashmap_原创 | 面试不再慌,看完这篇保证让你写HashMap跟玩一样...

点击上方蓝色小字&#xff0c;关注“码农小黑屋”重磅干货&#xff0c;第一时间送达今天这篇文章给大家讲讲hashmap&#xff0c;这个号称是所有Java工程师都会的数据结构。为什么说是所有Java工程师都会呢&#xff0c;因为很简单&#xff0c;他们不会这个找不到工作。几乎所有面…

华为p40手机自带计算机,华为p40pro支持PC模式吗_华为p40pro能连接至电脑模式吗

华为p40pro支持PC模式吗&#xff1f;华为p40pro能连接至电脑模式吗&#xff1f;从前几年开始&#xff0c;就有部分华为手机可以支持PC模式了。这个模式在出差的时候还是很实用的&#xff0c;可以直接将手机上的内容投屏到投影仪等大屏设备上&#xff0c;不需要带笔记本电脑&…

的内怎么放_汽车后备箱的“四不放”原则,你知道吗?网友:怎么不早说

汽车已经开始存在在越来越多的家庭当中了&#xff0c;也正是因为这样&#xff0c;很多人会把汽车当做一个自己的家庭成员&#xff01;而在汽车的使用过程当中&#xff0c;汽车的后备箱往往是放的特别满的&#xff0c;以为这样可以备不时之需&#xff0c;但是老司机也告知大家&a…

as3 访问远程计算机,本地swf不能访问网络的解决办法

本地swf不能访问网络的解决办法作者&#xff1a;小龙博客 2011年03月21日  4条评论 分类&#xff1a;AS3 学习 flash 软件本地swf不能访问网络的解决办法&#xff1a;学习过http://www.lxlong.com/blog“)这样的代码&#xff0c;在测试影片时可以通过navigateToURL方法打开…

Java基础知识学习04-自定义类、ArrayList集合

类与对象 类是一个模子&#xff0c;确定对象将会拥有的特征&#xff08;属性&#xff09;和行为&#xff08;方法&#xff09;。 类的特征&#xff1a;类是对象的类型 具有相同属性和方法的一组对象的集合 类的组成&#xff1a;属性和方法 定义一个类&#xff1a;public class …

监视和管理GlassFish 3的多种方法

GlassFish 3支持多种监视和管理方法。 在本文中&#xff0c;我将简要介绍GlassFish提供的管理&#xff0c;监视和管理方法。 GlassFish管理控制台 GlassFish基于Web的管理控制台GUI可能是GlassFish管理最著名的界面。 默认情况下&#xff0c;运行GlassFish后&#xff0c;可通过…

幸运抽奖

var oPointerdocument.getElementsByTagName("img")[0];var oTurnabledocument.getElementsByTagName("img")[1];var cat15;//每个区域15度&#xff0c;一共24个区域var num0;var offOntrue;//是否正在抽奖//指针点击事件&#xff0c;开始抽奖oPointer.onc…

linux usleep 线程控制权_linux多线程同步—信号量

linux多线程编程-信号量信号量机制锁机制使用是有限制的&#xff0c;锁只有两种状态&#xff0c;即加锁和解锁&#xff0c;对于互斥的访问一个全局变量&#xff0c;这样的方式还可以对付&#xff0c;但是要是对于其他的临界资源&#xff0c;比如说多台打印机等&#xff0c;这种…

Django字段类型介绍

一&#xff0c;通过makemigrations&#xff0c;migrate来修改数据&#xff0c; 1.Django的ORM支持修改表结构&#xff0c;修改完以后&#xff0c;执行 python manage.py makemigrations python manage.py migrate 这两句&#xff0c;就会看到更新了。超过长度的数据就会丢了。…

input输入框的input事件和change事件

input输入框的onchange事件&#xff0c;要在 input 失去焦点的时候才会触发&#xff1b; 在输入框内容变化的时候不会触发change&#xff0c;当鼠标在其他地方点一下才会触发&#xff1b; onchange 事件也可用于单选框与复选框改变后触发的事件。 demo如下&#xff1a; <sc…

单例设计模式–内省和最佳实践

定义&#xff1a; Singleton是“ 四人帮”设计模式的一部分&#xff0c;它属于创新设计模式。 在本文中&#xff0c;我们将更深入地研究Singleton模式的用法。 就建模而言&#xff0c;它是最简单的设计模式之一&#xff0c;但另一方面&#xff0c;就使用的复杂性而言&#xff0…

修改用户名_Word办公技巧:如何更改文档修订者的用户名?

在一份文档需要多人参与修订的时候,每个审阅者将用户名改为自己的名字就可以方便地看出具体哪个参与者做了哪些改动。下面我们来学习一下更改修订者用户名的办法。 应用场景 下图文档中默认修订者用户名为"AutoBVT",接下来我们想将其改为"李小白"。 操作…

Java伪随机数生成器(PRNG)中的弱点

这将是Kai Michaelis&#xff0c;JrgSchwenk和我撰写的论文的总结&#xff0c;该论文在RSA Conference 2013的密码学家会议上发表 。 你可以得到我的演讲的幻灯片在这里和我们的全文在这里 。 我们对PRNG&#xff08;主要是SecureRandom&#xff09;附带的常见Java库生成的随机…

vue安装概要以及vue测试工具

一、概述 1、安装node&#xff0c;去node官网 2、新建一个项目&#xff0c;通过npm init命令初始化&#xff0c;即创建一个package.json文件 3、用命令 npm install vue -g 全局安装vue&#xff08;网上已经有详细的资料&#xff0c;在此就不复述了&#xff09; 二、vue测试…

linux安装与远程连接

1、在VMware上创建新的虚拟机&#xff0c;保证有linux版本的iso镜像文件 具体参考http://jingyan.baidu.com/article/eae0782787b4c01fec548535.html 2、进行切换用户 进行root用户的切换&#xff1a;   #su password: 进行普通用户的切换&#xff1a; #su username 3、编辑…

Spring框架:三种Spring Bean生命周期技术

当使用术语“生命周期”时&#xff0c;Spring的家伙指的是您的bean的构造和破坏&#xff0c;通常这与Spring Context的构造和破坏有关。 在某些情况下&#xff0c;Bean生命周期的管理不是一件容易的事&#xff0c;因为需要它执行自己的内部设置。 当您的bean必须与外部系统进行…

wincc客户机打开服务器文件通讯不上,wincc客户机连不上服务器

如果你计算机名称改正确了&#xff0c;检查一下安装OPC服务软件吗&#xff1f;比如SIMATIC NET。然后试一试下面方法能否解决:首先&#xff0c;设置一下PG/PC接口。方法:开始--设置--控制面板--设置PG/PC接口&#xff0c;在接口分配参数&#xff0c;选择你要的参数(根据你的情…

spring boot高性能实现二维码扫码登录(上)——单服务器版

前言 目前网页的主流登录方式是通过手机扫码二维码登录。我看了网上很多关于扫码登录博客后&#xff0c;发现基本思路大致是&#xff1a;打开网页&#xff0c;生成uuid&#xff0c;然后长连接请求后端并等待登录认证相应结果&#xff0c;而后端每个几百毫秒会循环查询数据库或r…

查看 固态硬盘位置_3米防摔+人脸/指纹解锁:西数Armorlock移动固态硬盘

要求快速而又安全的数据拷贝工具&#xff1f;指纹识别移动SSD大家应该都见过了&#xff0c;今天西数推出了一个更为特别的人脸/指纹识别加密移动SSD。G-Technology Armorlock使用AES256全盘加密固态硬盘中的数据&#xff0c;解锁方式不是常见的密码或自带指纹传感器&#xff0c…

web前端工程师全套教程免费分享

这是我自己早前听课时整理的前端全套知识点&#xff0c;适用于初学者&#xff0c;也可以适用于中级的程序员&#xff0c;你们可以下载下来。我自认为还是比较系统全面的&#xff0c;可以抵得上市场上90%的学习资料。讨厌那些随便乱写的资料还有拿出来卖钱的人&#xff01;在这里…