集成Vaadin 7和EJB的最佳方法是什么?或者如何制作服务层?我想用JPA来保存数据。我正在考虑这个架构:Vaadin - > EJB(服务) - > JPA。也许你有更好的解决方案。顺便说一下,将来我会添加Web服务。
答案 0 :(得分:2)
嗯,你的架构很简单(这很好),让我建议一些符合你未来意图的概念。
您认为该应用的方式如下:
用户界面 - >边界 - >控制 - >实体
从技术角度看,就像:
Vaadin(MVC / P) - > EJB的 - > CDI对象 - > JPA实体。
这种方法的主要优点是:
您的UI可以是您喜欢的任何内容(JSF,GWT,Vaadin ......),并且不依赖于服务层。
边界表示提供服务层的合同,它是,您可以重复使用此边界并为其提供所需的任何类型的曝光,这将是一个休息边界,Web服务边界,rmi边界,所以on,您需要的任何协议。
以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(网关模式)
玩得开心!