當我部署我的web應用,我看到java.io.NotSerializableException:org.apache.catalina.session.StandardSessionFacade
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
地圖通常是可序列化的,但看起來像會話實現(org.apache.catalina.session.StandardSessionFacade)不是。無論如何,我無法想象它是以這種方式序列化會話的好主意。 – Perception 2012-02-10 18:53:22
檢查了這一點: http://www.ibm.com/developerworks/websphere/library/bestpractices/httpsession_performance_serialization.html – alfasin 2012-02-10 19:12:07
@Perception:我需要知道與我的服務器上的特定'userId'關聯的'HttpSession',所以當我從數據庫中刪除它們時,我可以通過它們的'userId'獲得它們的'HttpSession',並使它們的連接失效。有一個更好的方法嗎? – 2012-02-10 19:12:24