序列化FacesContext或如何在服务器重新启动后获取属性值



问题如下:我需要序列化用户会话,因此,在服务器重新启动后,它仍然存在。

使用JavaEE和Tomcat7可以很好地与implements Serializable配合使用,但问题在于FacesContext。事实上,在重新启动服务器后,FacesContext.getCurrentInstance()返回null,因此我无法访问消息包(因此我的message.properties再也找不到了)。

那么,在重新启动Tomcat时,如何保持FacesContext

您的问题描述不清楚,但症状表明您正试图将FacesContext的当前实例作为实例变量获取到任何位置。您根本不应该这样做,您应该始终在本地方法范围中获取当前实例。

因此,您应该从不执行例如

private FacesContext context;
public Bean() {
    context = FacesContext.getCurrentInstance();
}
public void someMethod() {
    context...doSomething();
}

但你应该改为:

public void someMethod() {
    FacesContext.getCurrentInstance()...doSomething();
}

否则,会话范围的bean只持有创建bean的第一个HTTP请求的实例。确切地说,这个HTTP请求在相关联的响应结束时被篡改,在任何后续请求中都不再有效。因此,FacesContext绝对不应该是可序列化的。

相关内容

  • 没有找到相关文章

最新更新