tomcat持久化session

tomcat6 中关闭服务 会自动把session持久化
存储在work目录下的 一个session.ser
对于Session的管理,tomcat两个实现类:org.apache.catalina.session.StandardManager和org.apache.catalina.session.PersistentManager
StandardManager  默认的方法 可以配置的地方比较少
PersistentManager  提供了很灵活的管理方式 配置性强

网上实现配置PersistentManager 这种例子好多好多 大多是两种形式
形式一:存储在本地文件中:配置conf目录里的context.xml文件

在<Context>节点下添加如下<Manager>节点:
<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="../session" />
</Manager>

形式二:存储在数据库中 配置store节点
<Store calssName="org.apache.catalina.JDBCStore" driverName="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost/session?usename=xxx&password=xxx"
sessionTable="session" sessionIdCol="session_id" sessionDataCol="session_data"
sessionValidCol="sessionValid" sessionMaxInactiveCol="maxInactive"
sessionLastAccessedCol="lastAccess" sessionAppCol="appName" checkInterval="60" debug="99" />

关于节点的说明如下图:


className:Session的管理类,tomcat将会通过定义的接口来应用该类生成的对象。
debug:Session管理器的跟踪级别。
saveOnRestart:(true/false)配置服务重启工程中对session的处理,若为true,则关闭前把有效的session保存,启动后重新载入
maxActiveSession:活动状态Session的最大数,为-1时则不限制,否则Session Manager将会把超出的Session对象转移到Session Store中。
minIdleSwap:Session不活动的最短时间,超过该时间,Session Manager 可能会把该Session对象转移到Session Store中,单位为秒。
maxidleSwap:Session不活动的最长时间,超过该时间,Session Manager 将会把该Session对象转移到Session Store中,该Session将不在内存中。
maxidleBackup: Session不活动的最长时间,超过该时间,Session Manager 将会把该Session对象备份到Session Store中,但该Session对象依然存在内存中。
<Store>指定实现持久化的类和Session存放的文件位置,如该例子中指定的类是:org.apache.catalina.session.FileStore,而Session对象存放的目录则是tomcat根目录下的 session文件夹(当然自己创建)


记下在复制session中遇到的一个异常:
IOException while loading persisted sessions: java.io.WriteAbortedException
原来要让session存储的类没有序列化 引起io异常 在类后面实现Serializable 接口 (implements   java.io.Serializable  )

为什么要序列化呢 序列化:java.io.Serializable
序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间.
原因就在这里 序列化是将对象转换为容易传输的格式的过程 所以session序列化才能更好的传输和存储
不只是session 要存储一个对象 保存成文件 都需要序列化。

以前认为序列化
用处不大 所以尽量不用 结果问题就找过来了  做程序还是得严谨啊

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值