如何在 Jersey、 ApacheWink 和 JBossRESTEasy 之间做出选择?

我刚刚听说了 阿帕奇眨眼,我想知道它与 新泽西JBoss RESTEasy有什么不同。一个人能做什么其他两个人做不到的?

我们已经在一些内部项目中使用 Jersey,主要是因为它的简单性,但是我实在想不出是什么让这两个项目更好,我会考虑切换它们。是否有任何人有任何用例,其中每个利基填补?

52600 次浏览

我最喜欢的 新泽西扩展之一是 Viewables。可视化允许您轻松地将数据绑定到 JSP 页面,以实现真正的模型-视图-控制器(Model-View-Controller,MVC)架构:

JAX-RS 实现

新泽西

  • 参考实施
  • 通常是最尖端的
  • 通过 气氛或2.0版本支持真正的异步连接(即 Web 套接字等)。
  • 支持 Spring 和标准注入容器(即@Inject)。
  • 玻璃鱼把它捆起来。
  • 它比其他 JAX-RS 项目模块化得多。
  • 它有一个牛逼的 URI 生成器
  • 不一定需要 servlet 容器。
  • 灰熊支持
  • 网络支持(非常早)。
  • 大摇大摆的支持
  • 有点缺少 OAuth 2.0。您必须使用其他库。
  • 通过 可视化提供一些 MVC 支持
  • 在 java.net 上托管(由于网站有时速度非常慢,所以是一个减号)。
  • 许可基于 CCDL 1.1和 GPL-v2。请确保您检查新泽西州的许可证,然后再将其用于商业用途

Https://jersey.github.io/license.html

RestEasy

阿帕奇眨眼 (从未使用过)

  • 我不知道这个项目为什么存在。
  • 据说它的高性能集中在。
  • 它有一个构建在 HttpUrlConnection 之上的客户端(这是一个负号... ... 它应该像 Spring RestTemplate一样是可插的)。
  • 基本上 Wink 是在一些企业公司内部开发的,然后交给了 Apache。
  • 需要一个 servlet 容器。

Restlet

  • 非常强大,但也非常复杂
  • 提供一些低级 REST 支持
  • 不需要 servlet 容器

Apache CXF

  • 一些有趣的 WADL 支持。
  • 重用和组合 JAX-RS w/JAX-WS
  • 安保支持
  • 集成 w/Spring 虽然有点讨厌
  • 客户端存根的自动生成

其他类 RPC 系统

消息队列

异步 RPC

恕我直言

我知道 OP 要求使用 REST,但是如果这是为了内部通信,那么认真考虑使用消息队列或其他异步 RPC (Finagle)来代替传统的 REST,如果您的需求与这些系统匹配的话。

如果必须是经典的 HTTP REST (外部) ,我会在 RestEasy新泽西之间做出选择,因为大量的思想共享被放入这两个项目中。

另见: 休息客户端的 Java?

如果要使用 JBoss 7.x,必须使用 RestEasy,因为它集成在 JBoss 中。要在 JBoss 7.x 中使用 Jersey,必须禁用 RestEasy,而且这很复杂!

在选择要使用的实现时,请记住: 如果您试图将 Jersey Web 服务部署到 JBOSS 7.1,它将无法工作。这个错误将会发生:

Only one JAX-RS Application Class allowed

这是因为 RESTEasy 与 JBOSS 捆绑在一起,作为默认的 JAX-RS 实现。因此,JBOSS 将决定这是您想要使用的实现,而不会加载另一个 JAX-RS 实现(如 Jersey)。为了解决这个问题,您需要在 web.xml 文件中添加以下代码行:

  <context-param>
<param-name>resteasy.scan</param-name>
<param-value>false</param-value>
</context-param>
<context-param>
<param-name>resteasy.scan.providers</param-name>
<param-value>false</param-value>
</context-param>
<context-param>
<param-name>resteasy.scan.resources</param-name>
<param-value>false</param-value>
</context-param>

链接: https://community.jboss.org/message/744530