写点什么

比较各 JAX-RS 实现

  • 2008-10-06
  • 本文字数:1509 字

    阅读完需:约 5 分钟

正如某人在别处说的,关于公交车,有一个奇怪的现象:你等了很久一辆不来,最后却一下来了三辆! JAX-RS 实现貌似也碰到了类似的问题。目前我们有:

  • CXF —— XFire Celtix 的合并(一个由 IONA 赞助的开源 ESB,最初寄存在 ObjectWeb 上)。
  • Jersey ——Sun 公司的 JAX-RS 参考实现。
  • RESTEasy ——JBoss 的 JAX-RS 项目。
  • Restlet ——也许是最早的 REST 框架了,它 JAX-RS 之前就有了。

尽管围绕着REST 存在各种各样的争论,但JAX-RS 提供了Java 语言所需的 REST 支持这一点是无可争议的。如果你是 REST 新手,你会选择哪种实现呢?嗯, Solomon Duskis 试图解答这一问题。他还在 dzone 上指出: > 我想就以下几个“纯”JAX-RS 以外的方面对各 JAX-RS 实现进行比较。

这些方面包括:

  • 产品成熟度
  • 服务端集成策略
  • Java 客户端 API
  • 可配置能力
  • 安全性
  • 性能

Solomon Duskis 说“Jersey 的用途是作为一个参考实现。RESTEasy 是新思想的游乐场。CXF 是在 IONA 支持下的‘企业版’。Restlet 项目诞生的目的是增加一种 RESTful API 选择。”然而,Bill Burke 在博客评论中反击道:

RESTEasy 不仅仅是新思想的游乐场。其实,我们将很快在 JBoss 里支持它(一拿到 TCK 就可以),而且我们很多大客户都在催促我们提供 RESTEasy 支持。

在易用性方面,Solomon Duskis 说: > 你所面临的问题是选择一种实现。我觉得 Jersey 的确很容易上手,不过 Bill Burke 会说 RESTEasy 同样很简单。它们都可以与 EJB 一起使用。 不过,使用 Jersey 的话,搭建与运行测试服务很容易,如果你下载 NetBeans 的话更是如此。我第一次用 Jersey 和 NetBeans 时,不到半个小时就测试并运行起来了,包括下载、安装及代码浏览等。

Sun 公司的人很想把 Jersey 与人们关于“参考实现”的传统看法区分开: > 你在谈到“产品用途”时,应当将 Jersey 看作一种立马可投入使用的产品(事实上下个月它就要随 GlassFish v3 Prelude 版捆绑发布了)。Jersey 团队花费了相当多的时间来测试并改善代码,以免去其作为“参考实现”的印象!:)

Solomon Duskis 打算对这几个方面进行研究,然后将结果发布在博客里。一篇名为《JAX-RS Spring 集成》的文章已经发布出来了。 > 现在的四种JAX-RS 实现均提供Spring 集成,连JBoss 的RESTEasy 都是。

接着,他对集成作了相当简短的介绍。不过正如 Paul 所指出的,Solomon Duskis 在讲述 Jersey 时引用的是过时的资料。这比较遗憾,因为我们需要的是一个深入彻底的比较。Solomon Duskis 最后说: > 四种实现均具有相当出色的 Spring/JAX-RS 能力,但我认为 CXF 是“JAX-RS 产品里 Spring 集成做得最好的”。

不过显然这只是他的个人看法,其他人肯定会有不同意见。比如 Bill Burke 就问道: > 我没看出 CXF 在 Spring 集成方面比其他产品优越在哪里。我不明白为什么所有额外的 CXF 专用 XML 都被放在一个 Spring XML 文档里。RESTEasy 和 Jersey 提供的 Spring 集成要比 CXF 的侵入性更小。如果我没搞错的话。

