具体原因:
tomcat 5及后续版本在重启服务时候tomcat会尝试恢复上一次的session.
解决方法:
方法一(通过配置,使tomcat重启后不重新恢复session):
在 关闭和重启Tomcat 5时, tomcat 会试图 serialize存在的session资源. 如果 sessions中相关的对象没有实现 serializable 接口, 就会出现Cannot serialize session attribute XXX for 异常
java.io.NotSerializableException: ...........
如果你不想看到该异常, 也不想保存session. 那么你可以在项目部署描述文件中(如. test.xml,)(instead of just exploding the war) 的 <Context> tags中间 加上 :
<Manager className="org.apache.catalina.session.PersistentManager" saveOnRestart="false"> <Store className="org.apache.catalina.session.FileStore"/> </Manager>
Manager元素可以嵌套在Context组件中。如果不包含它,会自动创建一个缺省的Manager配置,这对大多数需求都是足够的。
详见Tomcat服务器配置参考http://www.cnjsp.org/document/user/tuman/manager.html
这样 tomcat 在关闭的时候就不会保存session资源了.
你也可以在server.xml中指定上面的值. 这也所有的程序都使用这个设置了.
方法二:
既然报没有序列化的错误,那我们就把我们的对象序列化了就是了,实现起来也很简单,就是把要放入session的对象序列化即可
public class YourClassName implements java.io.Serializable{ }
原文地址:http://jahunter.javaeye.com/blog/319946