我希望我的会话在给定的时间间隔后超时。在 web.xml 中,我一直在使用如下代码:
<session-config>
<session-timeout>20</session-timeout>
</session-config>
其中 20 是以分钟为单位的超时时间,它可以正常工作。
我想做的是在我的一个bean中使用这样的代码以编程方式执行它,如下所示:
@ManagedBean(name="login")
@SessionScoped
public class MyLoginBean implements HttpSessionListener, Serializable {
// private variables etc.
HttpServletRequest request;
HttpSession session = request.getSession();
// Constructor
public MyLoginBean() {
session.setMaxInactiveInterval(1200);
}
// The rest of the code
}
这里的超时时间是 1200 秒,即 20 分钟。不幸的是,在打开浏览器查看应用程序时,它失败并显示以下消息:
com.sun.faces.mgbean.ManagedBeanCreationException: Cant instantiate class: com.csharp.MyLoginBean.
其次是:
java.lang.NullPointerException
我在这里做错了什么?我知道这setMaxInactiveInterval()
指的是特定的会话,在这种情况下是登录 bean,而不是web.xml
文件中的代码指定的所有内容。我有几个 bean,但是让登录 bean 超时是唯一重要的。
我将 JSF 2.0 与 Glassfish 3.1.1 和 Eclipse Indigo 一起使用,因此非常感谢一些建议。