【问题标题】:How to call a JSON Rest web service with Tomee 1.6如何使用 Tomee 1.6 调用 JSON Rest Web 服务
【发布时间】:2016-09-06 08:35:36
【问题描述】:

我的应用程序在 Tomee plus 1.6 JEE 服务器上运行。 我需要调用一个 RS WS,它将返回一个格式为 JSon 字符串的对象。

我可以通过 openConnection("url") 和手动解析响应来做到这一点。但我认为在 JEE 环境中有更高的方法可以做到这一点。 问题是我找到了很多关于如何编写 Restful WS 的教程,但很少有关于如何调用它们的教程。此外,每次都有几个库要添加到 Tomee 服务器(Jackson,...)。

我的问题是:

  • 是否有任何标准方法来调用没有库要添加的 WS?我认为必须有一个,因为 Tomee plus 应该是一个完整的 JEE 服务器。
  • 怎么做?

感谢您的帮助。

【问题讨论】:

  • 如果你使用的是spring,那么你可以使用RestTemplate。如果不是,那么我建议查看 HttpClient,然后使用 JSON 解析器将 json 转换为对象。

标签: java json web-services rest apache-tomee


【解决方案1】:

如果您不在 tomee 7 但仍然在 tomee 1 上,您可以使用 CXF WebClient 来执行此操作。 TomEE 7 允许您使用标准 JAX-RS 2 客户端(EE 7 的一部分),但不在 TomEE 1 (EE 6) 中

【讨论】:

    【解决方案2】:

    现在有很多选项可以在 Java 中使用 REST 应用程序。当前标准是在 JAX-RS 2.0 中发布的 JAX-RS Client API,它是 Java EE 7 API 的一部分。

    重要提示:一旦您使用经过 Java EE 6 认证的 Apache TomEE 1.6.0,您将无法使用 JAX-RS 客户端 API。继续阅读。

    JAX-RS 客户端 API

    JSR 339 中定义并作为 Java EE 7 API 的一部分发布的 JAX-RS 客户端 API(javax.ws.rs.client 包)是在 Java 中使用 REST Web 服务的标准方式。除此之外,该规范由JerseyRESTEasyApache CXF实现。

    供应商特定的代理框架

    JerseyRESTEasyApache CXF 都提供代理框架 API。这些 API 是特定于供应商的,不是 JAX-RS 客户端 API 的一部分。

    基本思想是您可以附加standard JAX-RS annotations to an interface,然后在服务器端通过资源类实现该接口,同时通过使用java.lang.reflect.Proxy调用正确的低级客户端 API 方法。

    欲了解更多详情,请查看以下内容:

    其他资源

    以下是您可以考虑替代 JAX-RS 客户端 API 的一些其他选项:


    Apache CXF WebClient API: 它随 Apache TomEE 1.6.0 一起提供。在cxf-rt-frontend-jaxrs.jar 中,您将找到WebClient 类,它是客户端API 的入口点。

    【讨论】:

      【解决方案3】:

      非常感谢您的帮助。

      最后,我决定使用标准的 JAX-RS API,但由于它还没有在 Tomee 1.6 中发布,我不得不在服务器的 lib 目录中添加一个 jar 文件: javax.json-1.0.4.jar,我从Oracle网站下载的。

      为了编译我的项目,我不得不使用另一个 jar 文件:javax.json-api-1.0.4.jar

      【讨论】:

        【解决方案4】:

        由于您提到您使用的是 TomEE plus 1.6,因此您已经拥有可用于访问 REST WS 的 JAX-RS 客户端(参考:Apache TomEE)。

        javax.ws.rs.client 可用于调用 REST 服务并接收响应。更详细的教程可以在Oracle Site找到。

        编辑:错过了版本号部分。 API 在 1.7 中可用。

        【讨论】:

        • 不正确! JAX-RS 客户端 API 在 JAX-RS 2.0 中发布,它是 Java EE 7 API 的一部分。 Apache TomEE 1.6.0 已通过 Java EE 6 认证。因此,JAX-RS 客户端 API 在 Apache TomEE 1.6.0 中不可用。查看我的answer 了解更多详情。
        • @CássioMazzochiMolin 你是对的。我编辑了答案。
        • 它没有回答这个问题。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-02
        • 1970-01-01
        • 2015-03-11
        • 2014-02-24
        • 2016-08-26
        相关资源
        最近更新 更多