扩展阅读
  • java命名空间java.sql类types的类成员方法: java_object定义及介绍
  • 我想学JAVA ,是买THINK IN JAVA 还是JAVA2核心技术:卷1 好???
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: imageflavor定义及介绍
  • 请问Java高手,Java的优势在那里??,Java主要适合于开发哪类应用程序
  • java命名空间java.lang.management类managementfactory的类成员方法: getcompilationmxbean定义及介绍
  • 如何将java.util.Date转化为java.sql.Date?数据库中Date类型对应于java的哪个Date呢
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getlibrarypath定义及介绍
  • 谁有电子版的《Java编程思想第二版(Thinking in java second)》和《Java2编程详解(special edition java2)》?得到给分
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getstarttime定义及介绍
  • 本人想学java,请问java程序员的待遇如何,和java主要有几个比较强的方向
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: stringflavor定义及介绍
  • 我对JAVA一窍不通,可惜别人却给我一个Java的project,要我做一个安装程序,请问哪里有JAVA INSTALLER下载,而且我要不要安装java的sdk才能完成此项任务?
  • java命名空间java.security类keystore的类成员方法: getdefaulttype定义及介绍
  • 新年第一天,让我们讨论一下未来一年JAVA的发展趋势! 个人认为,JAVA将主要朝ERP和JAVA手机方面发展!
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getclasspath定义及介绍
  • 目录 iis7站长之家
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: javaserializedobjectmimetype定义及介绍
  • redhat7.3下,java程序打印中文直接用java命令执行正常,用crontab执行java命令为乱码
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: javafilelistflavor定义及介绍
  • 各位学java的朋友,学java的未来是什么,你们学java都用来开发什么项目啊!来者给分!!
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getvmname定义及介绍
  • 请问java程序中的import为什么有的用java.….*,而有的又用java.….…,有什么区别吗?
  •  
    当前位置:  编程语言>java/jsp

    java tomcat实现Session对象的持久化原理及配置方法介绍

     
        发布时间:2013-10-4  


        本文导语:  对于一个企业级应用而言,Session对象的管理十分重要。Sessio对象的信息一般情况下置于服务器的内存中,当服务器由于故障重启,或应用重新加载时候,此时的Session信息将全部丢失。为了避免这样的情况,在某些场...

        对于一个企业级应用而言,session对象管理十分重要。sessio对象的信息一般情况下置于服务器内存中,当服务器由于故障重启,或应用重新加载时候,此时的session信息将全部丢失。为了避免这样的情况,在某些场合可以将服务器的session数据存放在文件系统数据库中,这样的操作称为session对象的持久化。session对象在持久化时,存放在其中的对象以序列化的形式存放,这就是为什么一般存放在session中的数据需要实现可序列化接口java.io.serializable)的原因了。

        当一个Session开始时,Servlet容器会为Session创建一个HttpSession对象。Servlet容器在某些情况下把这些HttpSession对象从内存中转移到文件系统或数据库中,在需要访问 HttpSession信息时再把它们加载到内存中。


    Session的持久化是由Session Manager来管理的。Tomcat提供了两个实现

    org.apache.catalina.session.standardmanager  

    org.apache.catalina.session.PersistentManager

    下面分别就StandardManager和PersistentManager两种实现进行介绍。

    1.StandardManager

      StandardManager是默认的Session Manager。它的实现机制为:当Tomcat服务器关闭或重启,或者Web应用被重新加载时,会对在内存中的HttpSession对象进行持久化,并把它们保存到文件系统中,默认的文件为<CATALINA_HOME>/work/Catalina/hostname/ applicationname/SESSIONS.ser。

    2.PersistentManager

      PersistentManager能够把Session对象保存到Session Store中,它提供了比 StandardManager更为灵活的Session管理功能,它具有以下功能:

      对内存中的HttpSession对象进行持久化,把它们保存到Session Store中。

      具有容错功能,可以及时把Session备份到Session Store中,当Tomcat服务器意外关闭后再重启时,可以从Session Store中恢复Session对象。

      可以灵活控制在内存中的Session数目,将部分Session转移到Session Store中。

       Tomcat实现持久化Session Store的接口为org.apache.Catalina.store,目前提供了两个实现这一接口的类,即org.apache.Catalina.FileStore和org.apache.Catalina.JDBCStore。


    实现配置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" />


    相关文章推荐:
  • 写一个方法,向它传递一个对象,循环打印出对象层次结构中的所有类?thinking in java里面的一个习题不知道如何做请教高手?
  • 各位高手知道在JAVA中如何用一个名称创建一个对象实例,并调用其方法,注意:在编写代码时并不知要创建的对象的类名,也并不知方法名
  • java里基本数据类型是什么?对象么?
  • Java中所有东西都是对象吗?
  • 能在JavaScript中访问Jsp页面的Java对象?
  • Java能调用OLE对象吗?怎样利用Java生成Excel报表?
  • 关于java中类和对象的问题.
  • Java 对象哈希映射库 JOhm
  • 通用并发 Java 对象池 Vibur Object Pool
  • Java对象数据库 ObjectDB
  • Java对象转换库 EZMorph
  • java applet和servlet之间是否可以传递对象?
  • java.util类对象的DATE方法为何不能用? <%=new java.util.date()%>,在页面中是这样写的,服务器用的是Resin.
  • java如何调用word文档对象??
  • 如何检测一个java.sql.ResultSet对象是否eof?
  • Java对象的SQL接口 JoSQL
  • 如何在JAVA方法中返回多个对象,谁能解决给200分。
  • Java对象序列化框架 Kryo
  • Java对象关系映射 SimpleORM
  • 在java中怎么知道一个对象占用内存的字节数?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3