java - Tomcat:将 session 存储在数据库中

标签 java tomcat servlets jdbc replication

<分区>

我正在寻找一种方法来避免内存中 session 复制/集群并将 session 存储在数据库中。此时使用 Tomcat 的 JDBCStore 是没有用的,因为它只是将不活动的 session 存储在数据库中以节省服务器内存。 有什么建议吗?

预先感谢 费边

最佳答案

如果您不想以应有的方式使用 session ,那么根本不要使用它 - 开发您自己的 session 对象。它仍然可以实现 HttpSession,甚至可以从 HttpSession 的实现中扩展。

您可以使用Filter 来包装您的请求,以便它返回您的 session 对象而不是标准对象。在您的 session 中,您可以将内容存储在数据库中而不是内存中。

您可以使用 Hazelcast 而不是写入数据库- 它提供分布式集合。但我想这将花费与配置 session 复制相同的工作量。 session 复制并不难——所有容器都支持它。

这些是粗略的指导方针,任务不会是微不足道的。而且我建议坚持标准的 session 使用模式,并且仅在确实需要时才将内容存储在数据库中。

为了避免复制的需要,您可以尝试使用粘性 session - 即当负载均衡器将用户定向到服务器时,该用户的每个后续请求都会发送到同一台服务器。

关于java - Tomcat:将 session 存储在数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4856324/

相关文章:

java - 在 CameraUpdateFactory.newLatLngBounds 周围添加额外的填充

java - 将日历对象与 after 或 timeInMillis 进行比较?

tomcat - Web.xml 欢迎文件在 jetty 中不起作用

java - 当我混合 JSTL 1.0 和 JSTL 1.1 taglib 声明时,它会在我的某些服务器上导致 ParseException,但不是全部。为什么?

web-applications - 从其他线程关闭 http session

java - 在 ActiveMQ 中使用 Spring Integration JMS 实现发布订阅

java - 使用 for 循环写入 Excel 文件中的单元格,删除前一列

java - 我们可以在 Apache tomcat 中使用 @EJB 注释吗?

java - 想要一些解密tomcat错误的指导

javascript - 隐藏字段是否总是提交项目列表中的第一个值?