使用正确的JSF范围

时间:2014-07-11 07:44:20

标签: jsf scope ejb-3.1

在实现基于JSF的前端时,我面临以下要求:

  • 用户可以在文本字段中输入语句。
  • 语句被转发到服务器端EJB(在同一个VM中)。 EJB将有关每个语句的信息存储在集合中(而不是在数据库中),并在处理其他语句时使用它们。
  • 处理完语句后,其结果将显示在同一页面上。
  • 用户可以多次重复此过程。必须在页面上显示所有已处理的语句。
  • 多个用户可以并行访问该应用程序。从理论上讲,同一个用户可以在他/她的浏览器中打开多个标签。在这种情况下,该用户可以输入不同的语句,并且应该独立处理不同选项卡中的语句。

问题:
当用户向服务器发送新语句时,将重新创建ViewScoped后备Bean。如果我将其声明为@EJB private Service service;,则新的辅助bean实例将获取另一个EJB引用。无论如何,无论我做什么,我认为我应该期望在用户使用应用程序时重新创建ViewScoped bean。

问题:

  1. 我应该使用哪个JSF范围的支持bean:ViewScoped或SessionScoped?
  2. 我应该将哪些会话bean用作EJB:有状态还是无状态?
  3. 如何在支持bean中引用EJB?
  4. 我正在使用Primefaces 5 + WildFly(如果重要的话)。

    修改
    输入语句意味着:将其写入文本字段并按Enter键。

    更新
    我已将支持bean切换到SessionScoped,启动了应用程序并输入了一个声明。

    更新2
    上一个问题已经解决:目前我使用一个页面+一个支持bean(SessionScoped)+一个EJB(有状态),它们一起正常工作。但我上面的三个问题仍然有效:我不确定这种配置是否最好。

0 个答案:

没有答案