JSF应用程序中内存泄漏的原因

时间:2013-07-04 14:23:45

标签: jsf memory-leaks centralized

我正在将问题的大纲放在这里,因为很难描绘真实场景。我在jsf 1.2和富有面孔3中有一个应用程序。它将员工的基本数据和相关数据(家庭,就业记录,资格等)存储在单独的表中。当用户点击自己的名字时。与员工相关的几个表格的详细信息显示在页面上。如家庭,就业记录,资格记录等。员工基本表中的主键是emp_id(一个数字)。此键是所有相关子表中的外键。应用程序集中部署并在不同城市使用。问题是,当某个员工点击其详细信息时......未知记录会显示在他的帐户中,就像任何其他员工的家人一样......界面就像

  ---------------------------------------------------------------------------
     Wellcome Mr. Campatrick,Sales Executive             <<View Details>>
  ---------------------------------------------------------------------------

单击视图详细信息时...... Mr.Campatrick的emp_id在employee_bean中设置。其中employee_bean是会话作用域。如果这有任何意义......当我在“查看详细信息”链接上明确设置emp_id时,可能是混合记录的可能原因。这与“内存泄漏”有关吗?如果是的话,在哪里查看。

1 个答案:

答案 0 :(得分:2)

问题似乎是在会话范围内滥用托管bean。由于您说您使用的是JSF 1.2和RichFaces 3,我建议您将托管bean从会话范围更改为请求范围,并将@KeepAlive注释添加到必须作为视图范围运行的托管bean。

你的bean看起来像

@KeepAlive
public class NoSessionScopeAnymore {
    //fields, constructor, getters and setters, methods...
}

有关KeepAlive注释或组件的更多信息:<a4j:keepAlive>

从JSF 2开始,您不会需要这个,因为您可以使用@ViewScoped来解决请求和会话之间的桥梁。有关托管bean范围的更多信息: