【问题标题】:Best way to integrate Vaadin 7 and EJB or how make service layer? [closed]集成 Vaadin 7 和 EJB 的最佳方式或如何制作服务层? [关闭]
【发布时间】:2014-03-15 07:04:02
【问题描述】:

集成 Vaadin 7 和 EJB 的最佳方式是什么?或者如何制作服务层?我想使用 JPA 来持久化数据。我正在考虑这个模式:Vaadin -> EJB(Service) -> JPA。也许你有更好的解决方案。顺便说一句,以后我会添加 Web Services。

【问题讨论】:

    标签: java jpa service ejb vaadin


    【解决方案1】:

    嗯,你的架构很简单(很好),让我建议你一些符合你未来意图的概念。

    您认为应用程序可能是这样的方式:

    UI -> 边界 -> 控件 -> 实体

    从技术角度来看,是这样的:

    Vaadin (MVC/P) -> EJB 的 -> CDI 对象 -> JPA 实体。

    这种方法的主要优点是:

    您的 UI 可以是您喜欢的任何东西(JSF、GWT、Vaadin...),并且不依赖于服务层。

    边界表示提供你的服务层的合约,你可以重用这个边界并给它你需要的任何类型的暴露,这将是一个休息边界,webservice-boundary,rmi-boundary,所以开,任何你需要的协议。

    以 EJB 为边界,您可以启动异步方法、JMS 消费者、在服务层强制实施安全性并使用计时器服务。

    CDI 控件可以让您以奇特的方式使用依赖注入(您知道配置器模式吗?> http://www.adam-bien.com/roller/abien/entry/how_to_configure_java_ee),如果您遇到需要某种模式(工厂、模板方法、复杂继承)的业务问题, 生产者 ....) CDI 让您以富有表现力的方式实现所有这些。更不用说 EJB + CDI 是一个交易破坏者!。

    控件由边界编排,其行为应该被很好地封装。显然,您的边界可以根据需要使用尽可能多的控件,但不要过度设计,如果只有一个边界就足够了,那么,保持简单。

    最后是JPA实体,尽量表达多业务概念,如果关系之间有继承,不要害怕用JPA来实现。这将节省您的样板代码,消除整个系统的重复并且更易于使用。 (提示:尝试使用 bean 验证规范。)

    注意:这是基于 SOA 概念(即@Stateless EJB),如果您的应用更面向 RIA,可能对您学习如何使用 @Stateful EJB(网关模式)很有用

    玩得开心!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-26
      • 2012-12-06
      • 2012-02-04
      • 1970-01-01
      • 1970-01-01
      • 2015-04-17
      • 1970-01-01
      • 2012-10-12
      相关资源
      最近更新 更多