我在Spring + Tomcat应用程序上使用Memcached会话管理器(documentation here)。我正在使用非粘性会话和单个memcached节点。除了我尝试修改与长轮询请求关联的会话时,会话持久性正常工作。我正在存储DeferredResult的地图 - > HttpSession,当用户需要通知应用程序中的更新时,我会遍历Map的入口集。此时,有关各种用户状态的信息将在其会话中更新。我已经检查了在会话中设置信息并立即从会话中检索它之后,状态已更新。但是,当用户发送下一个长轮询请求时,尚未保存更新的状态信息。这是我的MSM配置:
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="(single node)"
sticky="false"
sessionBackupAsync="false"
lockingMode="uriPattern:/(.*)Updates(.*)\.html"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
/>
对于典型的HTTP请求,我没有看到这个问题,只有当持有用户的DeferredResult然后尝试更新会话信息时。我的配置有问题,或者我可以手动触发保存的方式吗?
感谢任何帮助!