【问题标题】:Best view layer with simple URLs for an EJB3 application用于 EJB3 应用程序的具有简单 URL 的最佳视图层
【发布时间】:2009-09-07 18:29:18
【问题描述】:

我想听听您对 EJB 3.0 [1] Java 应用程序最适合我的视图层的意见。

JSF 不好,因为它在涉及 Web URI 时是一团糟。我想要一个视图框架,它有助于在使用诸如 example.com/story/1 或 example.com/?story=1(使用 GET 方法)之类的干净 URI 时自动提交和验证 html 表单。

我的第一个猜测是使用 Spring MVC。 Spring 很棒,但感觉有点矫枉过正,因为 JPA 和 EJB 已经完成了繁重的工作。我只需要几样东西,嗯,实际上是其中四样:

  1. 用于业务层的 JPA、EJB 3.0
  2. 清理 URI:最好是 example.com/story/1
  3. HTML 表单助手(验证、转换器等)
  4. 类似于 Apache Tiles 或 JSF 的 ui:composition 的模板

那么,你会选择哪一个?

Ad [1]:主要用于 JPA 和无状态/有状态的本地会话 bean

【问题讨论】:

  • 您打算构建什么样的应用程序?是内网应用吗?还是公开的?这将影响您对视图技术的选择。示例:GWT 是 Intranet 应用的绝佳选择,但不适用于必须由搜索引擎等索引的应用。
  • 这是一个公共的互联网应用程序。这是我希望拥有干净的类似 REST 的 URL 的原因之一。我还没有使用过 GWT,但是通过一次 Google 搜索我发现它不能很好地与 EJB3 集成,是吗?

标签: java jpa templates ejb-3.0


【解决方案1】:

我的第一个猜测是使用 Spring MVC。 Spring 很棒,但感觉有点矫枉过正,因为 JPA 和 EJB 已经完成了繁重的工作。

我不同意这种说法。春天不必是“全有或全无”的命题。如果这就是您所需要的,我认为使用 Spring Web MVC 没有任何问题。

我会将您的 EJB 和 JPA 放在 Spring 服务接口之后,让 Web 层使用通常的 Spring 习惯处理这些。

【讨论】:

  • Spring 的问题在于它的配置。当您尝试将 Tiles 和 Spring 绑定在一起时,您会得到只能称为 XML 配置地狱的东西——URL 片段在三、四个地方?好吧,也有可能只是我对 Spring 的了解不够,但是……这通常是我尝试它时的经验。
  • 注释可以提供帮助。就个人而言,我认为关于 XML 配置的抱怨被夸大了。我不知道您所说的“3或4”个地方是什么意思。我认为瓷砖是真正的问题。我更喜欢 Sitemesh。
  • 好吧,我夸大了一点。它实际上是两个地方——SimpleUrlHandlerMapping 和非常冗长的tile 配置。输入站点网格。我根本不知道 Sitemesh,甚至没有下载过它——它的教程让我有点害怕。它是否在每次调用时都进行 (x)html 树解析?我有点害怕可能会影响性能。
【解决方案2】:

Apache Wicket 支持 RESTful URL:s 使用 BookmarkablePageLinks 和 PageParameters constructor of the WebPage 对象的组合。 Wicket 也支持Velocity 模板,并且由于它完全基于 OO/POJO,因此通常易于维护。

Wicket 适合 MVC 模型 2 的模型和视图部分,并包含一些 generic validators 和指定 form validators 的样本,因此它有足够的机制来支持这些功能。

【讨论】:

  • 检票口。听起来不错。我还没有尝过(是的,我的意思是没有尝过;)它还没有。但是,嘿,它的 EJB3 集成如何?我应该使用@EJB 注释还是必须通过 JNDI 调用手动拉出 bean?
  • Wicket 的模型概念(检查 Wicket 的 javadoc 中的 IModel 接口)使用 POJO 而不是 EJB:s,这意味着您根本不需要进行任何类型的 JNDI 查找,因为 Wicket 没有好处以任何方式来自 Enterprise JavaBeans。在这种情况下,Wicket 是一个不好的建议,它在整个 Java EE 技术堆栈中真正明确使用的是 Web 层中的 Servlet/Filter 部分,其他一切都是基于 POJO 的。有些地方可以使用注释(例如将 Spring bean 直接注入页面),但这些地方与 EJB 注释并不真正相关。
  • 那么,您究竟如何使用 JPA 作为模型和 EJB 作为 Wicket 的业务服务?好吧,我想我有一些挖掘工作要做。
  • JPA 真的只是注解模式下的 Hibernate,Wicket 也支持 Hibernate,所以使用 JPA 应该不是什么大问题。
  • 这就是我要找的东西:wicketstuff.org/confluence/display/STUFFWIKI/…我想知道它现在是否真的有效:)
猜你喜欢
  • 2014-07-22
  • 1970-01-01
  • 2011-01-29
  • 2010-09-30
  • 1970-01-01
  • 2013-09-22
  • 1970-01-01
  • 2017-03-14
  • 2012-04-09
相关资源
最近更新 更多