我正在实现jsr 186 portlet,并将一些servlet用于实现一些ajax。问题是如果我只进行一段时间的AJAX调用,我会失去会话。奇怪的是,保持servlet会话的活动并不会阻止portlet会话超时。
有没有办法让我的servlet在服务器端保持会话活动?
FWIW我正在使用spring和spring mvc / portlet。
谢谢, Miguel Ping
答案 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中访问。