文档章节

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

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

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

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

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

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

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

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

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

© 著作权归作者所有

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

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

拉轰的萝卜 ⋅ 2015/12/19 ⋅ 0

EntityFramework 6.x多个上下文迁移实现分布式事务

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

jeffcky ⋅ 2017/09/24 ⋅ 0

jfinal中对分布式事务的支持

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

qiran ⋅ 2015/06/24 ⋅ 1

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

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

zting科技 ⋅ 2017/01/12 ⋅ 0

1991wangliang/tx-lcn

LCN分布式事务框架v4.0 "LCN并不生产事务,LCN只是本地事务的搬运工" 官方网址 www.txlcn.org 框架特点 支持各种基于spring的db框架 兼容SpringCloud、Dubbo、motan 使用简单,低依赖,代码完...

1991wangliang ⋅ 2017/09/22 ⋅ 0

LCN 分布式事务 - tx-lcn

LCN分布式事务 "LCN并不生产事务,LCN只是本地事务的搬运工" 框架介绍 LCN分布式事务框架是一款事务协调性的框架,框架本身并不创建事务,只是对本地事务做协调控制。因此该框架与其他第三方...

oswl ⋅ 2017/09/22 ⋅ 3

无法加载DLL“oramts.dll”: 找不到指定的模块

  无法加载 DLL“oramts.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)。 这个错误, 解决方法:   Oramts.dll 文件公开登记 Oracle 连接所涉及到在通过 Microsoft 分布式事务...

贺满 ⋅ 2010/08/19 ⋅ 0

spring + mybatis + 多数据源整合事务

1、核心思想,spring提供了一个DataSource的子类,该类支持多个数据源 org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource 该类的源码如下: org.springframework.jdbc...

程序员小虫 ⋅ 2015/09/20 ⋅ 1

DDL/DML/DCL/TCL基本概念

数据定义语言DDL DDL((Data Definition Language),用于定义/修改/删除数据对象(如表)的数据结构,或者说,DDL语言操作的对象是数据库中的对象而非对象所包含的数据。 DDL包含以下语句: CR...

张欢19933 ⋅ 2016/09/18 ⋅ 0

简单的Java处理事务

用一个简单的例子来说明Java处理事务: 我们用银行转账的时候可以简单的看成是两步操作--将钱从A账户转出和将钱转到B账户。问题来了,如果我从A账户转出之后,突然无法连接数据库了,这样钱就...

xiahuawuyu ⋅ 2012/10/23 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Boost库编译应用

版本:Boost 1.66.0 Windows库编译 官网指南:直接执行bootstrap.bat处理文件即可,可以我却遇到一堆的问题。 环境:Windows 10 + Visual Studio 2017 Boost编译出来库命名 boost库生成文件命...

水海云 ⋅ 9分钟前 ⋅ 0

解决Eclipse发布到Tomcat丢失依赖jar包的问题

如果jar文件是以外部依赖的形式导入的。Eclipse将web项目发布到Tomcat时,是不会自动发布这些依赖的。 可以通过Eclipse在项目上右击 - Propertics - Deployment Assembly,添加“Java Build ...

ArlenXu ⋅ 9分钟前 ⋅ 0

iview tree组件层级过多时可左右滚动

使用vue+iview的tree组件,iview官网iview的tree树形控件 问题描述:tree层级过多时左右不可滚动 问题解决:修改overflow属性值 .el-tree-node>.el-tree-node_children { overflow: vi...

YXMBetter ⋅ 11分钟前 ⋅ 0

分布式锁

通过数据库实现 http://www.weizijun.cn/2016/03/17/%E8%81%8A%E4%B8%80%E8%81%8A%E5%88%86%E5%B8%83%E5%BC%8F%E9%94%81%E7%9A%84%E8%AE%BE%E8%AE%A1/ ZK实现:curator-recipes分布式锁的使用......

素雷 ⋅ 20分钟前 ⋅ 0

Sublime Text3 快捷键

选择类 Ctrl+D 选中光标所占的文本,继续操作则会选中下一个相同的文本。 Alt+F3 选中文本按下快捷键,即可一次性选择全部的相同文本进行同时编辑。举个栗子:快速选中并更改所有相同的变量名...

AndyZhouX ⋅ 26分钟前 ⋅ 0

XamarinAndroid组件教程RecylerView自定义适配器动画

XamarinAndroid组件教程RecylerView自定义适配器动画 如果RecyclerViewAnimators.Adapters命名空间中没有所需要的适配器动画,开发者可以自定义动画。此时,需要让自定义的动画继承Animation...

大学霸 ⋅ 27分钟前 ⋅ 0

eureka 基础(二)

使用Eureka服务器进行身份验证 如果其中一个eureka.client.serviceUrl.defaultZone网址中包含一个凭据(如http://user:password@localhost:8761/eureka)),HTTP基本身份验证将自动添加到您...

明理萝 ⋅ 30分钟前 ⋅ 1

Kubernetes(五) - Service

Kubernetes解决的另外一个痛点就是服务发现,服务发现机制和容器开放访问都是通过Service来实现的,把Deployment和Service关联起来只需要Label标签相同就可以关联起来形成负载均衡,基于kuberne...

喵了_个咪 ⋅ 30分钟前 ⋅ 0

更新队友POM文件后报错

打开报错的地方的pom及其引用方法所在文件的pom,观察其版本号是否一致,不一致进行更改

森火 ⋅ 43分钟前 ⋅ 0

IDEA使用sonarLint

一、IDEA如何安装SonarLint插件 1.打开 Idea 2.点击【File】 3.点击【Settings】 4.点击【Plugins】 5.在搜索栏中输入“sonarlint”关键字 6.点击【Install】进行安装 7.重启Idea 二、IDEA如...

开源中国成都区源花 ⋅ 48分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部