关于类似银行业务的例子,用ejb如何处理?业务如下:
有一帐户entitybean,里面包括帐号 userId和余额 account属性,由 e1 表示,在sessionbean中有两个方法f1(),f2() 由s1表示
f1()的业务逻辑为
f1(int id,int m){
e1=e1home.findbyprimakey(id);
e1.setAccount(m);
}
f2(int id,int m){
e1=e1home.findbyprimakey(id); //1
Thread.Sleep(10000); //其他更新操作 //2
if(el.account>m){ //3
e1.setAccount(account-m); //4
}
}
s1,e1都是容器管理事务。
假设account 最初为2000;
首先有一个servlet调用f2(1,1000),当1步骤完毕后进入2步骤(2步骤相当于在此执行其他逻辑处理).于此同时另一个线程的servlet调用f1(1,500),当完成此调用后,entitybean的account属性值(包括数据库内)应为500了。f2方法执行完2步骤后,进入3步骤,我希望e1.account>m为false(因为account被改变为500),但实际情况时e1.account>m为true(调试可看到此处account还为2000),因此就执行4步骤,从而当f2执行完毕后,account的值为1000。这显然是不对的。我原先认为entitybean可以自动同步数据库,但现在看来好像并不是这么回事。我想请问各位大侠,你们用ejb时如何处理这种业务了? 。