Seb*_*ebi 7 java ejb java-ee java-ee-6 ejb-3.1
我正在尝试结合以下技术的Java webapp:
我为我的JSF页面提供了基于CDI的后台bean(@ViewScoped,@ Name).
我使用@Stateless EJB bean来完成实际工作.
我只需要很少的会话信息,如jSessionCookie(由容器管理),内部用户名和一些其他内部ID.现在,我想知道在哪里放置这个会话信息,以便我可以在JSF的支持bean中访问它,还可以将它提供给无状态EJB?我应该使用@Stateful EJB会话bean还是应该使用@SessionScoped和@Named创建基于CDI的POJO?
有没有最佳做法?
对于您的特定用例,有状态会话bean不是一个好的选择.
请注意,与人们可能声称的相反,有状态会话bean肯定不是您通常应该避免的.但是,它们适用于高级用例,例如在处理JPA的扩展持久性上下文时.
有状态会话bean在这里不起作用的原因是它们不会自动与HTTP会话相关联,这似乎是您最关心的问题.您可以向它们添加@SessionScoped注释,但是您也可以使用常规托管bean.您不会使用SFSB的任何特定功能.
见alo:
您可以使用会话范围的CDI bean注入无状态EJB,但是您必须意识到在同一个应用程序中,您的EJB bean将依赖于HTTP会话(有时您希望避免这种情况,例如,如果您的bean必须被调用)从其他情况来看).