对于会话范围与请求范围,您认为实现 JSF 托管 bean 的最佳方式是什么?在我的例子中,我有一个带有 EJB 模块和 Web 模块的 EAR 应用程序。EJB 模块提供无状态会话 bean。现在,在 Web 模块中,我在 sessionScope 中使用了 ManagedBean。该 bean 注入了一些无状态会话 ejb 并保存了一些包含业务数据的值对象,这些业务数据可以在不同的页面中使用。
@Named("workflowController")
@SessionScoped
public class WorkflowController {
private List<ItemCollection> someList;
private ItemCollection someBusinessData;
/* Services */
@EJB
private MyService myService;
bean 为前端提供了很多操作方法,并利用了无状态会话 bean。这是一般的好习惯吗?或者我应该更改我的控制器以请求范围?我见过前端控制器仅在 RequestScoped 中使用并将所有业务数据对象作为 managedProperties 注入的项目,这些对象在 SessionScope 中作为 ManagedBeans 实现。
在我的示例中,我在 SessionScope 中只有一个控制器持有所有业务值并提供在无状态 ejb 中实现的业务方法。在另一种情况下,RequestScopde 中使用了一个控制器,并且有许多 BusinessValue 对象在 SessionScope 中实现为 MangedBeans,这些对象被注入到控制器 bean 中。
我的问题是:一般来说,将 Session EJB 注入 SessionScope Managed bean 是不好的做法吗?