文档章节

EAServer 区分数据库事务和组件事务

会哭的鳄鱼
 会哭的鳄鱼
发布于 2017/06/05 00:13
字数 572
阅读 9
收藏 0

我们在做PB的两层开发时候,总是自己控制数据库事务的提交和会滚。没有办法,我们只能这样操作。

默认情况下,在pb中,数据库事务是从第一句SQL语句开始的,直到显示执行commit或则rollback,另外,我们可能除了使用sqlca这一系统自动定义的数据库事务对象以外,可能会自己再创建一个或则几个数据库事务对象以操作不同的数据库。

到了EAS下,我们不能再用这样的思路考虑问题了。

很多人总是试图在组件中使用commit或则rollback来控制数据库的提交和会滚,其实,在EAS下,组件中执行commit和rollback根本不会起到任何作用,EAS下,会自动将这两句放弃而不真正执行,之所以还可以在组件中写这两句,主要是为了让早期的两层的系统能顺利地移植到三层上来。另外,在组件中写commit和rollback,为非是为了给自己的代码增加一些信心罢了。

在组件中,数据库事务已经被组件事务接管,对于客户端来说,如果使用有状态组件,则客户端或组件中可以控制组件事务的提交和会滚,而不能控制数据库事务的提交和会滚。

如果是无状态组件,则当客户端调用完一个函数后,EAS将自动根据该组件的完成情况,决定是提交组件事务还是会滚组件事务。也就是说,无状态组件不用显式调用setcomplete()或则setabort(),但然,你也可以显示调用。

如果涉及到数据库的操作,不管是有状态组件还是无状态组件,你都要在发布组件的时候,选择组件事务为“需要事务”,否则,一旦EAS操作数据库失败,会滚组件事务的时候,客户端将会接受到一个TRANSACTION_ROLLACK的异常。很多人都以为是EAS的BUG,其实是对组件事务和组件的生命周期不理解造成的。

© 著作权归作者所有

共有 人打赏支持
会哭的鳄鱼
粉丝 7
博文 56
码字总数 59004
作品 0
郑州
技术主管
如何区分 try-with-resources 的异常

在使用 try-with-resources 的时候碰到一些关于异常的问题。如下代码: try (Connection conn = ...) { doSomethong(); } 在处理数据库的时候,声明一个数据库连接的资源。在处理数据库操作的...

拉轰的萝卜
2015/12/19
56
0
jfinal中对分布式事务的支持

@JFinal 你好,想跟你请教个问题:在实际项目过程中,用到了quartz组件。为了保证quartz组件中任务额事务与service层事务在同一事务控制中,使用配置文件将quartz组件的事务控制交由应用服务...

qiran
2015/06/24
735
1
EntityFramework 6.x多个上下文迁移实现分布式事务

前言 自从项目上了.NET Core平台用上了EntityFramework Core就再没碰过EntityFramework 6.x版本,目前而言EntityFramework 6.x是用的最多,无论是找工作而言还是提升自身技术而言皆自身收益,...

jeffcky
2017/09/24
0
0
即将发布bbossgroup-2.0 rc版本

即将发布bbossgroup-2.0 rc版本,敬请大家届时关注。 bbossgroup-2.0 rc较之以前的版本,功能更加稳定,更加可靠。而且增加了一些新的功能特性: 2.0版本的aop框架新增特点: 较之以前的版本...

bboss
2010/06/25
0
0
无法加载 DLL“oramts.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)

最近在做一个小项目,语言VS2005,C#,数据库Oracle9i,但是为了兼容以前数据库SqlServer2005,以便于数据库版本的切换,事务中,仍然使用 System.Transaction.Transcope的分布式事务,但是事务调试时...

zting科技
2017/01/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Docker Compose 原理

Docker 的优势非常明显,尤其是对于开发者来说,它提供了一种全新的软件发布机制。也就是说使用 docker 镜像作为软件产品的载体,使用 docker 容器提供独立的软件运行上下文环境,使用 dock...

Java干货分享
18分钟前
0
0
解决过滤器中设置cookie无效的问题

解决过滤器中设置cookie无效的问题 代码现场 filterChain.doFilter(sessionSyncRequestWrapper, response);Cookie emailCook = WebServletUtil.getSelectedCookie(request.getCookies(), ......

黄威
29分钟前
0
0
Hbase Schema 设计注意事项及最佳实践总结

一个列族的所有列在硬盘上存放在一起,使用这个特性可以把不同访问模式的列放在不同列族,以便隔离它们。这也是HBase被称为面向列族的存储(column-family-oriented store)的原因。 1、RowKe...

PeakFang-BOK
41分钟前
1
0
t-io给群组成员内置排序

1、实现比较器Comparator<ChannelContext> package xxx;import java.util.Comparator;import java.util.Objects;import java.util.Set;import java.util.TreeSet;import or......

talent-tan
45分钟前
2
0
px、em、rem 区别及作用

原文 起因: 一开始是为了解决页面放大时,字体不跟着放大的 bug。现在多用用于统一规范。 概念: 任意浏览器的默认字体高都是16px。所有未经调整的浏览器都符合: 1em=16px。那么12px=0.75em...

lemos
54分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部