• 比较各JAX-RS实现:Jersey,Restlet,CXF,RESTEasy


    java rest 实现技术对比:

    http://news.misuland.com/20080926/1222396399411.html JavaSE/EE执行委员批准了JSR 311 JAX-RS作为支持RESTful web服务的java 应用程序接口。JAX-RS (Java平台上的REST支持规范 - aka JSR-311) 成为第一个到达提议为最终草案阶段的JavaEE 6的规范。查看Java规范需求点击: http://jcp.org/en/jsr/detail?id=311

    http://www.blogjava.net/xmatthew/archive/2008/10/21/235777.html 与其它规范发布一样,伴随此次发布,Sun同步发布该规范的参考实现项目jersey。最新版本为1.0。 为了让大家能快速体验Rest带给我们全新的架构风格,可以直接从本地下载程序。bookstore-1.0.war 源代码 bookmark-1.0-project.zip. 下面展示了一个代码片断,让大家直观感受一下。

    1 @Path("/bank")
    2 public class Bank {
    4      @POST
    5      @Path("/account/{name}")
    6     public Account createAccount(@PathParam("name") String name, 
    7              @QueryParam("balance")BigDecimal balance) {
    8         //
    9         return new Account(name, balance);
    10      }
    12      @GET
    13      @Path("/account/{name}")
    14     public Account getAccount(@PathParam("name") String name) {
    15         //
    16         return Account.getByName(name);
    17      }
    19 }

    上面的代码,就会发布两个资源服务:
    POST /bank/account/newAccount
    GET /bank/account/newAccount
    大家看到,用Rest发布资源服务非常方便。当然上面例子只是一个非常简单的示例,用于展示Rest的应用,也希望大家提出好的建议和意见。

    http://www.infoq.com/cn/news/2008/10/jaxrs-comparison 比较各JAX-RS实现

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

    • CXF——XFireCeltix的合并(一个由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方案并不如标注一样受欢迎,但它们可以用于更复杂的配置情况。 【虎.无名:静态配置用标注,动态配置用xml或者properties文件】

  • 相关阅读:
    智慧中控屏
    本地 Android repo 仓库迁移、恢复源码树
    排序——直接插入、折半插入、希尔排序
    偏振相关二元谐振光栅
    【Network】网络基础扫盲
    【华为OD机试真题 python】 运维日志排序【2022 Q4 | 100分】
    c++ 信奥赛编程 2049:【例5.19】字符串判等
    boost graph之bgl_named_params
    第十三章 配置 Apache 以与 Web 网关配合使用 (Windows) - 推荐选项:Apache API 模块 (CSPa24.dll)
    监听页面滚动位置定位底部按钮(包含页面初始化定位不对鼠标滑动生效的解决方案)
  • 原文地址:https://blog.csdn.net/m0_62089210/article/details/126565631