我在ui端使用ExtJs + CometD,在我的应用程序中使用Spring + Jetty作为后端。用户使用spring authentication manager(j_spring_security_check)进行身份验证。 正常的http请求发送到特定的url模式(/ myapp),并且cometd通信发生在不同的url模式(/ cometd)上。
我在服务器上设置的会话超时值为30分钟。一旦用户登录,CometD活动就会启动(如握手,连接等)。我正在使用Bayex传输来将cometD用作WebSocket和长轮询。对于不支持WebSocket的浏览器,CometD通信使用长轮询机制。
问题在于CometD客户端的长轮询,当来自CometD长轮询的心跳到来时,服务器上的会话超时计数器总是被重置。因此,会话永远不会在服务器上超时。
如果请求来自特定的URL(在我的情况下是cometD url),是否有办法避免重置会话的会话超时值。
此外,是否可以删除cometD发送给服务器的HTTP标头内的JSSIONID参数。可能如果我可以从http标头中删除JSESSIONID,那么服务器将不会重置该会话的超时计数器。
谢谢,
BRIJ
答案 0 :(得分:1)
这已在CometD邮件列表中询问,请参阅 https://groups.google.com/forum/?fromgroups=#!topic/cometd-users/xoTRl3lL9_o
投票给http://bugs.cometd.org/browse/COMETD-416,它可能包含在CometD 2.6.0中。
答案 1 :(得分:-1)
您需要使用活动扩展。请点击链接