社区
Java EE
帖子详情
提个问题,关于session bean事务处理的
baitianhai
2003-04-10 08:30:14
如果我把对两个不同的数据库操作放在session bean 的事务处理,是不是只有同时操作成功,才存到数据库中的,失败的话,就都不保存那?
还有一个问题,我的信誉份长了,怎么才能知道是那个贴子 成为FAQ了那,(前提我知道是在那个论坛上的)
...全文
169
9
打赏
收藏
提个问题,关于session bean事务处理的
如果我把对两个不同的数据库操作放在session bean 的事务处理,是不是只有同时操作成功,才存到数据库中的,失败的话,就都不保存那? 还有一个问题,我的信誉份长了,怎么才能知道是那个贴子 成为FAQ了那,(前提我知道是在那个论坛上的)
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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的事务处理那?
Session
Bea
n
本文详细介绍了如何创建和部署企业级Java组件(Enterprise
Bea
n),包括
Session
Bea
n的开发步骤、配置文件ejb-jar.xml的编写、发布流程及客户端调用方法。重点突出组件的
事务处理
、状态管理和持久数据管理。
有状态会话
Bea
n和无状态会话
Bea
n的区别
本文介绍了EJB中的三种主要角色:
Session
Bea
n、Entity
Bea
n 和 Message Driven
Bea
n的功能特性,并深入探讨了有状态会话
Bea
n(SLSB)与无状态会话
Bea
n(SFSB)的区别,包括它们的运行原理、优缺点及应用场景。
Session
Bea
n中有状态
Bea
n与无状态
Bea
n区别
本文详细阐述了有状态会话
Bea
n (SLSB) 和无状态会话
Bea
n (SFSB) 的区别,包括它们在运行原理、优缺点以及如何根据实际需求进行选择。
测试开发进阶——常用中间件概念——会话
Bea
n(
Session
Bea
n),实体
Bea
n(Entity
Bea
n)、消息驱动
Bea
n(MessageDriven
Bea
n)——EJB三种企业
Bea
n的理...
本文详细介绍了EJB(Enterprise Java
Bea
ns)的三种核心组件:会话
Bea
n、实体
Bea
n和消息驱动
Bea
n。会话
Bea
n负责业务逻辑,分为有状态和无状态两种;实体
Bea
n作为持久对象,实现数据库与对象的映射;消息驱动
Bea
n则用于处理异步JMS消息,实现非阻塞处理。每种
Bea
n在分布式业务应用中扮演不同角色,共同构建可伸缩、事务性和安全的系统。
stateless
session
bea
n中跨数据库的事务的维持
本文探讨了在 Stateless
Session
Bea
n 中如何处理多个数据库操作以确保事务一致性。通过使用连接池而非简单 JDBC 连接,并在 DAO 层级适当地抛出异常,结合
session
Context.setRollbackOnly() 方法,实现了跨数据库操作的事务控制。
Java EE
67,536
社区成员
225,852
社区内容
发帖
与我相关
我的任务
Java EE
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
复制链接
扫一扫
分享
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章