Tim Holloway wrote:Probably the easiest way to provide high reliability is to employ shared sessions. That is, the HttpSession object is replicated automatically between server instances.
[...]
JSF state saving and HTTPSessions are 2 different things, so each part of the equation has to be dealt with separately. You still need session-scope objects when using stateful Model components (such as DataModel). View Scope is merely Session Scope with automatic removal. The JSF state is independent of that, and it manages the JSF component tree.
Tim Holloway wrote:JSF itself has no interest in clustering technologies. It leaves all that up to the webapp server itself, so the options and settings are entirely done at the server level and JSF code is clean. So your options are basically whatever options the server provides.
Tim Holloway wrote:You can, however, make the state be client-side rather than server-side. That's a basic configuration setting for JSF webapps done in web.xml. The caveats are that because the state is shipped to/from the client, it's extra network overhead, and somewhat less secure than if the information never left the server, but the advantage is a lot less continuous memory usage on the server.