在将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,例如当信息要保存在数据库中时,每个“流程”中的最后一个典型步骤是什么?
答案 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?