为什么session不能持久化 Persistent Manager问题

dongdandan 2007-03-14 09:42:40
看孙卫琴的tomcat与java web开发技术详解,里面的Persistent Manager.
我将下面的内容放到web.xml里了.按书上写的内容运行web应用,关闭tomcat,再查看.结果发现进入了新的session,而不是和刚才一个session.
我查看了D:\Tomcat5\work\Catalina\localhost\mail1\ 目录,下面已经建立了mydir目录.但是里面在我运行tomcat-关闭tomcat-重新打开 的过程总没有任何文件生成.
我想知道大概是哪里出了问题
<Context path="/mail1" docBase="mail1" debug="0"
reloadable="true" >

<Manager className="org.apache.catalina.session.PersistentManager" >
debug=0;
saveOnRestart="true"
maxActiveSessions="-1"
minIdleSwap="-1"
maxIdleSwap="-1"
maxIdleBackup="2"
<Store className="org.apache.catalina.session.FileStore" directory="mydir" />
</Manager>
</Context>
<Co
...全文
571 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xingzhiyun 2007-04-08
  • 打赏
  • 举报
回复
这个问题经过在网上查询资料已经解决了

 Session持久化(2007-04-08)
Session持久化可以实现当tomcat重新启动后,当前IE使用的session仍然有效而不用重新登录,有两步需要做
 1.配置conf/server.xml
在server.xml的根路径或虚拟目录中增加一段,如虚拟目录调度所中:
<Context path="/dds" docBase="D:\01_XZY\98_供电局调度所\02_JSP\HRDGDZC\ROOT" debug="0" reloadable="true" >
<Manager className="org.apache.catalina.session.PersistentManager" debug="0" saveOnRestart="true" maxActiveSessions="-1" minIdleSwap="-1" maxIdleSwap="-1" maxIdleBackup="-1" >
<Store className="org.apache.catalina.session.FileStore" directory="seskep"/>
</Manager>
</Context>
这样之后,普通的session对象(像字符串类的)就能实现持久化了,但如果session使用了对象,则必须实现对象类的可序列化
参数说明:saveOnRestart-服务器关闭时,是否将所有的session保存到文件中;
maxActiveSessions-可处于活动状态的session数;
minIdleSwap/maxIdleSwap-session处于不活动状态最短/长时间(s),sesson对象转移到File Store中;
maxIdleBackup-超过这一时间,将session备份。(-1表示没有限制)
directory="seskep" 会在tomcat的work目录下建立一个目录,用来存储session,这里建立的目录是
D:\JAVA\TOMCAT4\work\Standalone\localhost\dds\seskep

 2.类的序列化
如果session中存储了类xzy登录属性的实例,则类xzy登录属性必须能够序列化,才能实现session持久化
实现implements java.io.Serializable接口就可以了
/**
* 用户登录后各种属性记录在本类的实例中
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2004</p>
* <p>Company: 山西泰森科技股份有限公司</p>
* @author 邢志云
* @version 1.0
*/
public class xzy登录属性 implements java.io.Serializable
{
public String UserName=null;
public String 姓名=null;
public String 单位=null;
public String 部门=null;
public String 职务=null;
public String 权限设置=null;
static final public long serialVersionUID=372938;
}
serialVersionUID这个东西估计每个类中写个不同的数值就可以了,好像是版本保持的.
经过测试IE登录后页面后,Session再重新启动,刷新IE页面的时候session对象中的值能够像重启前一样的读出来.

xingzhiyun 2007-04-08
  • 打赏
  • 举报
回复
这个问题我也想问,tomcat重启动后,目录下,确实有session文件,但在IE端的session确丢失了,好像是只保存了,而没有读入
dongdandan 2007-03-16
  • 打赏
  • 举报
回复
up
AHUA1001 2007-03-16
  • 打赏
  • 举报
回复
可以在web.xml配置文件里配置session的周期,但是建议还是把session的周期设置的小一些,否则服务器的压力太大了。
  • 打赏
  • 举报
回复
好好看看SESSION的几种生命周期
chrisli1983 2007-03-15
  • 打赏
  • 举报
