java - tomcat集群环境下获取servlet上下文变量数据

标签 java tomcat servlets

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

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

我已经开发了模块,但没有找到解决上述问题的方法。我google了一下,发现tomcat不支持context replication。

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

最佳答案

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

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

关于java - tomcat集群环境下获取servlet上下文变量数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25093693/

相关文章:

java - android 创建 .txt 和 .csv 文件抛出 ENOENT No such file or directory 异常

security - 在 Tomcat 中禁用 HTTP 方法

java - 如何将字符串数组定义为上下文文件中的环境参数/变量?

java - Tomcat Axis Web 服务客户端读取超时。超时配置

http - 为什么 Chrome 或 Safari 不能正确播放我的 MP3?

java - java 1.6.013 中的 @WebServlet 注释支持

java - Java 编译器如何对下界通配符执行类型删除?

java - JMS 持久性和持久性

Spring MVC 和带有 POJO 的处理程序方法

java - 初始化时出现 Log4j 警告?