当我部署我的webapp时,我看到此错误消息
com.sun.faces.application.view.FaceletViewHandlingStrategy handleRenderException
SEVERE: Error Rendering View[/qtl.xhtml]
java.io.NotSerializableException: org.apache.catalina.session.StandardSessionFacade
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1164)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:330)
at java.util.HashMap.writeObject(HashMap.java:1001)
...
我研究并且这个错误可能是因为我尝试序列化非序列化的属性。所以我有一个ApplicationScoped
托管bean,如下所示
@ManagedBean
@ApplicationScoped
public class ApplicationBean implements Serializable {
private Map<String, HttpSession> logins;
...
}
Map<String, HttpSession> logins
可以序列化吗?
Tomcat 7
答案 0 :(得分:4)
HttpSession
确实不可序列化。应用程序作用域bean毕竟也不应该是可序列化的。从应用程序作用域bean类中删除implements Serializable
,不要将其作为会话的托管属性或查看作用域bean注入。相反,只将它注入请求范围的bean中,或者从应用程序映射中获取它。