JSF / Facelets支持bean和EJB3

时间:2012-06-25 22:29:00

标签: jsf cdi ejb-3.1

在将JSF与EJB3.1一起使用时,我对各种选项和最佳实践有几个问题。鉴于可用的选择和组合数量巨大,我所拥有的心理模型远非明确,因此有些问题可能没有意义。

JSF / Facelets引用支持bean(我通过EL代码使用术语“支持bean ”来表示其属性是从Facelets页面写入或读取的)通过与所使用的实际注释无关的EL代码在bean类中(javax.faces.bean。*或javax.enterprise.context。*)。

仅仅通过更改bean类中的导入而不对Facelets 进行任何更改,可以在 JSF CDI 范围注释之间切换是否正确xhtml 代码?

JSF / Facelets是否应该仅用于 xhtml 标记代码,并使用 CDI 完成所有范围和生命周期(加注入)注释? / p>

JBoss AS 设置中,JSF支持bean的生命周期管理(使用 JSF CDI 注释)在哪里进行?在Web容器中还是在EJB3容器中?

在典型的Web应用程序中,由于 SessionScoped bean可以由CDI提供,是否需要使用除 @Entity 类型之外的EJB3 bean,例如当信息要保存在数据库中时,每个“流程”中的最后一个典型步骤是什么?

1 个答案:

答案 0 :(得分:3)

  

如果只是通过更改bean类中的导入而不更改Facelets xhtml代码,可以在JSF和CDI范围注释之间切换是否正确?


  

JSF / Facelets是否应该仅用于xhtml标记代码并且使用CDI完成所有范围和生命周期(加注入)注释?

JSF正在向CDI迈进。即将到来的JSF 2.2的新@FlowScoped注释就是证据,因为它来自CDI API。唯一的缺点是CDI没有为非常有用的JSF @ViewScoped注释提供标准注释。您需要@ConversationScoped手动开始和结束对话,或者查看MyFaces CODI等CDI扩展程序。


  

在JBoss AS设置中,JSF支持bean(使用JSF或CDI注释)的生命周期管理在哪里进行?在Web容器中还是在EJB3容器中?

Web容器(在WAR的风格中)。 JSF建立在Servlet API之上,因此它绝对是Web容器。


  

在典型的Web应用程序中,由于可以由CDI提供SessionScoped bean,是否需要使用除@Entity类型之外的EJB3 bean,例如当信息要保存在数据库中时,每个“流程”中的最后一个典型步骤是什么?

@Entity是JPA的一部分,而不是EJB的一部分。 @Entity将用于映射到数据库表的模型类,通常仅用于跨层传输数据。您最后描述的内容听起来像是@Stateful EJB的候选者。要更好地理解@Stateless vs @Stateful EJB,请转到详细答案:JSF request scoped bean keeps recreating new Stateful session beans on every request?