【问题标题】:RESTful Web Development With Java EE 6 - what are the options?使用 Java EE 6 进行 RESTful Web 开发 - 有哪些选项?
【发布时间】:2011-04-16 20:06:21
【问题描述】:

我正在尝试找出使用 Java EE 6 开发 RESTful Web 应用程序的最佳选择。例如,我希望能够像这样解释 URL:

GET www.myapp.com/customers/1 - 返回一个网页,显示有关 id 为 1 的客户的详细信息。

我能想到的只有两个选项

  1. 使用 Spring MVC 3
  2. 使用允许您呈现视图的 JAX-RS 规范 - 我听说 RESTEasy 与 Spring MVC 集成?

是否有任何其他框架可以让您开发这样的 Web 应用程序?此外,我非常感谢您了解为什么一个框架可能比另一个框架更好。

我的另一个考虑是您可以在框架中使用哪些视图技术?我听说许多视图技术与 Spring MVC 集成,例如 Velocity 和 Tapestry ......这些很容易集成还是会遇到很多问题?一个必要条件是我需要模板(如 ASP.NET 中的母版页)。

我对 Java EE 世界还很陌生——我习惯了微软,他们给你一个选择。我是 ASP.NET MVC 的忠实粉丝——在 Java 世界中是否有类似的东西(或者是 Spring MVC 吗?)。

我不习惯所有这些选择...帮助!

感谢您的任何意见/建议。

【问题讨论】:

  • 我不会深入讨论这个(太主观了),但我只想说:Spring MVC 不是 Java EE 的一部分。 Spring 是一个独立的第 3 方框架,可以在 Java EE 之上使用。顺便说一句,ASP.NET MVC 的 Java EE 对应物是 JSF(JavaServer Faces)。另请参阅this answer。
  • 我知道这一点。我愿意使用将与 Java EE 集成的第三方框架。我研究过 JSF,但我听说如果你想遵循 RESTful 风格的开发,它不是很好?
  • 不,JSF 更适合 UI,而不是 REST 服务。有extensions 可以使 URL 更漂亮(如果那是毕竟你想要的),但这并不能使 JSF 成为一个完全值得的 REST 框架。对于真正的 REST 服务,我个人建议使用 JAX-RS。
  • PrettyFaces 看起来很酷,而 JSF 的问题之一是丑陋的 URL。我可能需要仔细研究 JSF...

标签: rest jakarta-ee java-ee-6 web-frameworks


【解决方案1】:

我建议你看看:

(不过有一个问题:为什么您需要能够与 Java EE 集成?)

编辑:如果您绝对想使用 Java EE API,那么正如 BalusC 所提到的,JAX-RS 是您选择的解决方案。 Restlet 和 Jersey 都支持它。我不知道 RESTEasy,但 JAX-RS 维基百科页面提到它。

【讨论】:

  • RESTLet 看起来很有趣
  • 嗯,我想使用 Java EE 6 - 我喜欢 API 的外观,我只是不想使用 JSF。
  • 在 REST 和视图组件之间,您似乎有点困惑。无论如何,我更新了我的答案,我想说你应该给 RESTLet 一个机会,或者另一个 JAX-RS 兼容框架)。
  • 我会推荐 RestEasy (jar-rs + jax-b) 而不是 RestLet。我对 RestEasy 的体验更好,使用 RestLet 我过去遇到过一些问题(稳定版本中的错误,缺乏文档)
【解决方案2】:

它不是 JavaEE,只是 JavaSE(有人可能会说这是一件好事),但 Play Framework 是 RESTful,在我看来也很好用。

【讨论】:

  • 我看过 Play... 看起来真的很酷。让我想起了很多 Ruby on Rails(我真的很喜欢)。您似乎无法使用 Java EE(例如 EJB 3.1、JPA2)等。
  • 它提供了对 JPA 的访问,但是很多其他 Java EE 东西不可用——这就是我喜欢它的原因;)最好的办法是查看他们网站上的演示视频,因为它是很好地概述了那里的内容-粗略地说,如果它不在视频中,则它不在 Play 中。还有许多其他技术(包括 JMS 和 Spring)的插件。老实说,除非您正在构建一个庞大的企业应用程序,否则 Play 可能会完成这项工作。不过学习 Java EE 没有什么好处!
【解决方案3】:

我决定使用 Spring MVC。我没有选择 JSF 2,因为它不是非常 RESTful - 获取 RESTful URL(必须使用插件)似乎需要做很多工作,它拥有状态服务器端,并且它不是面向操作的。 Play 似乎是一个非常酷的框架,但它还不够成熟,我无法证明使用它是合理的(我仍然不确定你是否可以将 Java EE 与它一起使用)。

Spring MVC 3 允许您以 RESTful 方式映射您的 URL,并且是面向操作的 - 我更喜欢这一点。

我正在研究 Grails,它看起来很有前途,但仍然相对较新,而且它看起来还不支持 Java EE 6。

【讨论】:

    【解决方案4】:

    我将支持@Haylem 对Restlet 的推荐。我们有一个大型项目,它在一定程度上利用了 Java EE(一些无状态会话 bean、Glassfish、计时器 bean、servlet、JDBC、JNDI)。 Restlet 非常适合:您可以在单个基于 Restlet 的 servlet 中运行一组 Web 服务。您只需付出相对较少的努力即可获得大量功能。我们对此非常满意。

    【讨论】:

      【解决方案5】:

      由于您有 Rails 背景,我建议您看一下 Scooter 框架,该框架将很多好东西从 Rails 移植到 Java。与 Struts 和 SpringMVC 一样,它是一个基于动作的 MVC 框架。它精美地处理宁静的路线。看restful url:http://scooterframework.com/docs/restful_routing.html

      它的视图层技术是简单的JSP,由SiteMesh布局框架管理。但它也处理 StringTemplate 视图文件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-10
        • 1970-01-01
        相关资源
        最近更新 更多