序列化FacesContext或如何在服务器重新启动后获取属性值
问题如下:我需要序列化用户会话,因此,在服务器重新启动后它仍然存在。
使用JavaEE和Tomcat 7可以很好地使用implements Serializable
,但问题是FacesContext
。 实际上,在重新启动服务器之后, FacesContext.getCurrentInstance()
返回null
,因此我无法访问消息包(因此无法再找到我的message.properties
)。
那么,重启Tomcat时如何保留FacesContext
?
您的问题描述不清楚,但症状表明您尝试将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
绝对不应该是可序列化的。