Tomcat6 基于 MongoDB 的会话存储
有没有办法使用 MongoDB 作为 Tomcat6 的中央会话存储?如果是这样,我们是否可以拥有一个 Tomcat 服务器集群,从 MongoDB 读取会话数据,以便可以动态调整集群大小(动态添加更多框),而不需要粘性会话?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我想我找到了我正在寻找的东西。
https://github.com/dawsonsystems/Mongo-Tomcat-Sessions
如果有人使用过它正在制作中,我很想听听您的经验。
I think I found what I was looking for.
https://github.com/dawsonsystems/Mongo-Tomcat-Sessions
If anyone has used it in production, I would love to hear your experiences.
Tomcat/J2EE 会话有一个
getId()
方法,该方法返回当前用户的会话 ID。您当然可以使用它作为 MongoDB 中sessions
集合的键,并存储您想要的任何数据。我不知道有任何专门与 Tomcat 6 集成的预构建工具,但这并不意味着它们不存在。但这是一项相当简单的任务,最简单的方法可能是编写自己的 DAO 来访问给定 HttpSession 或 HttpServletRequest 的会话数据。
如果您的会话数据是您维护的唯一共享状态,那么将其移动到 MongoDB(或任何应用程序服务器外的数据库或工具)将使您能够按照您的建议进行扩展。如果您在应用程序服务器上维护了其他状态,那么您将需要确定如何将其从应用程序服务器移至共享资源上。
Tomcat/J2EE sessions have a
getId()
method which returns the session ID for the current user. You can certainly use this as a key into asessions
collection in MongoDB, and store any data you'd like.I'm not aware of any pre-built tools to integrate specifically with Tomcat 6, but that doesn't mean they don't exist. But this is a fairly straightforward task, it might be simplest just to write your own DAO to access session data given an
HttpSession
orHttpServletRequest
.If your session data is the only shared state you maintain, then moving it to MongoDB (or to any off-appserver database or tool) will enable you to scale like you propose. If you have other state maintained on the application servers, then you will need to determine how to move that off of the app servers and onto a shared resource.
我认为有一种更好的方法使用 MongoDD 来存储会话,只需使用 Servlet-Api 功能,而不需要专有的 Appserver 功能。
基于用于存储属性的 Map 的 HttpSession
返回您的实现
您在这里找到一些代码示例(遗憾的是德语): http://mibutec.wordpress.com/2013/09/23/eigenes-session-handling-in-webapplikationen/
I think there is a better way using MongoDD to store sessions, just using Servlet-Api functions and no proprietary Appserver-features.
HttpSession based on a Map for storeing attributes
returns your implementation
You find some code-samples (sadly in german language) here: http://mibutec.wordpress.com/2013/09/23/eigenes-session-handling-in-webapplikationen/