多线程同时访问同一个会话的同步方法

在WEB应用中,不得不考虑多线程同时访问同一个会话的同步方法

我认为有以下方法:
1。直接用Stateful Session.交给EJB容器管理
2。用 ThreadLocal 实现每线程 Singleton

<<当然自己实现singleton类,还需要考虑多线程情况下的同步问题,还有DCL问题

3. 也就是singleton模式, 加上synchronization和DCL。

大家可以谈谈自已认可的方法。

另外,大家在选择HttpSession和SessionBean时有什么要考虑的地方?

HttpSession仅限于http protocal
Session Bean可用于任何protocal

由于EJB的效率问题,所以用session Bean 也存在效率问题,同时,调用Session Bean存在两层通讯,首先browser到servlet(http),servlet到sessionbean(RMI/IIOP),若用httpsession,不会这么麻烦,也会比sessionbean快.

SessionBean支持EJB的所有特性, HttpSession却没有, 例如同步问题,还得自已处理.

兄弟们及各位道友,难道大家没有自已的意见吗? :(

我觉得HttpSession应该不会有race condition吧。
如果有两个用户同时访问同一个Web App,容器会分别为每一个用户开一个线程外加一个session。
所以一般情况下,我觉着一个session不会被多个线程抢来抢去。