java.io.NotSerializableException:org.apache.catalina.session.StandardSessionFacade

时间:2012-02-10 18:48:51

标签: java jsf serialization

当我部署我的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

1 个答案:

答案 0 :(得分:4)

HttpSession确实不可序列化。应用程序作用域bean毕竟也不应该是可序列化的。从应用程序作用域bean类中删除implements Serializable,不要将其作为会话的托管属性或查看作用域bean注入。相反,只将它注入请求范围的bean中,或者从应用程序映射中获取它。