由于我学习JSF2,我意识到我不知道后盾成分应该是什么。从设计的角度来看,是什么EJB和@ManagedBeans之间的差异?

在我将要使用JPA结束,所以EJB是业务层的自然选择。它是使用EJB直接从JSF一个很好的做法(如这里解释 )?

目前我倾向于使用@ManagedBeans对于不需要访问业务层(例如视图助手)或处理请求/会话数据的组件。用于其它目的,例如在网格中列出的东西,我会直接访问EJB。

这是一个好的设计?我将使用@ManagedBeans所有支持bean清洁层分离的缘故,即使在某些情况下,它们仅委托给EJB?

其他提示

在Java EE 6的存在的各种管理豆之间有一些重叠:JSF管理豆(@ManagedBean),CDI管理豆(@Named)和EJB豆(@Stateless,@Statefull,@Singleton)

在视图层我看不出有任何特别的优点与@ManagedBean粘连。该变种CDI @命名似乎是能够做同样多的,例如为你提供进入转换范围。

在目前的想法似乎是,最终的EJB组件模型也将被改装为一组CDI注释。特别是专家组成员礼萨·拉赫曼经常暗示了这一点。例如见依赖注入Java EE 6中 - 第1部分

有关被这并没有发生时间,所以EJB豆类保持的最简单的地方,把业务逻辑,特别是当JPA用于持久性。

不过,CDI是否会获得EJB的能力,恕我直言,它仍然使用了“釜底抽薪豆”的概念一个单独的bean,并为“商业逻辑”一个单独的bean的最佳实践。

背衬豆可真纤薄,只是含有一些参考对象和服务(EJB)的建模。支持bean的操作方法几乎可以直接委托给服务,但其附加值是在向用户提供反馈(加时成功或失败FacesMessages)和做小UI修改(例如,设置一个布尔值false时显示一些对话框)

在服务(业务逻辑)不应该知道任何特定呈现任何内容。他们应该是同样来自JSF支持bean,JAX-RS,Servlet的,独立的Java SE远程客户端或任何使用。

即使所有的豆类将成为CDI豆,那么这并没有改变这种责任的基本划分。

有趣的文章,没有早知道是这样。然而,对我这篇文章的气味更像是对JSF夸夸其谈管理的Bean。它还紧夫妇EJB与JSF。这是小(个人)的应用在现实世界中的SOA应用程序也许有趣,但可能不是你想要完全控制EJB的被服务。

至于使用什么哪一个,我只想坚持以@ManagedBean表示,可呈现绑定到一个或多个特定JSF视图的JSF模型。您可以完全使用非JSF具体的业务逻辑和/或datamodels @EJBs。您可以在JSF模型注入@EJBs并委托其在操作方法,也许还getter / setter方法,但是你不应该做的另一种方式圆,即没有定义在@EJB JSF的模型,这导致了紧耦合和将使@EJBs unuseable JSF上下文之外。至于,你的设计听起来不错,只要你看在javax.faces类不导入从@EJB包东西。

从你的XHTML调用EJB,您将引入实施视图和业务层的选择之间的紧耦合。

如果您使用托管bean来调用EJB,[甚至,放在业务委派],你就可以彻底改变你的业务层到春天,而不会影响视图层(XHTML)。

时,在技术上是可行的,而且很容易让你(JSR 299)能够使用EJB作为托管bean,而这可能是这些厂商要你做什么 - 让紧盯细节。但无论是做正确的事吗? - 不

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top