应该是所有的web容器都是这种机制的。为了保证 数据的一致性 。

解决方案 »

  1.   

    "在Tomcat的配置文件中允许reload变动的class,"在哪里配置的啊?
      

  2.   

    cookie只是实现Session的细节
    Tomcat是用cookie实现Session的,但是.Net就不一定这根Session失效好像没有关系把
      

  3.   

    难道CSDN就没有知道的了?晕!
      

  4.   

    难道CSDN就没有知道的了?晕!
    ====================
    最反感这样的话
    你把session的原理搞明白,就不会问这个问题了、
      

  5.   

    难道CSDN就没有知道的了?晕!
    ====================
    最反感这样的话
    你把session的原理搞明白,就不会问这个问题了、
    ============================最讨厌这种回答问题的态度,呵呵,你如果了解的话就请赐教,
    不了解的话,说这种话也没有任何帮助呀csdn毕竟是国内一个入门级程序员交流的一个论坛,还是太浮躁
      

  6.   

    这是一种学习的态度,也是学习的方法,提任何问题你都要考虑后再提,
    就好比你提的这个问题。是关于session的,你首先应该找些session的资料,把session的工作原理搞明白,那样你的问题就自己就明白能不能实现,自己就解决了。而且以后你遇到session方面的东西就都明白了。不要动不动一个小问题,不自己思考学习就来问。就是别人回答了你。你这个小问题明白了。以后的session方面的问题你一样不明白,
    再者你的这个问题要说明白,就一定要了解session的运行机制。我最讨厌问个问题没人回答就乱叫
      

  7.   

    论坛是一个让人提问题的地方,遇到问题的时候,不是每个人都需要把这个问题的前前后后都搞得很清楚,
    每个人做项目的关注点有很大不同,你可能这次用到Hibernate,要关注技术,
    下次也许就要关注分析复杂的业务流程,甚至做BPR,
    当然如果你只是个简单的Developer,更需要花时间关注基础的软件工程或者是CMM或者XP类的软件管理我一开始只是简单抱怨一句“难道CSDN就没有知道的了?晕!”,加了一点点个人情绪,仅此而已
    相信没有说什么过分的话,可楼上的那位不知道怎么影响到你了,说这么多,加了更多的个人情绪,是否如果我继续下去,这个帖子就会变成互相攻击的垃圾贴?虽然csdn我很少来,但也不希望是这样子的看你已经有了5颗星,应该是CSDN里的老手了,我相信你比我更应该在这个技术论坛里改善论坛风气,帮助别人,对么?
      

  8.   

    楼主,我来告诉你吧!!
    你的愿望是可以达成的。因为tomcat本身就支持这样的功能。它可以在服务关闭时,将当前的session写入到文件或者是数据库中(依据你在server.xml中的配置)。然后在服务重启后,自动将保存的session读取到内存中。
    我前端时间也问过同样的问题,结果论坛上的人都说不能实现,最后还是我自己测试成功了。
    我最初是在《TOMCAT与JAVA WEB开发技术详解》看到这个部分的,叫做session的持久化。
    具体代码如下:(注意,我这里只贴出了持久化到文件的实现方式,持久化到数据库的你可以发信问我,或者买书看看)
    <Context path="/helloapp" docBase="helloapp" 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="mydir" />
    </Manager></Context>maillogin.jsp:
    <%@ page contentType="text/html; charset=GB2312" %>
    <%@ page session="true" %>
    <html>
    <head>
      <title>helloapp</title>
    </head><body bgcolor="#FFFFFF" onLoad="document.loginForm.username.focus()"><%
      String name="";
    if(!session.isNew()){
        name=(String)session.getAttribute("username");
        if(name==null)name="";
    }
    %>
    <p>欢迎光临邮件系统</p>
    <p>Session ID:<%=session.getId()%></p>
      <table width="500" border="0" cellspacing="0" cellpadding="0">
        <tr>
          <td>
            <table width="500" border="0" cellspacing="0" cellpadding="0">
              <form name="loginForm" method="post" action="mailcheck.jsp">
              <tr>
                <td width="401"><div align="right">User Name:&nbsp;</div></td>
                <td width="399"><input type="text" name="username" value=<%=name%>></td>
              </tr>
              <tr>
                <td width="401"><div align="right">Password:&nbsp;</div></td>
                <td width="399"><input type="password" name="password"></td>
              </tr>
              <tr>
                <td width="401">&nbsp;</td>
                <td width="399"><br/><input type="Submit" name="Submit"  value="提交"></td>
              </tr>
              </form>
            </table>
          </td>
        </tr>
      </table>
    </body>
    </html>mailcheck.jsp:
    <%@ page contentType="text/html; charset=GB2312" %>
    <%@ page session="true" %>
    <html>
    <head>
    <title>
    checkmail
    </title>
    </head>
    <body><%
    String name=null;
    name=request.getParameter("username");
    if(name!=null)session.setAttribute("username",name);
    %><a href="maillogin.jsp">登录</a>&nbsp;&nbsp;&nbsp;
    <a href="maillogout.jsp">注销</a>&nbsp;&nbsp;&nbsp;
    <p>当前用户为:<%=name%> </P>
    <P>你的信箱中有100封邮件</P></body>
    </html>
    服务启动后,访问http://127.0.0.1:8080/helloapp/maillogin.jsp,输入名字后转到mailcheck.jsp,然后停止服务,此时,在%CATALINA_HOME%/work/catalina/localhost/helloapp/出现了指定的mydir目录,目录下出现存放具体session内容的文件。再次重启服务,从mailcheck.jsp转回maillogin.jsp(点击登录),页面出现通过session保存的姓名。也就是说,session持久化成功
      

  9.   

    哦,忘记说最关键的了。
    关闭服务和启动服务,一定不能使用windows下的图形界面程序!就是那个config tomcat。我最初就是害在它的手下,始终不能成功。
    后来无意间才发现,只有用脚本启动/停止服务,或者通过TOMCAT的WEB管理页面启动/停止服务,才会正常实现session的持久化!
      

  10.   

    s_phoenix() 的话很有道理,好像还与tomcat的版本有关吧,最好是5.0以上版本