2011-09-06 61 views
3

是否有用户MongoDB作为Tomcat6的中央会话存储?如果是这样,我们是否可以有一个tomcat服务器集群读取来自MongoDB的会话数据,以便可以在不需要粘性会话的情况下对集群进行大小调整(即时添加更多的框)?Tomcat6的基于MongoDB的会话存储

回答

2

我想我找到了我一直在寻找。

https://github.com/dawsonsystems/Mongo-Tomcat-Sessions

如果有人已经在生产中使用它,我很想听听你的经历。

+0

你有没有机会在生产中使用它?对此的任何反馈都非常有帮助。 – ChrisOdney

+0

也期待使用此...是否正确阅读README中使用此SessionManager不支持聚簇mongo?任何反馈都将不胜感激。 –

0

的Tomcat/J2EE会话具有getId()方法,该方法返回当前用户的会话ID。您当然可以将它用作MongoDB中sessions集合的关键字,并存储您想要的任何数据。

我不知道有任何预建的工具和Tomcat 6条具体整合,但这并不意味着它们不存在。但是这是一个相当简单的任务,只需编写自己的DAO来访问会话数据,最简单的方法是给出HttpSessionHttpServletRequest

如果您的会话数据是你保持唯一的共享状态,然后将它移动到MongoDB中(或任何关闭应用程序服务器的数据库或工具)将让您缩放像你求婚。如果您在应用程序服务器上维护了其他状态,则需要确定如何将其从应用程序服务器移到共享资源上。

+0

确定。我试图改进这个问题。看一看。 – rreyes1979

+0

更新,希望这有助于。 – dcrosta

0

我觉得有使用MongoDD存储会话,只使用Servlet的API函数,没有专有的应用服务器的功能更好的办法。

  1. 所有你需要创建自己的实现的 HttpSession的基础上storeing Map的第一属性
  2. 您需要创建的HttpServletRequest的实现(使用HttpServletRequest的包装),其覆盖的getSession法和 返回您的实现
  3. 您需要创建一个过滤器,取代了给定的HttpRequest对你创建并执行MongoDB的处理加载和存储属性映射

你会发现一些代码样本(可悲的是在德语)位置:http://mibutec.wordpress.com/2013/09/23/eigenes-session-handling-in-webapplikationen/