回复
session本来就不是用来持久化的啦
dongdandan 2007-03-15
  • 打赏
  • 举报
回复
session持久化是说当服务器重启 或是内存总的session过多,而有的session超过一定时间不活跃就把它们保存到文件或数据库中.当重启之后或是需要激活的时候再调入内存.
如果我对这理解有问题,希望能得到更详细的解答,谢谢
journay 2007-03-15
  • 打赏
  • 举报
回复
ie关闭session失效
session过期失效,可设置失效时间
HIBERNATE - 符合Java习惯的关系数据库持久化 Hibernate参考文档 3.2 -------------------------------------------------------------------------------- 目录 前言 1. 翻译说明 2. 版权声明 1. Hibernate入门 1.1. 前言 1.2. 第一部分 - 第一个Hibernate应用程序 1.2.1. 第一个class 1.2.2. 映射文件 1.2.3. Hibernate配置 1.2.4. 用Ant构建 1.2.5. 启动和辅助类 1.2.6. 加载并存储对象 1.3. 第二部分 - 关联映射 1.3.1. 映射Person类 1.3.2. 单向Set-based的关联 1.3.3. 使关联工作 1.3.4. 值类型的集合 1.3.5. 双向关联 1.3.6. 使双向连起来 1.4. 第三部分 - EventManager web应用程序 1.4.1. 编写基本的servlet 1.4.2. 处理与渲染 1.4.3. 部署与测试 1.5. 总结 2. 体系结构(Architecture) 2.1. 概况(Overview) 2.2. 实例状态 2.3. JMX整合 2.4. 对JCA的支持 2.5. 上下文相关的(Contextual)Session 3. 配置 3.1. 可编程的配置方式 3.2. 获得SessionFactory 3.3. JDBC连接 3.4. 可选的配置属性 3.4.1. SQL方言 3.4.2. 外连接抓取(Outer Join Fetching) 3.4.3. 二进制流 (Binary Streams) 3.4.4. 二级缓存与查询缓存 3.4.5. 查询语言中的替换 3.4.6. Hibernate的统计(statistics)机制 3.5. 日志 3.6. 实现NamingStrategy 3.7. XML配置文件 3.8. J2EE应用程序服务器的集成 3.8.1. 事务策略配置 3.8.2. JNDI绑定的SessionFactory 3.8.3. 在JTA环境下使用Current Session context (当前session上下文)管理 3.8.4. JMX部署 4. 持久化类(Persistent Classes) 4.1. 一个简单的POJO例子 4.1.1. 实现一个默认的(即无参数的)构造方法(constructor) 4.1.2. 提供一个标识属性(identifier property)(可选) 4.1.3. 使用非final的类 (可选) 4.1.4. 为持久化字段声明访问器(accessors)和是否可变的标志(mutators)(可选) 4.2. 实现继承(Inheritance) 4.3. 实现equals()和hashCode() 4.4. 动态模型(Dynamic models) 4.5. 元组片断映射(Tuplizers) 5. 对象/关系数据库映射基础(Basic O/R Mapping) 5.1. 映射定义(Mapping declaration) 5.1.1. Doctype 5.1.2. hibernate-mapping 5.1.3. class 5.1.4. id 5.1.5. composite-id 5.1.6. 鉴别器(discriminator) 5.1.7. 版本(version)(可选) 5.1.8. timestamp (可选) 5.1.9. property 5.1.10. 多对一(many-to-one) 5.1.11. 一对一 5.1.12. 自然ID(natural-id) 5.1.13. 组件(component), 动态组件(dynamic-component) 5.1.14. properties 5.1.15. 子类(subclass) 5.1.16. 连接的子类(joined-subclass) 5.1.17. 联合子类(union-subclass) 5.1.18. 连接(join) 5.1.19. 键(key) 5.1.20. 字段和规则元素(column and formula elements) 5.1.21. 引用(import) 5.1.22. any 5.2. Hibernate 的类型 5.2.1. 实体(Entities)和值(values) 5.2.2. 基本值类型 5.2.3. 自定义值类型 5

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