繁体   English   中英

Tomcat 7持久会话管理器从商店过早加载

[英]Tomcat 7 Persistent Session Manager prematurely loads from Store

我们正在尝试在运行单个服务器的Elasticbeanstalk环境中为tomcat 7配置dynamodb会话管理器

我们可以看到会话数据被定期备份到dynamodb,但是偶尔(对于同一会话)旧的会话数据也被从dynamodb中加载回去。 在我们的应用程序中,这通过加载您正在查看的上一个项目来体现出来(该项目存储在会话中)。 JSESSIONID cookie保持不变,并且客户端保持相同的会话。 如果我们关闭会话管理器,则此问题已解决。

这是我们的context.xml的内容

<?xml version="1.0" encoding="UTF-8"?>
<Context>
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<Manager
    className="com.amazonaws.services.dynamodb.sessionmanager.DynamoDBSessionManager"
    Table="SessionTable"
    RegionId="eu-west-1"/>
</Context>

我们尝试将tomcat 7文档中定义的maxIdleBackup和maxIdleSwap设置为高数字,但无济于事。

如果将maxIdleBackup和maxIdleSwap设置为零,则会减少错误,因为会话数据更频繁地备份到dynamodb,但这不能解决问题。

是什么导致tomcat从商店中加载会话数据? 我的理解是,只有在根本不可用的情况下,才应该从商店中加载它(即,客户端访问了另一个tomcat)。

我相信您会遇到问题6中提到的实现的异步特性(以及对粘性会话的隐式需求)

如果您不使用粘性会话,建议您使用同步的Redis方法

最后,我们求助于使用不存在此问题的JDBCStore 我希望将来有更多时间回到这个问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM