3

我正在实现 jsr 186 portlet,其中包含一些 servlet 来实现一些 ajax。问题是如果我只进行一段时间的 AJAX 调用,我会丢失会话。奇怪的是,保持 servlet 会话处于活动状态并不能防止 portlet 会话超时。

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

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

谢谢,米格尔平

4

2 回答 2

1

我有同样的问题。(使用 OpenPortal Portlet 容器)

据我所知,有两个不同的会话,1-portlet 会话,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 定义通道)解决了我的问题。

感谢您的编辑。

于 2010-02-01T09:18:40.670 回答
0

我使用一个不断轮询portlet url 的javascript 计时器来实现它。portlet url 是预先生成的,因此可以在 javascript 中访问。

于 2009-09-25T19:07:55.070 回答