java - 使用 Ehcache 的 WebApp session 管理

标签 java session web-applications ehcache session-management

在我的项目中,我使用 ehcache 来存储登录的用户详细信息和一些其他信息(哪个应用程序将在运行时使用它而不是从数据库中获取)。以下是我的ehcache配置:

<cache 
    name="normalCache"
    maxElementsInMemory="50000" 
    eternal="false"
    timeToIdleSeconds="1800" 
    timeToLiveSeconds="0"
    overflowToDisk="false"
    memoryStoreEvictionPolicy="LRU"
/>

但问题是大部分时间 session 超时发生(即使用户不活跃超过 30)。有时它会持续 10 分钟,...

所有操作都将尝试根据每个请求从 ehcache 检索用户对象。

我不确定 ehcache 将如何确定过期时间。

最佳答案

当满足以下条件之一时,Ehcache 会从缓存中逐出对象:

  1. 对象未从 ehcache 访问(读取或更新)超过 timeToIdle 秒。如果未设置 timeToIdle,则此规则不适用。换句话说,即使在未设置 timeToIdle 时从未从缓存中访问(读取或更新)对象,对象也有资格在缓存中无限期保留。

  2. 对象已在缓存中超过 timeToLive 秒。如果未设置 timeToLive,则此规则不适用。换句话说,对象有资格在缓存中无限期保留。

  3. 缓存中的项目数已达到 maxElementsInMemory 限制。在这种情况下,memoryStoreEvictionPolicy 开始行动并删除符合逐出策略的元素,直到缓存中的元素数量变得小于 maxElementsInMemory 限制,即使这些项目符合条件根据条件 1 和条件 2 在缓存中。

希望澄清一下!

关于java - 使用 Ehcache 的 WebApp session 管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7701378/

相关文章:

java - 代码段的时间复杂度

PHP从html表单计算

javascript - 在自定义域/url 上托管 Node.js 服务器

web-applications - 如何在 Appsource.Microsoft.com 上发布 "Web App"?

java - 从文件中读取 unicode 并显示文本

java - 在 weblogic 12c 上部署时创建 Azure 存储容器失败

java - 使用 wsdl2java 生成具有适当异步支持的 stub

python-2.7 - 'secret_key'在webapp2框架中代表什么?

python - 如何在 Django session 模型中设置自定义字段?

java - 为什么将 session 范围内的对象可序列化视为一种良好实践?