2011-03-01 122 views
1

我试图序列化HttpSession对象,并得到了以下exeption序列化HttpSession对象

java.io.NotSerializableException: org.apache.catalina.session.StandardSessionFacade 
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1081) 
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:302) 
at com.tps.Session.saveSession(Session.java:16) 
at org.apache.jsp.setSession_jsp._jspService(setSession_jsp.java:56) 
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331) 
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329) 
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174) 
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:873) 
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665) 
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528) 
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81) 
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689) 
at java.lang.Thread.run(Thread.java:595) 

回答

9

你为什么要尝试这样做呢? HttpSession对象不可序列化,并且不应该是。

如果您需要保存会话的内容,然后逐个遍历会话属性,并对这些属性进行序列化。

+0

+ 1perfect .......... – 2011-03-01 10:34:34

+0

怎么样WebSocketSession,您需要将消息发送到客户端 – fudy 2017-03-13 07:22:59

3

另外,请记住存储在HttpSession中的对象应该是可序列化的,尤其是当您将Web应用程序部署到集群时,在这种情况下会话可能需要从一个JVM移动到另一个JVM。
这个规则不是通过HttpSession.setAttribute方法实施的,它将Object作为参数而不是Serializable,因此开发人员需要遵循这一良好实践。

For more information.

+0

这不涉及到具体quesiton /问题都没有。 – BalusC 2012-10-18 18:55:20