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

3
我正在实现JSR 186门户,将一些servlet混合在其中以实现一些AJAX。问题是,如果我只进行一段时间的AJAX调用,我会失去会话。奇怪的是,保持servlet会话活动状态并不能防止portlet会话超时。
有没有办法在服务器端从我的servlet中保持会话活动状态呢?
顺便说一下,我正在使用Spring和Spring MVC / Portlet。
谢谢, Miguel Ping
2个回答

1

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

据我所知,有两种不同的会话,1-端口会话,2-容器会话。

我创建了一个简单的Portlet,并定期从容器中使用ajax向Portlet发出请求。然而,会话超时了。我的代码片段在这里:

<%
    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 定义频道)来解决我的问题。

感谢编辑。


0

我使用了一个JavaScript计时器来实现它,该计时器不断轮询一个portlet URL。这个portlet URL是事先生成的,因此在JavaScript中可以访问。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接