75

我刚听说Apache Wink,我想知道它与JerseyJBoss RESTEasy相比有什么不同。有什么可以做其他两个做不到的?

我们一直将 Jersey 用于我们的一些内部项目,主要是因为它很简单,但我真的不知道是什么让另外两个更好,我会考虑切换。有没有人有任何用例来满足每个细分市场的需求?

4

4 回答 4

114

JAX-RS 实现

球衣

  • 参考实现
  • 通常是最前沿的
  • 通过Atmosphere或 2.0 版本支持真正的异步(即 Web 套接字等)连接。
  • 支持 Spring 和标准注入容器(即@Inject)。
  • Glassfish 将其捆绑在一起。
  • 它比其他 JAX-RS 项目更加模块化。
  • 它有一个踢屁股的URI Builder
  • 不一定需要 servlet 容器。
  • 灰熊支持
  • Netty 支持(很早)。
  • 大摇大摆的支持
  • 有点缺少 OAuth 2.0 。您将不得不使用其他库。
  • 通过Viewables支持一些 MVC
  • 托管在 java.net 上(一个减号,因为该站点有时非常慢)。
  • 许可基于 CCDL 1.1 和 GPL-v2。请确保在将其用于商业用途之前检查泽西许可

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

高枕无忧

Apache Wink (从未使用过)

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

雷斯特莱特

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

阿帕奇 CXF

  • 一些有趣的 WADL 支持。
  • 重用和/或结合 JAX-RS 与 JAX-WS
  • 安全支持
  • 与 Spring 集成,尽管有点讨厌
  • 假设自动生成客户端存根

其他类 RPC 系统

消息队列

异步 RPC

我的拙见

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

如果它必须是经典的 HTTP REST(外部),我会在RestEasyJersey之间进行选择,因为大部分精力都投入到这两个项目中。

另请参阅:Java 的 Rest 客户端?

于 2012-06-06T20:53:57.003 回答
15

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

Only one JAX-RS Application Class allowed

这是因为 REST Easy 与 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

于 2013-03-22T11:24:50.767 回答
5

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

于 2010-08-18T13:25:54.770 回答
1

如果要使用 JBoss 7.x,则必须使用 RestEasy,因为它已集成在 JBoss 中。要将 Jersey 与 JBoss 7.x 一起使用,您必须禁用 RestEasy,这很复杂!

于 2012-12-06T16:21:50.970 回答