关于类似银行业务的例子,用ejb如何处理?业务如下:

thankyou 2004-06-10 05:15:07


有一帐户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时如何处理这种业务了? 。
...全文
133 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
thankyou 2004-06-14
  • 打赏
  • 举报
回复
自己顶
rosen 2004-06-11
  • 打赏
  • 举报
回复
UPUP
orant 2004-06-11
  • 打赏
  • 举报
回复
你参考以下《J2EETutorial》中DUKE银行的例子啊,BMP实现
thankyou 2004-06-11
  • 打赏
  • 举报
回复
up
北极猩猩 2004-06-10
  • 打赏
  • 举报
回复
EJB的事务边界通常是方法,就是说EJB中的一个方法将启动并完成一个事务。所以,同一个事务还是在一个方法之内完成比较好

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