【问题标题】:Restoring JSF application state using memcached as session fail-over使用 memcached 作为会话故障转移恢复 JSF 应用程序状态
【发布时间】:2012-05-25 12:02:49
【问题描述】:

我设置了两个相同的 tomcat 服务器来托管相同的 Web 应用程序(Sun RI JSF 2 / Tomahawk)。对于负载平衡和故障转移场景,我使用 nginx 服务器作为反向代理,将请求委托给一台或另一台服务器。现在定义了一个 tomcat 作为备份解决方案,以便 tomcat server 1 处理所有请求。当我终止 tomcat 1 的进程时,nginx 很好地将以下请求委托给 tomcat 服务器 2。为了重用会话数据,我将两个 tomcat 服务器配置为使用 memcached 作为会话存储。 JSF 被配置为将其状态存储在服务器上。

关于日志文件,这个设置看起来相当不错,会话数据是使用 memcached 服务器读取和存储的。例如,这有助于使用 Web 应用程序,即使 Tomcat 1 已关闭,也无需再次登录。

尽管如此,我的(会话范围的)支持 bean 似乎在分别恢复会话后没有被存储或被使用。表单字段留空,应该用会话 bean 中的数据填充。

用上面提到的技术有可能做这些事情吗?

【问题讨论】:

  • 为避免显而易见,会话中需要进行的所有内容都已实现 Serializable?
  • 我想是的。我唯一忘记提及的是我也使用 CDI/OWB。为了定位错误,我编写了一个小型计数器应用程序,计数器值绑定到会话范围的 bean。设置保持不变。我意识到当使用一个或另一个负责的服务器发送一些请求时,计数器并没有改变它应该的方式。用 Weld 替换 OWB 后,计数器并因此恢复状态似乎工作。如果您根本不使用 CDI,这同样适用。我现在将在主应用程序中将 OWB 替换为 Weld,并让您知道结果是什么。
  • 您是否使用自己的解决方案将会话存储在 memcached 或 memcached-session-manager (memcached-session-manager.googlecode.com) 中?
  • 嗨马丁,我正在使用你的 memcached-session-manager

标签: session jsf serialization memcached restore


【解决方案1】:

使用 memcached-session-manager 和 OWB,您应该使用 tomcat

我目前正在开发与 OWB 和 tomcat 兼容的新版 msm >= 7.0.22。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-13
    • 2015-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多