Tomcat session管理

来源:互联网 发布:js设置div不可编辑 编辑:程序博客网 时间:2024/05/08 12:40
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" />?

关于节点的说明如下图:?
tomcat session持久化 - 萧飒 - 萧飒的博客?

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 要存储一个对象 保存成文件 都需要序列化。?

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