编写规范并为其做出贡献是一回事。 如果您想提供宝贵的反馈意见,请使用它并研究真实的示例。 最新推广的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

使用GlassFish 4.0测试驱动Java API以处理JSON相关推荐

  1. 接口模糊测试工具java,api 接口 fuzz 测试初探

    Alt pic 目标 在日常测试工作中,经常会有api接口的测试,除了正向流程的测试之外,我们经常还需要覆盖一些异常情况. 例如: 不合法字符串 字符串超长 应该是数字类型的,传入了字母 参数为空 传 ...

  2. 【hadoop2.6.0】利用Hadoop的 Java API

    Hadoop2.6.0的所有Java API都在 http://hadoop.apache.org/docs/r2.6.0/api/overview-summary.html 里. 下面实现一个利用J ...

  3. java编写应用程序_使用Java API编写应用程序

    java编写应用程序 总览 介绍 DB2JSON可用于DB2 Linux,Unix和Windows 10.5以及用于z / OS V3.1的IBM DB2 Accessories Suite与DB2 ...

  4. 【六】ElasticSearch8.x Java API 实体类、工具类、测试类及常见问题

    ES 8.x 新版本中,Type 概念被弃用,所以新版 JavaAPI 也相应做出了改变,使用更加简便.ES 官方从 7.15 起开始建议使用新的 JavaAPI 1.依赖 <!-- elast ...

  5. 阿里云服务器Hadoop java api 上传文件报错 could only be written to 0 of the 1 minReplication nodes.

    问题描述 阿里云服务器命令行使用命令可以上传文件,但HDFS java API上传失败,上传后只有文件名没有数据 报错: could only be written to 0 of the 1 min ...

  6. Elasticsearch8.0版本中Elasticsearch Java API Client客户端的基本使用方法

    关于Elasticsearch Java API Client客户端如何连接以及如何对索引和文档进行基本的增删改查操作请查看我的上一篇博文:Elasticsearch RestHighLevelCli ...

  7. glassfish 4配置_自己构建GlassFish 4.0快照

    glassfish 4配置 这篇文章是关于自己发布GlassFish 4.0快照的,其中包括一些黑客. 我找到了GlassFish FullBuild的官方说明,然后决定自己构建服务器. 有时,您可能 ...

  8. 自己构建GlassFish 4.0快照

    这篇文章是关于自己发布GlassFish 4.0快照的,其中包括一些黑客. 我找到了GlassFish FullBuild的官方说明,然后决定自己构建服务器. 有时,您可能不想等待团队升级GlassF ...

  9. 项目1:基于Java API文档制作的搜索引擎

    目录 一.搜索引擎相关概念 1.1 认识搜索引擎 1.2 搜索引擎的本质 1.3 搜索的思路 1.3.1  暴力搜索 1.3.2  倒排索引 1.4 项目目标 二.实现思路和前期准备 2.1 项目模块 ...

最新文章

  1. Ubuntu 14.04 64位字体美化(使用文泉驿微黑)
  2. 企业管理:高层不狠,中层不坏,累死三军
  3. JetBrains——账户登录错误(JetBrains Account Error:JetBrains Account connection error: www.jetbrains.com)解决方案
  4. Linux下c开发 之 线程通信(转)
  5. 面试加分项!Android权限处理,手慢无
  6. 商业计划书PPT模板
  7. 2022全新抖音二维码生成工具源码+亲测可用
  8. SQL的常见函数的使用方法和举例说明
  9. 融合注意力机制和Bi-LSTM的旅游评价情感分析模型
  10. keras使用VGG19网络模型实现风格迁移
  11. 王子救公主(DFS)
  12. ParaView-2
  13. Winlogon通知包(Winlogon Notification Package)
  14. VBA 类模块理解和使用总结
  15. JAVA程序之矩形、三角形、平行四边形、菱形
  16. 软件质量保障实践合集
  17. html css插图片不显示,新手问个比较弱智的问题我用img标签插入图片显示不出来时怎么回事?_html/css_WEB-ITnose...
  18. 矮人DOS工具箱4.2版
  19. 小程序搜索框组件,带历史记录和搜索推荐。
  20. linux挂载opt磁盘,centos挂载硬盘到opt

热门文章

  1. 学院派 实践派 计算机科学与技术,饶旻现场为boss所在企业“挑错”
  2. php事件编程,PHP相应button中onclick事件的案例分析
  3. 8.1-CPU结构(学习笔记)
  4. 转:线性代数知识汇总
  5. java流与文件——内存映射文件
  6. sap wad_使用网真和WAD热部署Kubernetes
  7. jpa映射json_如何使用JPA和Hibernate映射JSON集合
  8. packt_Packt和Java Code Geeks提供的$ 5 Java编程书籍!
  9. hibernate 别名_Hibernate:在sqlRestriction上使用联接表别名
  10. drill apache_Apache Drill:如何创建新功能?