Results

The results so far seem encouraging.

It's been simpler for us to track and solve problems. We've hit fewer JSF surprises. The code may not be as concise as it would be if we directly referenced domain objects, but at least it's very clear what the code is doing and when.

On the minus side, there are probably plenty of simmering redundancies between data stored in the serialized bean and data stored in the displayed JSF components. But we'd face the same problem if we stored beans in session scope, and the data waste would then be persistent and additive.

On the usability side, getting request-threads back meant getting multiple views and "what if?" support back as well. It should also be easier to write wizards and to provide preview mode. (We still don't support bookmarks, though.)

Finally, less memory burden is put on the server.