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

本文介绍了如何在启用Java EE 7的GlassFish 4.0上创建一个Java EE 7项目,添加JAX-RS资源,并使用JSON-P API构建JSON对象。通过更改pom.xml文件中的依赖项,作者演示了如何处理JSON并展示了使用DOM API创建JSON的示例。
摘要由CSDN通过智能技术生成

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

    @Override
    public 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值