对此,Solomon Duskis 回复说: > 如果各个类有一个简单的配置,能够满足超过 90% 的需要,那么标注驱动的方法是可行的。剩下那不到 10% 的部分,需要在不同场合下对同一资源作不同配置。 我知道,根据我所更新的功能的需求与当前部署,我将会需要这种方案。为了通过同样的 Spring XML 文档来部署具有不同配置(如不同的 JDBC 数据源、不同的服务实现等等)的同一个资源,CXF 提供了额外的功能。基本上,大多数情况下,标注的办法是 很好的,但有时,你必须采用外部配置的办法来实现解耦(decoupling)。XML 方案并不如标注一样受欢迎,但它们可以用于更复杂的配置情况。

或许更深入的比较能够揭示出更多的东西来?查看英文原文: A Comparison of JAX-RS Implementations

2008-10-06 23:0613435
用户头像

发布了 63 篇内容, 共 25.9 次阅读, 收获喜欢 11 次。

关注

评论

发布
暂无评论
发现更多内容

TiDB 对大事务的简单拆分

TiDB 社区干货传送门

性能调优

TiDB 在 2021 易车 818 汽车狂欢节的应用

TiDB 社区干货传送门

实践案例

TiDB K8S 删除备份阻塞问题排查

TiDB 社区干货传送门

TiDB 底层架构 管理与运维

都是空格惹的祸

TiDB 社区干货传送门

扩容TIKV节点遇到的坑

TiDB 社区干货传送门

管理与运维

TiDB和MySQL的锁一些分析比对

TiDB 社区干货传送门

实践案例 TiDB 底层架构

【精选实践】58 集团的数据库技术选型思路

TiDB 社区干货传送门

数据库架构选型

TiDB在X86和ARM混合平台下的离线部署和升级

TiDB 社区干货传送门

安装 & 部署

SQLserver迁移TiDB场景的实践

TiDB 社区干货传送门

迁移 管理与运维

TiDB 集群跨平台在线迁移方案(离线环境下从 x86 节点迁移到 arm64 节点)

TiDB 社区干货传送门

管理与运维

【TiDB 最佳实践系列】海量 Region 集群调优

TiDB 社区干货传送门

实践案例

生产环境 TiDB V5.0.3 集群部署

TiDB 社区干货传送门

实践案例

TiDB for PostgreSQL 学习指南

TiDB 社区干货传送门

实践案例 管理与运维

使用 TiCDC 实时同步 TiDB 数据到备用逃生环境的实践

TiDB 社区干货传送门

实践案例 安装 & 部署

【SOP 系列 19】region 分布不均问题排查及解决不完全指南

TiDB 社区干货传送门

管理与运维

TiDB SQL 自动重试调研

TiDB 社区干货传送门

TiDB 底层架构

TiDB 入门运维基础教程(二)--生产环境安装

TiDB 社区干货传送门

安装 & 部署

TiDB 集群跨平台在线迁移方案(离线环境下从 x86 节点迁移到 arm64 节点)

TiDB 社区干货传送门

管理与运维

社区资源这么丰富我们怎么抄作业

TiDB 社区干货传送门

TiDB集群的GC不回收案例(案情二)

TiDB 社区干货传送门

故障排查/诊断

【TiDB CPU使用率过高之一】Scheduler worker CPU

TiDB 社区干货传送门

实践案例

SQL上线引发的血案

TiDB 社区干货传送门

伴鱼数据库之性能大盘

TiDB 社区干货传送门

【联合方案】神州信息 - 新一代分布式网贷系统

TiDB 社区干货传送门

实践案例

从TiDB中学习代码提交规范的重要性

TiDB 社区干货传送门

TiDB 底层架构

TiDB 配置参数修改与系统变量修改步骤

TiDB 社区干货传送门

实践案例

TiDB SQL调优实战——索引问题

TiDB 社区干货传送门

性能调优 实践案例

TIDB:分布式事务算法Percolator学习笔记

TiDB 社区干货传送门

TiDB 底层架构

干货分享丨携程国际业务动态实时标签处理平台实践

TiDB 社区干货传送门

实践案例

TiDB K8S 定时备份状态异常问题排查

TiDB 社区干货传送门

管理与运维

TiDB 集群 TiKV 节点内存占用较高问题排查

TiDB 社区干货传送门

故障排查/诊断

比较各JAX-RS实现_SOA_Mark Little_InfoQ精选文章