提个问题,关于session bean事务处理的

baitianhai 2003-04-10 08:30:14
如果我把对两个不同的数据库操作放在session bean 的事务处理,是不是只有同时操作成功,才存到数据库中的,失败的话,就都不保存那?
还有一个问题,我的信誉份长了,怎么才能知道是那个贴子 成为FAQ了那,(前提我知道是在那个论坛上的)
...全文
117 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
freedy_hu 2003-08-14
  • 打赏
  • 举报
回复
up
proZeus 2003-04-10
  • 打赏
  • 举报
回复
呵呵,看我的信誉分……都没长过,我只是觉得在信誉分变化纪录中可以查

如果具体哪个帖子查不到,应该是csdn不提供这功能吧,问斑竹咯
baitianhai 2003-04-10
  • 打赏
  • 举报
回复
能详细说说吗?
我的信誉分变化纪录中 能看到变化,可是不知道是那个贴子的
proZeus 2003-04-10
  • 打赏
  • 举报
回复
我觉得是。
还要看数据源的类型吧,wls里面Tx Data Source和Data Source就不同,前者支持事务

关于信誉分,在我的信誉分变化纪录中查不到吗?
baitianhai 2003-04-10
  • 打赏
  • 举报
回复
Entity Bean的事务处理也是一样的吗?
MyXin 2003-04-10
  • 打赏
  • 举报
回复
什么是事务?
为了完成对数据的操作,企业应用经常要求并发访问在多个构件之间共享的数据。这些应用在下列条件下应该维护数据的完整性(由应用的商务规则来定义):

分布式访问一个单独的数据资源,以及
从一个单独的应用构件访问分布式资源。
在这种情况,可能要求在(分布式)资源上的一组操作被当作一个工作单元(unit)。在一个工作单元中, 操作的所有部分一起成功或失败并恢复。在下面的情况下这个问题更加复杂:

通过一组分布式的、访问多个资源的数据的构件实现一个工作单元,和/或
部分操作是被顺序执行的或在要求协调和/或同步的并行线程中。
在所有情况下, 都要求应用维护一个工作单元的成功或失败。在失败的情况下,所有资源要把数据状态返回到以前的状态 (比如说,工作单元开始前的状态)。

事务的概念和和事务管理器(或者一个事务处理服务)在一个工作单元中的维护数据完整性,这就简化了这样的企业级别分布式应用的构造。

一个事务是有下列属性的一个工作单元:

原子性(ATOMICITY): 一个事务要被完全的无二义性的做完或撤消。在任何操作出现一个错误的情况下,构成事务的所有操作的效果必须被撤消,数据应被回滚到以前的状态。
一致性(CONSISTENCY): 一个事务应该保护所有定义在数据上的不变的属性(例如完整性约束)。在完成了一个成功的事务时,数据应处于一致的状态。换句话说,一个事务应该把系统从一个一致状态转换到另一个一致状态。举个例子,在关系数据库的情况下, 一个一致的事务将保护定义在数据上的所有完整性约束。
隔离性(ISOLATION): 在同一个环境中可能有多个事务并发执行,而每个事务都应表现为独立执行。串行的执行一系列事务的效果应该同于并发的执行它们。这要求两件事:
在一个事务执行过程中,数据的中间的(可能不一致)状态不应该被暴露给所有的其他事务。
两个并发的事务应该不能操作同一项数据。数据库管理系统通常使用锁来实现这个特征。
持久性(DURABILITY): 一个被完成的事务的效果应该是持久的。
这些属性叫做 ACID 属性,担保一个事务是永远不会不完整,数据永远不会不一致,并发事务是独立的,一个事务的效果是持久的。
MyXin 2003-04-10
  • 打赏
  • 举报
回复
在J2EE中的EJB是靠容器管理事务.一个事务处理的属性控制它本身的范围。有:Required,RequiresNew,Mandatory,NotSupported,Supports,Never。
1、Required:当客户端运行一个事务处理并调用EJB的一个方法,这个方法执行客户端的事务处理;当客户端没有启动一个事务处理,则EJB容器在执行这个方法之前启动一个新的事务处理.
2、RequiresNew:当客户端运行一个事务处理并调用EJB的一个方法时,容器管理器做如下操作:
(1) 悬挂客户端的事务处理;
(2) 开始一个新的事务处理;
(3) 调用方法;
(4) 当方法结束,恢复客户端的事物处理.
当客户端没有启动一个事务处理,容器管理器在执行这个方法之前启动一个新的事务处理.
3、Mandatory: 当客户端运行一个事务处理并调用EJB的一个方法,这个方法在客户端的事务处理范围内被执行; 当客户端没有启动一个事务处理,容器管理器将会抛错(TransactionRequiredException);
4、NotSupported: 当客户端运行一个事务处理并调用EJB的一个方法,容器管理器在调用方法之前终止客户端的事务处理,当方法执行完,再恢复客户端的事务处理; 当客户端没有启动一个事务处理,容器管理器在调用方法时不启动事务处理.
5、Supports: 当客户端运行一个事务处理并调用EJB的一个方法,在运行方法时执行客户端的事务处理; 当客户端没有启动一个事务处理,容器管理器在调用方法时不启动事务处理.
6、Never: 当客户端运行一个事务处理并调用EJB的一个方法,容器管理器将抛出一个错误(RemoteException); 当客户端没有启动一个事务处理,容器管理器在调用方法时不启动事务处理.
可以指定个别方法的事务处理属性或整个EJB的事务处理属性.当你指定方法的某个事务处理的属性和另外的EJB的事务处理属性时,方法的事务处理属性优先.
当事务处理失败时,有两种方式恢复一个容器管理器的事务处理.第一,如果系统抛出一个错误,容器管理器自动恢复;第二,调用setRollbackOnly方法,命令容器管理器恢复事务处理.
J2EE容器管理器控制除了JDBC以外的所有的EJB事务处理.它可以使一个EJB在一个事务处理时更新多个数据库.
peterretep 2003-04-10
  • 打赏
  • 举报
回复
最好使用TX DataSource,他支持两阶段事务提交。所以应该是同时成功,同时失败的。不过我没有试过,你可以试一试啊
baitianhai 2003-04-10
  • 打赏
  • 举报
回复
老兄 能不能在详细说说 EJB的事务处理那?

67,549

社区成员

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

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