[英]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.