繁体   English   中英

在tomcat集群环境中获取servlet上下文变量数据

[英]get servlet context variable data in tomcat cluster environment

目前,我正在开发模块以在我的应用程序中显示在线用户列表。 我正在使用彗星流技术。 当用户登录时,我将数据放入地图,然后在消息队列中发送数据。 现在,消息队列存储在servlet上下文中。

现在我面临的问题是它在本地环境中工作,但在生产环境中却不工作,因为在生产环境中我已经设置了tomcat集群。 因此在Tomcat 2中无法访问在Tomcat上下文中为Tomcat 1设置的数据。

我已经开发了模块,但没有任何办法解决上述问题。 我在google上发现tomcat不支持上下文复制。

我怀疑在tomcat群集Web应用程序中将创建多少个JVM实例。 例如我有两个tomcat集群。

我不会使用servlet上下文来存储集群的数据。 常见的模式是将数据库用于必须在不同服务器之间共享的数据。

对于您的用例,无需在不同运行之间保留值,因此即使易于设置,数据库也不一定是一个好的解决方案。 恕我直言,您所需要的只是共享数据缓存或更好的内存数据网格。 hazelcast应该易于使用以满足您的要求。 如果我正确理解它们,那么您需要的是一个分布式映射,其中将node_id,session_id作为键(或者可能只是session_id)串联,并将用户对象作为值。

在tomcat7中,这需要编写一个自定义阀门来强制复制,在tomcat 6中也是如此。请参阅对于Tomcat 6集群配置是否有useDirtyFlag选项? 看看如何做到这一点。

暂无
暂无

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

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