TOMCAT5.0+SQL Server
用户登陆后,会将该用户有userID记录到session中,根据该用户所拥有的权限,可以对某些记录进行添加,修改等操作(在进入某条记录的时候,会把该记录的id号也记录到session中),现在问题是这样:用户在操作记录时,有时会出现session丢失的情况(相对于该客户机所有session都会丢失,但session ID是存在,并没有发生改变),这过程也没有将session值清空的代码,session 的 timeout时间为"-1"。
为这个问题在网上找相关资料也找了不少,问了别人也不少,都没有结果。听说这里高手如云,希望各位能解小弟燃眉之急!谢谢了

解决方案 »

  1.   

    up
    tomcat的session好像这不是第一贴。
      

  2.   

    但是丢失好像是不太可能的,没有发现。SessionID其实一直都有的,你看看 Session的创建时间呢?
      

  3.   

    应该是不可能的,
    一、你的tomcat要没有重启过,重启后session是没有了的(除非你做session的序列化
    二、session没过时
    三、你的IE窗口要是你登录的窗口或者由这个窗口打开的链接,从桌面上打开session是不同的
      

  4.   

    大部分原因在于IE安全性设置,你用一低版IE试试看
      

  5.   

    东西开发出来是面向用户的,开发者可以换低版本的IE试试也许可以,难道开发者也要规定用户也必须得换低版本的IE吗???没道理吧!
      

  6.   

    要不没打开窗口一次就重新将userid写入session。
      

  7.   

    你每打开一次浏览器就删除一次COOKIE,试试!
    我以前也是这样的,这样的原因好像是服务器的问题。不过我做那个项目时服务器补丁不是我打的,我也不知道为什么,呵呵
      

  8.   

    客户端webbrowser会对服务器session有影响?
    怎么影响的呢
      

  9.   

    weblogic我用的,也是这样sessin的问题,就出错了。
    指针断裂可能是原因,具体怎么解决还没好的办法,可能注意下字符串的初值和传值过程会不错吧
      

  10.   

    to 各位兄弟
    你们说的情况,我仔细看了好几遍,谢谢你们的关注
    一、这个情况确实存在,要不然我也不用在这里发贴子了
    二、我想应该不是IE浏览器的原因,因为我独自进行测试的时候,测了近一个上午,也没有出现一次这样的情况,如果是IE浏览器的原因的话,那也应该会再次发生
    三、有关指针断裂的情况,请问一下具体应该怎么解决。
    四、每次打开浏览器就删除一次COOKIE,我会试试,谢谢!
    再次谢谢你们的关注,如果我找到解决的方法,会及时在这里贴出来与大家共享,也希望看到这个贴子的兄弟能在这里留下你的看法(至少也帮我顶一下),:)
    我也会到网上其他地方找相关的资料,再次谢谢你们!
      

  11.   

    to jin2005(生活就像一场游戏)你说到的
    ===============================================================
    二、我想应该不是IE浏览器的原因,因为我独自进行测试的时候,测了近一个上午,也没有出现一次这样的情况,如果是IE浏览器的原因的话,那也应该会再次发生
    ===============================================================你是不是在一台机器上做的测试?!  我上次出现这个情况的环境是两台电脑之间,用iframe的形式,把两个在不同系统中(一个使用weblogic,一个使用tomcat.)的页面嵌套起来,然后把校验码放在session里,一个页面登陆后转到另一个系统的页面,页面一转向就会发现session值丢失了,具体表现为怎么也登录不进去,一直报校验码不正确的错误!这是我上次遇到的情况,我们碰到的具体问题可能不同,但由于IE安全性导致的session值丢失是确实存在的,而且有很多方式会导致出现这样的问题,我所遇到的只是一个具体的问题罢了
      

  12.   

    在服务器处于启动状态时,更新/修改你的JSP文件/class文件,极容易造成session丢失之类非常奇怪的问题!
      

  13.   

    我估计是IE为了防止某些企图不良的用户以查看session的方式盗取用户ID,IE会过滤掉一部分session的值,但是JSESSIONID是存在的! 你可以试着把JSESSIONID的值传过去....http://localhost:7001/test/test.jsp;jsessionid=DN2fvpGp0LBj3n8pN5T4TLJ2nq6ThLykynTp2vswn9NvysQ4ljB2!897743055!1129184799265  把session值传过去之后你再session.getAttribute("name"); 其他不要做任何处理,就只要传个值过去,然后你再取你原来set进去的值,你试试!   weblogic里管理的sessionid比tomcat里sessionid的值要长,这是正常的,不是问题
      

  14.   

    用枚举类把session里面所有的变量和变量值打印一下,看看有哪些,在什么位置丢失就知道了
      

  15.   

    由于这两天一直在修改与测试可能出现这种错误的问题,所以没有时间上来给大家回复。很抱歉!
    to zoeg(沉香)
    ----------------------------------------
    在服务器处于启动状态时,更新/修改你的JSP文件/class文件,极容易造成session丢失之类非常奇怪的问题!
    -----------------------------------------
    没有你说的这种情况,每次在出错的时候,并没有更新/修改你的JSP文件/class文件,所以也应该不是这个原因。to luckysnow2046(飞扬我心) 
    ----------------------------------------
    用枚举类把session里面所有的变量和变量值打印一下,看看有哪些,在什么位置丢失就知道了
    ----------------------------------------
    用你说的方法,我试过了,除了session id 会显示出来外,其他值全部null.而且出错的位置大部份时候都没有问题。to riancoat(天黑黑) 
    你说的这种方法,我明天再试试,谢谢你。也谢谢上面两位的回复!
      

  16.   

    四、每次打开浏览器就删除一次COOKIE,我会试试,谢谢!-------------------------------------------------------------------------
    还有上面这点,试过了,还有没有解决。
      

  17.   

    呵呵 不谢 我也遇到过这样的问题,也在CSDN上发帖了 可惜没人理我
      

  18.   

    明天终于解决了,引起session莫明丢失的原因如下:
    由于在丢失的地方(导航栏)之间的链接用的是URL链接(如http://XXX:8080/YYY/...),IE有时候会认为我所给的链接是受限站点,所以把它拦截下来了。后来将那几个链接分成几个相对路径后,问题就解决了。
    现在还有一个疑问,为什么其中有一个客户端出现丢失的问题后,其他客户端也会受到影响。
      

  19.   

    你用的什么服务器?如果是weblogic可以看看服务器的设置,在配置服务器中有一个设置是设置SESSION超时时间的。
      

  20.   

    ......  真客气,还给我50分,  谢谢了我说了是由于IE安全性引起的吧 嘿嘿你有MSN吗?有些具体细节我想再问问你
      

  21.   

    这几天都在看测试结果,没有再出现类似情况了,我的MSN是[email protected]