2015-10-19 65 views
2

在Apache Tomcat服务器上的群集环境中部署JSF2.0。如何在群集环境中复制视图范围的bean?JSF2.0 @Viewscoped bean不在群集环境中复制

大部分bean都在viewscoped中,状态保存方法是客户端。

问题是:当我打开Home.xhtml的第一个请求去节点1.视图范围的bean被创建。点击操作按钮进行处理并加载相同的视图,现在请求转到节点2 - 视图不存在的地方.JSF创建新的viewscoped bean,这是我在node1中丢失之前状态的地方。

另一方面JSF视图状态可能无法在群集环境中正常工作。如何在集群环境中使用JSF2?

除会话复制和粘滞会话外,是否还有其他解决方案?

+0

会话复制或粘性会话就是答案。不这样做有许多其他的副作用,而不是破碎的视图范围。不知道为什么你不想使用你显然已经知道的正确解决方案。 – BalusC

+0

BaluC,谢谢你的回复。由于架构限制无法使用会话复制或粘滞会话。有没有解决这个问题的方法? –

+0

如果集群体系结构不是为有状态的web应用程序设计的,那么你最好重新设计你的web应用程序作为一个无状态的应用程序(例如,坚持要求有范围的bean并通过请求参数手动携带状态)。 – BalusC

回答

0

如果应用程序在单个请求中发布整个请求,那么JSF viewscope,客户端状态保存可以在群集环境中工作,不要尝试发送部分页面请求。

如果更改UI中的某些字段将由JSF在服务器中复制,因为您发送的是整个状态而不是部分状态。