banq
2003-09-19 09:39
使用sfsb要注意保存sfsb的引用,不管这个页面同时产生多少次,你以HttpSession来保存,这样一个用户只有一个sfsb实例。

lunxian
2003-09-19 10:58
就是在HttpSession中保存的对该sfsb的引用。这同样导致了对该sfsb的同一个实例的同时操作,导致并发问题。将sfsb方法的事务设置为Never(实际上不需要),则可能导致Application Error: no concurrent calls on stateful beans的异常。

EJB2.0的规范上说使用sfsb要主要防止多个线程同时访问同一个sfsb的实例。但是应该怎么做比较合适呀?

banq
2003-09-19 13:38
一个用户只有一个session,一个session保存一个sfsb实例引用,怎么会同时操作sfsb实例?又不是整个容器中只有一个sfsb实例噢。

lunxian
2003-09-19 22:04
实际场景是这样的:用户点击页面上的一个按钮,弹出一个新的页面,在新的页面中将从session中取出对sfsb的引用,然后调用sfsb的一个方法。

如果用户快速的点击按钮就会导致上一次调用还没有结束就开始了下一次调用。

现在我通过一个方法同步的proxy类来委托对sfsb的调用,暂时解决这个问题。

看petstore的代码,发现petstore中是通过WebControl在Servlet上同步对sfsb的调用,以避免多个线程访问sfsb的。

疑问是ShoppingCartEJB是一个sfsb,但其ejbCreate方法为什么没有参数呀?

猜你喜欢
2Go 上一页 1 2