Hi,
Just some thoughts on clustering.
Obviously it is a good way of improving availability. You can configure session replication and so if a server goes down in the middle of a stateful session you can still have high availability.
But, Clustering is not part of the
Java EE spec and different vendors do it slightly different ways. If you really want to discuss how to do it, you have to go beyond the Java EE spec and think about what the vendor will over you.
You can still have availability without clustering. You just can't replicate sessions between servers. What you could do in this case of failure is redirect to user back to the beginning. If failure does not happen that often this should suffice.
As for load balancing - you don't need clustering to achieve this. So the main advantage is better availability. But this increased availability comes at a price. Clustering architectures are more sophisticated and need things like node agents and admin servers - so you have a great hardware cost (not much in fairness).
if this is not an explicit requirement why bother? Especially if you design on the basis that you could easily adapt to clustering to mitigate availability risks.
Discuss...