首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在集群环境中跨JSP应用程序共享HashMap

在集群环境中跨JSP应用程序共享HashMap
EN

Stack Overflow用户
提问于 2012-09-20 14:58:02
回答 1查看 625关注 0票数 3

我们的是一个基于JSP/JSF的应用程序,运行在WebLogic10上(在生产中集群)。我们有一个场景,其中(已登录的)用户获取对象上基于时间戳的锁。获取锁后,代码每隔60秒运行一次,以更新/失效锁。目前,锁的详细信息在数据库中维护。这意味着,每隔60秒,为了更新锁,就会触发一个更新查询。

我们正在尝试将此逻辑移到应用层,在那里我们可以避免命中数据库。为此,以前写入数据库的数据现在在HashMap中维护。但是,HashMap存储在ServletContext对象中。要为新用户获取锁,需要从ServletContext对象获取HashMap,然后对其执行所有操作。

然而,刚刚发现ServletContext对象不能跨集群复制。因此,假设当用户1获取对象1的锁时,节点1中的HashMap发生了更改,用户2登录,尝试获取对象1的锁,但请求命中节点2,我猜逻辑将失败,对吧?因为node-2不会有更新后的HashMap。

有什么想法/建议吗?请帮帮忙。

谢谢你,A

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-20 16:21:20

是的,我们为我们的一个项目做了类似的事情,在weblogic服务器上的所有集群节点之间共享ServletContext

检查weblogic的以下参数

coherence-servletcontext-clustered

true或false,以指示是否对ServletContext的属性进行群集。如果为真,则所有可序列化的ServletContext属性值将在所有群集节点之间共享。

如果未指定,则默认为false,这主要是因为Servlet规范指出ServletContext属性是JVM的本地属性,不应该被集群。

有关更多详细信息,请参阅http://docs.oracle.com/cd/E13924_01/coh.340/e14408/appparams.htm

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12507446

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档