我们正在研究使用哪个 REST 框架以及在哪里运行它。
给定现有的 WebSphere (6.1.0.17) 环境,您会使用 Jersey of Wink 吗?
或者你会推荐一个不同的平台?
我们正在研究使用哪个 REST 框架以及在哪里运行它。
给定现有的 WebSphere (6.1.0.17) 环境,您会使用 Jersey of Wink 吗?
或者你会推荐一个不同的平台?
作为第三种选择,为什么不在Spring MCV 中使用 Spring 自己的 RESTful 特性。这很容易编码、测试和维护,并且(显然)适用于 Spring 开箱即用。基于 Spring REST 管理代码的便利性归功于基于 MVC、IoC 和注释的架构。您可以选择一流的解决方案来增强您的解决方案,例如用于序列化的 XStream、Jackson JSON 支持以及用于 REST 客户端或单元测试的 Springs 自己的 REST 模板。
Spring MVC 的 REST 特性的核心是将 REST 作为架构而不是协议来处理,并将其与其他经过验证的方法(如 IoC 和 MVC)很好地融合在一起。在考虑框架时,以下 REST 试金石测试很有用:请参阅 innoq.com/blog/st/2010/07/rest_litmus_test_for_web_frame.html.Springs 方法检查更多框,这要归功于它有效的内容交付。
所有这些框架都依赖于 HATEOAS 支持,这是一种 REST 响应包含与客户端当前可以从此资源执行的所有操作相对应的链接的方式。大多数框架都承诺很快就会引入这一点,但需要批判性的眼光来理解最好的方法是什么。
在交付诸如 Wink 和 Jersey 之类的 JAX-RS 解决方案时,我发现更多地强调符合 Java 标准,而架构的灵活性较低(例如使用其他 3rd 方包)。如果要求符合 JAX-RS,请考虑 Restlets、Wink 或 Jersey。否则,也许值得考虑 Spring MVC 的 REST 支持。
我已经将这种解决方案部署到 WAS 7,没有任何问题或依赖冲突。
我没有使用 Wink 的经验,但我可以分享一些我在 Websphere 上使用 Jersey 的经验。
专业人士...非常易于使用,我花了 5 分钟时间熟悉,我已经准备好编写我的第一个 hello world。Jersey 确实会根据您的包自动为您生成WADLResources
,尽管它非常基本......但您可以自己自定义 WADL 文档。
缺点...叹息,我喜欢泽西岛,但有了 Websphere,它几乎让我哭了。首先(这与 Websphere 无关),我在我的项目中使用 Spring,我使用的 Jersey 版本是 1.2。问题是发布使用的是 Spring 2.5,而我使用的是 Spring 3.x。所以,我拿出了 Jersey 的 Spring 2.5 来使用 Spring 3.x。一切正常。然而,Jersey 测试框架开始失败。我无法再启动内置的 Grizzly 服务器来测试我的 Web 服务了。其次,我目前与使用 JDK 5 的 Websphere 6.1 相关联。我相信 1.2 之后的所有 Jersey 版本都是使用 JDK 6 编译的……这意味着,在我的公司升级到 WAS 7 之前,我很不走运。
它确实是一个非常稳定的 Rest 框架,非常易于使用......但就我而言,我只是感到沮丧,因为我将 Spring 版本升级到 3.x,因此当前所有现有的 Web 服务单元测试都被注释掉了. 我确信最新的 Jersey 版本现在应该使用 Spring 3.x,但我不能使用它们,因为我仍在 WAS 6.1 中使用 JDK 5。
所以,由你决定。顺便说一句,我在 WAS 6.1 中运行的项目中仍在使用 Jersey 1.2。
在 websphere 6.x 上,首选方法是 jersey,因为它更易于实现并且支持 JAX-RS 1 和 2。(注意 JVM 版本问题,Websphere 6 可能不支持最新版本)
现在从 Websphere 8.x 开始,IBM 引入了 Apache Wink,如果与 jersery 一起使用,它实际上会带来依赖性和类加载器问题(因为 JAX-RS 1 和 2 的接口实现相同)。
有很多关于如何克服这个问题并使其工作的例子,但我不认为这是值得的,也许 Wink 在 websphere 中会有更好的性能。
IBM 建议使用 Apache wink。事实上,IBM 有自己的 Apache wink 实现。