Portlet - 从服务器端保持会话活动

时间:2009-06-03 16:53:46

标签: java spring session portlet

我正在实现jsr 186 portlet,并将一些servlet用于实现一些ajax。问题是如果我只进行一段时间的AJAX调用,我会失去会话。奇怪的是,保持servlet会话的活动并不会阻止portlet会话超时。

有没有办法让我的servlet在服务器端保持会话活动?

FWIW我正在使用spring和spring mvc / portlet。

谢谢, Miguel Ping

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。 (使用OpenPortal Portlet容器)

据我所知,有两个不同的会话,1个portlet会话,2个容器会话。

我创建了一个简单的portlet,并定期从容器向portlet请求ajax。但是,会话超时。我的代码部分在这里:

<%
    int per=15000; //ms
    String sessionExtenderPath = "http://portal.abc.com.tr:8080/SessionExtend/SessionExtend";
    //This is a portlet which includes servlet that returns a simple string.
%>

<script>
    periyod=100;

    function invokeRequest(){
     $.get("< %=sessionExtenderPath% >", function(data) {
      alert(1);
     });
    }
    window.setInterval("invokeRequest()",periyod);
</script>

我通过请求容器页面解决了我的问题(没有为portlet定义通道)。

感谢您的编辑。

答案 1 :(得分:0)

我使用javascript计时器实现它,该计时器保持轮询portlet url。 portlet url是在beforehadn之前生成的,因此可以在javascript中访问。