Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Session 使用memcached as会话故障转移恢复JSF应用程序状态_Session_Jsf_Serialization_Memcached_Restore - Fatal编程技术网

Session 使用memcached as会话故障转移恢复JSF应用程序状态

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

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

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

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


使用上面提到的技术是否可以做这些事情?

使用memcached会话管理器和OWB,您应该使用tomcat<7.0.22,因为在这个版本中,ServletRequestListeners的通知发生了更改(这是OWB用于故障转移支持的机制)


我目前正在开发一个新版本的msm,它与OWB和tomcat>=7.0.22一起使用。

对于memcached会话管理器和OWB,您应该使用tomcat<7.0.22,因为在这个版本中,ServletRequestListeners的通知发生了更改(这是OWB用于故障转移支持的机制)


我目前正在开发一个新版本的msm,它可以与OWB和tomcat>=7.0.22一起使用。

为了避免显而易见的问题,会话中需要做的所有事情都已经实现了可序列化的
。我唯一忘记提到的是,我也使用CDI/OWB。为了定位错误,我编写了一个小型计数器应用程序,将计数器值绑定到会话范围的bean。设置保持不变。我意识到,当使用一台或另一台负责服务器发送一些请求时,计数器并没有改变它应该采用的方式。在用Weld替换OWB后,计数器和恢复状态似乎起作用。如果您根本不使用CDI,则同样适用。现在,我将在主应用程序中用Weld替换OWB,并让您知道结果。您是否使用自己的解决方案在memcached或memcached会话管理器()中存储会话?嗨,Martin,我使用您的memcached会话管理器来避免明显的问题,会话中需要执行的所有操作都已经实现了可序列化的
。我唯一忘记提到的是,我也使用CDI/OWB。为了定位错误,我编写了一个小型计数器应用程序,将计数器值绑定到会话范围的bean。设置保持不变。我意识到,当使用一台或另一台负责服务器发送一些请求时,计数器并没有改变它应该采用的方式。在用Weld替换OWB后,计数器和恢复状态似乎起作用。如果您根本不使用CDI,则同样适用。现在,我将在主应用程序中用Weld替换OWB,并让您知道结果是什么。您是否使用自己的解决方案在memcached或memcached会话管理器()中存储会话?嗨,Martin,我正在使用您的memcached会话管理器