<分区>
我正在寻找一种方法来避免内存中 session 复制/集群并将 session 存储在数据库中。此时使用 Tomcat 的 JDBCStore 是没有用的,因为它只是将不活动的 session 存储在数据库中以节省服务器内存。 有什么建议吗?
预先感谢 费边
<分区>
我正在寻找一种方法来避免内存中 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 文件中的单元格,删除前一列