我正在实现 jsr 186 portlet,其中包含一些 servlet 来实现一些 ajax。问题是如果我只进行一段时间的 AJAX 调用,我会丢失会话。奇怪的是,保持 servlet 会话处于活动状态并不能防止 portlet 会话超时。
有没有办法让我在服务器端的 servlet 中保持会话处于活动状态?
FWIW 我正在使用 spring 和 spring mvc/portlet。
谢谢,米格尔平
我有同样的问题。(使用 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 定义通道)解决了我的问题。
感谢您的编辑。
我使用一个不断轮询portlet url 的javascript 计时器来实现它。portlet url 是预先生成的,因此可以在 javascript 中访问。