同步两个Web应用程序之间的会话

时间:2012-05-02 12:21:00

标签: session tomcat timeout

用例:

我在tomcat上运行了两个Web应用程序,它们部署在两台不同的机器上。我的一个申请是父母,另一个是孩子。我登录到我的父应用程序并在父应用程序的一个页面上点击链接我向我的子应用程序发送浏览器请求,该应用程序在单独的浏览器窗口中打开其中一个页面。在这种情况下,我希望我的两个应用程序共享相同的超时值,并且应该像一个完整的应用程序。

处理的场景:

  1. 如果我从我的父应用程序注销,我的子应用程序也应该注销
  2. 如果我关闭父窗口,父母应该与孩子一起注销
  3. 如果我关闭子窗口,孩子应该注销,父母应该保持登录状态
  4. 如果两个窗口都关闭,父母和孩子都应该退出
  5. 解决方案:

    1. 将父会话时间设置为某个值... 30分钟
    2. 在parent..let上创建一个REST服务,例如“parentisAlive()”
    3. 在child..let上创建一个REST服务,例如“childisAlive()”
    4. 在父级和子级上创建会话侦听器
    5. 每个会话侦听器都将调用其各自的REST服务
    6. REST服务将根据自己的应用程序的sessionID
    7. 相互通信
    8. 父母会预先(内存/数据库)孩子的sessionID,反之亦然
    9. 每个应用程序会话侦听器在每个超时值达到特定值时都会被激活.say 20mins
    10. 会话侦听器将调用相应的REST服务,该服务将负责同步彼此的会话超时值
    11. 任何人都可以建议,如果这是一个很好的解决方案来实现会话同步,有没有人看到任何缺陷?

1 个答案:

答案 0 :(得分:0)

Tomcats Single sign on阀门将满足您的大部分需求。但是,如果您关闭浏览器窗口,会话仍将保留,只要至少在窗口或选项卡上打开。