session id
是由服务器在客户端连接后自动分配的。当服务端重启后,如果没有保存session
信息,则当已连接的客户端再次发送请求到服务器时,由于session id
已失效,服务器会为每个客户端重新分配一个新的session id
.
如何让session
在服务器重新启动后保持有效呢?可以在服务器关闭之前序列化
保存session
到文件中,然后在重启服务器后,从指定文件中反序列化session
。
以Tomcat
+jsp
开发环境为例:
1、修改server.xml配置
<!-- Session保存 -->
<Context path="/examples" docBase="D:\examples_web">
<Manager className="org.apache.catalina.session.PersistentManager">
debug=0 saveOnRestart="true"
maxActiveSession="-1" minIdleSwap="-1"
maxIdleSwap="-1" maxIdleBackup="-1"
<Store className="org.apache.catalina.session.FileStore" directory="d:\temp"/>
</Manager>
</Context>
-->
<Manager>
元素是专门用于配置session
管理操作的。<Manager>
中每个属性作用如下:
className
:session
的管理器操作类。debug
:session
管理器的跟踪级别。saveOnRestart
:配置服务器重新启动前对session的处理操作。true
在容器关闭前将有效的session
保存,重启后重新载入;false
不保存。maxActiveSession
: 活动的session
的最大数量。如果为-1
则表示不设限,超过最大限制时,session
会被保存到Session Store
中.maxIdleSwap
:一个session
不活动的最短时间,单位为秒。-1
代表不受限制,超过则将session
对象转移到Session Store
中。maxIdleBackup
:session
最长时间,单位为秒。-1
代表不受限制,超过该时间会将session
对象备份到Session Store
中,但该session
仍存在于内存中。<Store>元素
:定义实现持久化session的操作类及指定的文件存放位置。
- 待续