Joseph,
you are absolutely right when you say SFSB is not apt for clustered environment. I dont wanna point the pitfalls of SFSB here but you can refer the article by Tyler Jewell wherein he discusses the true purpose of SFSBs, where they belong in a J2EE design, and the situations where they should not be used.
http://www.onjava.com/pub/a/onjava/2001/10/02/ejb.html Yes you can achieve load balancing either from your DB or Web/Application Container. The mere fact the Sun prefers to see use of SFSB's should not bias your design choice.
When it comes down to the debate between servlet session and stateful session bean, the servlet session wins out in my mind, except for one point that people always resort to: If you store conversational state in your
HTTPSession then you can't reuse your EJB's for other types of clients.
Very Very true indeed. So herein you hafta think about your TA's. How are they gonna maintain their sessions ?
Sun's choice of hardware gives us a hint trying to identify where the "most appropriate" place for your conversational state should be located. I'm not arguing for completely server side or client side, rather, the state should be located at the tier that does transactional or request demarcation.
For web applications, HttpSession is often enough. If you want the benefits of a SFSB, you can go ahead and design the same. However, all depends on what and how much of session data you wanna store at client. In my design, I have used session data to store only navigational and user preference data. This makes things simple and save increased memory requirements on the server through use of SFSB. I could have gone ahead and added another DB component to synchronise the session state in web tier from time to time. Maybe I left it for next version of the design. Only pitfall, disconnected client will need to restart the booking process all over again but for a 3 page site(login, search and booking), it won't necessarily turn off users.
So bottomline, go ahead and design you think would be necessary to support all requirements and point the design choice(among alternatives obviously) in your assumptions section.
Thanks
Sankha Subhra Das