【发布时间】:2015-01-20 00:25:20
【问题描述】:
我们正在尝试在运行单个服务器的 elasticbeanstalk 环境中为 tomcat 7 配置 dynamodb session manager。
我们可以看到会话数据定期备份到 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>
我们尝试将 maxIdleBackup 和 maxIdleSwap 设置为 tomcat 7 docs 中定义的高数值,但无济于事。
如果我们将 maxIdleBackup 和 maxIdleSwap 设置为零,则错误会减少,因为会话数据会更频繁地备份到 dynamodb,但这并不能解决问题。
是什么导致 tomcat 从 Store 加载回会话数据?我的理解是,只有当它根本不可用时才应该从商店加载它(即客户点击不同的 tomcat)。
【问题讨论】:
标签: java amazon-web-services tomcat7 amazon-dynamodb amazon-elastic-beanstalk