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

03-07-19 bruce
    

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

我认为有以下方法:

1。直接用Stateful Session.交给EJB容器管理

2。用 ThreadLocal 实现每线程 Singleton

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

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

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

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

    

bruce
2003-07-19 01:39

HttpSession仅限于http protocal

Session Bean可用于任何protocal

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

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

bruce
2003-07-19 12:45

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

wwlhp@jdon.com
2003-07-19 12:53

我觉得HttpSession应该不会有race condition吧。

如果有两个用户同时访问同一个Web App,容器会分别为每一个用户开一个线程外加一个session。

所以一般情况下,我觉着一个session不会被多个线程抢来抢去。