2007-10-17

关于XA使用遇到的问题

关键字: xa
项目中要整个EJB,供别的系统调用

本来不是采用容器管理事务,采用bean管理事务,想提交就提交,想回滚就回滚,
但是这样会给调用方带来这样一个问题:如果调用方调用ejb并且处理成功,但是在调用方接下来处理中出现异常时就没有办法回滚 这个ejb的事务。


接下来就想采用容器管理,采用xa数据源,这样的话上面的问题就可以解决,但是另一个问题又出来,就是在这个提供的ejb中,我们想保存调用的日志记录:传送了哪些数据,处理出错报的异常是什么,成功日志。
这样的话,因为采用容器管理,一提交或回滚就会出错,所以就只能把事务交给调用方来提交或回滚,这样的话,我们如果处理出错了,调用方就会把事务回滚,一旦事务回滚,所有数据库操作就会回滚,这样我们原先想保存错误日志的功能就失效了。

所以目的是想:采用xa事务管理,而且又想增加日志,到底能否这样实现呢???

。。。对于日志,只想保存到数据库中,不想采用文件保存。
评论
qiuyuanshan 2007-10-21
半夜花了些时间,用了两台机子,两台机子都装了websphere跟oracle,测试了下,
通过,上面方案可行,谢谢kenees 帮忙
qiuyuanshan 2007-10-18
kenees 写道
根据个人经验,做一个LogEJB,这个EJB用BEAN管理的事物,也就是getUserTransaction,然后用他来作DB的操作,把他嵌入在你的容器管理的EJB中进行操作,相互事物之间不影响。

共同学习
这点倒是没有想到,
非常感谢,我试完后再来回复下。
kenees 2007-10-18
根据个人经验,做一个LogEJB,这个EJB用BEAN管理的事物,也就是getUserTransaction,然后用他来作DB的操作,把他嵌入在你的容器管理的EJB中进行操作,相互事物之间不影响。

共同学习
发表评论

提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则

您还没有登录,请登录后发表评论

qiuyuanshan
搜索本博客
最近加入圈子
存档
最新评论