WebApp服务器 禁用/启用 SESSION持久化

通过观察不难发现,这两个错误都是发生在“loading sessions from persistent storage”之时,也就是从持久化文件还原session的时候。我们都知道Tomcat能够在容器关闭时将session中的数据持久化到文件系统中,待容器重启时将其还原,但前提条件是保存在session中的数据类型均实现了java.io.Serializable接口,glassfish的 Servlet容器是基于Tomcat构建的,所以原理基本相同,而且Glassfish是默认开启session持久化的。

于是解决第一个问题的答案就有了:cn.beans.UserSession中的time属性是java.util.Date类型的,而Date没有实现 Serializable接口、所以只需创建一个Date的子类令其实现Serializable接口,并将time定义为该子类的对象即可。

而解决第二个问题就需要彻底保证所有保存在session中的数据都是序列化了的才行。当然如果不考虑session持久化就不需要这样做了,只需禁用session持久化功能即可,这一点上tomcat与glassfish略有不同:

1.Tomcat中禁用/启用session持久化:在Tomcat的配置文件server.xml中添加以下内容:

禁用持久化:











启用持久化:









2.Glassfish中禁用/启用持久化:Glassfish项目中都有名为sun-web.xml的文件,要禁用session持久化只需在该文件中进行以下配置

  









sessionFilename的值是用来指定一个自定义名称的文件来保存session数据的,而将其设为空值便能够取消session持久化的功能。

你可能感兴趣的:(JAVA)