如何从客户端解决会话超时错误?

时间:2013-07-18 06:43:26

标签: java javascript jquery java-ee

我遇到与会话超时相关的情况()当用户在网页上仍处于活动状态时。

当点击网页上的特定链接时,用户被重定向到弹出页面时发生了什么。这个弹出窗口包含一个Oracle表单(基本上是一个applet),这个applet嵌入在HTML页面中。

当用户正在处理此弹出窗口时,所有请求都将转向与Jboss服务器不同的表单服务器。所以经过一段时间会议结束。

我采用以下方法来解决此问题:

我在下面的弹出页面中添加了这个jquery代码。

<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script>
var timer=0;

function run(){         
    timer++;    

    if(timer == 2){
        $(document).bind('keyup mousemove',function(){        
            $(this).unbind('keyup mousemove');      
            $.ajax({
                url:     'https://bdqap1.acclaris.com/bensol/common/refreshsession.jsp',
                cache:   false,
                data:    'html',
                success: function(data,status) {                       
                }
            });
            timer=0;                                    
        });

    }
}// run ends here

setInterval(run,1000); 
</script>

此代码在弹出窗口上的任何鼠标或键盘移动中调用jboss服务器中的链接。这应该在用户活动时保持会话活动。

但是这种方法不起作用,因为jquery代码无法检测到Applet部分的任何移动。 Jquery无法运行applet是焦点。

我想从客户端解决此问题。有没有更好的方法?

1 个答案:

答案 0 :(得分:0)

您每2秒绑定并重新绑定事件处理程序。每30秒简单地执行一次ajax请求可能更简单(或者任何适当的时间来防止会话超时:

<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script>

function run(){     
  $.ajax({
    url:     'https://bdqap1.acclaris.com/bensol/common/refreshsession.jsp',
    cache:   false,
    data:    'html',
    success: function(data,status) {}
  });
}// run ends here

setInterval(run,30000); 
</script>