- 浏览: 663161 次
- 性别:
- 来自: 长沙
文章分类
- 全部博客 (364)
- quick start (57)
- bboss aop (43)
- bboss mvc (48)
- bboss persistent (96)
- bboss taglib (30)
- bboss event (10)
- bbossgroups (52)
- bboss (32)
- bboss会话共享 (17)
- bboss rpc (7)
- bboss 国际化 (5)
- bboss 序列化 (9)
- bboss cxf webservice (8)
- bboss hessian (3)
- bboss 安全认证SSO (15)
- bboss 工作流 (6)
- 平台 (18)
- bboss quartz (3)
- 杂谈 (5)
- 大数据 (1)
- bboss elastic (24)
- bboss http (1)
- bboss kafka (1)
- Elasticsearch Scroll和Slice Scroll查询API使用案例 (1)
最新评论
-
qianhao123:
...
采用gradle构建和发布bboss方法介绍 -
qianhao123:
[img][/img]
采用gradle构建和发布bboss方法介绍 -
yin_bp:
欢迎大家参与working
高性能elasticsearch ORM开发库使用介绍 -
qq641879434:
万分感谢
bboss 持久层sql xml配置文件编写和加载方法介绍 -
yin_bp:
qq641879434 写道怎么设置配置文件 可以查看执行的S ...
bboss 持久层sql xml配置文件编写和加载方法介绍
bboss持久层事务管理组件托管第三方持久层框架(mybatis等)事务功能介绍
bboss持久层事务管理组件托管第三方持久层框架(mybatis等)事务功能介绍
bboss持久层框架中的TXDataSource数据源类,可以实现第三方数据库事务代理功能
com.frameworkset.orm.transaction.TXDataSource
1.事务托管原理
TXDataSource可以托管hibernate,ibatis,mybatis等持久层框架的事务管理,原理如下:
我们只需要通过TXDataSource的构造函数传入需要托管事务的实际数据源DataSource即可,这个DataSource可以是bboss内置的数据源,也可以是第三方数据源(common dbcp,C3P0,Proxool ,Druid)等等
public TXDataSource(DataSource datasource)
这样我们只要通过TXDataSource实例的getConnection()方法既可以获取到事务环境中的connection资源从而实现数据库事务的托管功能。
2.TXDataSource数据源的具体使用方法
我们以托管开源工作流activiti的事务作为示例,采用bboss内置数据源
在继续之前需要知道一下组件com.frameworkset.common.poolman.util.SQLManager中的两个工具方法:
public static DataSource getTXDatasourceByDBName(String dbname) --直接获取bboss的内置数据源,并将该数据源转换为一个代理事务的数据源,bboss持久层的poolman.xml文件中需要定义dbname代表的数据源
public static DataSource getTXDatasource(DataSource ds) --直接将ds数据源转换为一个代理事务的数据源
如果在poolman.xml配置中已经制定了enablejta参数为true,则通过SQLManager的getDatasource方法直接就会返回一个支持TX事务的数据源。
首先在poolman.xml文件中配置一个名称叫mysql的datasource
如果然后在activiti的配置文件activiti.cfg.xml中做如下配置:
从activiti.cfg.xml配置文件中可以看出,我们已经可以使用bboss ioc框架来管理activiti流程引擎,bboss ioc容器中管理的组件都可以用于activiti的相关
活动环节和事件监听器中(该功能参考文章开源工作流引擎activiti与bboss整合使用方法浅析)。这里需要关注的是配置内容:
我们采用bboss ioc的静态工厂模式来定义一个TXDatasource并注入到activiti的org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration
组件中,这样activiti流程引擎的db事务就可以被bboss数据库事务所托管了。bboss数据库事务管理可以参考http://sourceforge.net/projects/bboss/files/bbossgroups-3.4/bbossgroups%20training.ppt/download中的数据库相关事务介绍章节。
配置好了后就可以,启动流程引擎(相关方法请参考activiti的十分钟指南),看看两个事务管理的代码示例。
3.代码示例
3.1 创建activiti的用户信息--将两个创建用户操作包含在事务中,activiti采用mybatis作为持久层框架
3.2 完成流程任务和业务逻辑处理相结合--将业务处理和流程操作包含在一个事务中,activiti采用mybatis作为持久层框架
3.3 在spring中引用bboss数据源
相关资源:
activiti和bboss结合工程下载:https://github.com/yin-bp/activiti-engine-5.12
bboss持久层框架中的TXDataSource数据源类,可以实现第三方数据库事务代理功能
com.frameworkset.orm.transaction.TXDataSource
1.事务托管原理
TXDataSource可以托管hibernate,ibatis,mybatis等持久层框架的事务管理,原理如下:
我们只需要通过TXDataSource的构造函数传入需要托管事务的实际数据源DataSource即可,这个DataSource可以是bboss内置的数据源,也可以是第三方数据源(common dbcp,C3P0,Proxool ,Druid)等等
public TXDataSource(DataSource datasource)
这样我们只要通过TXDataSource实例的getConnection()方法既可以获取到事务环境中的connection资源从而实现数据库事务的托管功能。
2.TXDataSource数据源的具体使用方法
我们以托管开源工作流activiti的事务作为示例,采用bboss内置数据源
在继续之前需要知道一下组件com.frameworkset.common.poolman.util.SQLManager中的两个工具方法:
public static DataSource getTXDatasourceByDBName(String dbname) --直接获取bboss的内置数据源,并将该数据源转换为一个代理事务的数据源,bboss持久层的poolman.xml文件中需要定义dbname代表的数据源
public static DataSource getTXDatasource(DataSource ds) --直接将ds数据源转换为一个代理事务的数据源
如果在poolman.xml配置中已经制定了enablejta参数为true,则通过SQLManager的getDatasource方法直接就会返回一个支持TX事务的数据源。
首先在poolman.xml文件中配置一个名称叫mysql的datasource
<datasource> <dbname>mysql</dbname> <loadmetadata>false</loadmetadata> <enablejta>true</enablejta> <jndiName>jdbc/mysql-ds</jndiName> <driver>com.mysql.jdbc.Driver</driver> <url>jdbc:mysql://localhost:3306/activiti</url> <username>root</username> <password>123456</password> ......... </datasource>
如果然后在activiti的配置文件activiti.cfg.xml中做如下配置:
<properties> <property name="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration"> <property name="dataSource" factory-class="com.frameworkset.common.poolman.util.SQLManager" factory-method="getTXDatasourceByDBName"> <construction> <property value="mysql" /> </construction> </property> <!-- Database configurations --> <property name="databaseSchemaUpdate" value="true" /> <!-- job executor configurations --> <property name="jobExecutorActivate" value="false" /> <!-- mail server configurations --> <property name="mailServerPort" value="5025" /> <property name="history" value="full" /> </property> </properties>
从activiti.cfg.xml配置文件中可以看出,我们已经可以使用bboss ioc框架来管理activiti流程引擎,bboss ioc容器中管理的组件都可以用于activiti的相关
活动环节和事件监听器中(该功能参考文章开源工作流引擎activiti与bboss整合使用方法浅析)。这里需要关注的是配置内容:
<property name="dataSource" factory-class="com.frameworkset.common.poolman.util.SQLManager" factory-method="getTXDatasourceByDBName"> <construction> <property value="mysql" /> </construction> </property>
我们采用bboss ioc的静态工厂模式来定义一个TXDatasource并注入到activiti的org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration
组件中,这样activiti流程引擎的db事务就可以被bboss数据库事务所托管了。bboss数据库事务管理可以参考http://sourceforge.net/projects/bboss/files/bbossgroups-3.4/bbossgroups%20training.ppt/download中的数据库相关事务介绍章节。
配置好了后就可以,启动流程引擎(相关方法请参考activiti的十分钟指南),看看两个事务管理的代码示例。
3.代码示例
3.1 创建activiti的用户信息--将两个创建用户操作包含在事务中,activiti采用mybatis作为持久层框架
TransactionManager tm = new TransactionManager(); try { tm.begin();//开启事务 identityService.saveUser(identityService.newUser("kermit")); identityService.saveUser(identityService.newUser("gonzo")); tm.commit();//提交事务 } catch(Throwable e) { throw e } finally { tm.release(); }
3.2 完成流程任务和业务逻辑处理相结合--将业务处理和流程操作包含在一个事务中,activiti采用mybatis作为持久层框架
// Start process instance ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("taskAssigneeExampleProcess"); TransactionManager tm = new TransactionManager(); try { tm.begin(); //处理业务逻辑,省略处理代码 ..... // 获取用户任务列表 List<Task> tasks = taskService .createTaskQuery() .taskAssignee("kermit") .list(); Task myTask = tasks.get(0); //完成任务 taskService.complete(myTask.getId()); tm.commit(); } catch (Throwable e) { throw e } finally { tm.release(); }
3.3 在spring中引用bboss数据源
<bean id="dataSource" class="com.frameworkset.common.poolman.util.SQLManager" factory-method="getTXDatasourceByDBName"> <constructor-arg value="wood"></constructor-arg> </bean>
相关资源:
activiti和bboss结合工程下载:https://github.com/yin-bp/activiti-engine-5.12
发表评论
-
bboss 持久层数据源引用外部属性配置介绍
2018-12-29 21:47 965bboss 持久层数据源外部属性配置引用介绍 bboss持久 ... -
bboss持久层开启和关闭自带主键机制
2017-08-17 11:56 673bboss持久层开启和关闭自带主键机制 请访问文档: bbos ... -
bboss高性能db批处理功能使用方法介绍
2017-05-14 21:28 2044bboss持久层在v5.0.3.5中新增简单的高效的db批处理 ... -
bboss持久层公共sql片段定义和引用方法说明
2017-03-03 13:05 1045bboss持久层公共sql片段定义和引用方法说明 在配置sq ... -
最新版本mysql jdbc驱动包获取表定义信息空指针异常处理方法
2016-12-15 10:24 1252在使用最新的mysql-connector-java 6.0. ... -
持久层快速入门系列一
2016-08-19 13:00 1192持久层快速入门 先在应用中导入bboss 持久层(bboss ... -
bboss与spring中配置和引用bboss数据源和bboss dao组件方法说明
2016-08-10 16:04 852首先在项目中导入bboss 持久层包: maven坐标 & ... -
bboss 持久层sql xml配置文件编写和加载方法介绍
2016-04-05 13:14 1505bboss 持久层sql xml配置文件编写和加载方法介绍 通 ... -
bboss持久层设置数据库查询fetchsize参数方法
2015-11-06 11:54 947bboss持久层设置数据库查询fetchsize参数方法 j ... -
bboss持久层快速入门教程
2015-09-19 13:49 1507bboss持久层快速入门教程,快速搭建bboss持久层的开 ... -
bboss持久层数据库适配器编写和注册方法
2015-02-06 15:21 905bboss持久层数据库适配器编写和注册方法 bboss持久层默 ... -
bboss模糊查询、动态sql、批处理资料荟萃
2015-01-30 12:03 2249bboss模糊查询、动态sql、批处理资料荟萃 bboss持 ... -
bboss持久层查询元数据缓存机制开启方法
2014-11-18 12:03 951bboss持久层为了提升数据库查询操作性能,提供了对查 ... -
bboss开发、模块工程目录结构及功能说明
2014-10-15 19:46 4694基于bboss开发项目说明 ... -
bboss内置数据源apache dbcp与druid数据源切换方法
2014-09-23 09:59 1310bboss内置数据源与druid数据源切换方法 bboss内置 ... -
bboss版activiti 5.12扩展动态
2014-09-20 18:19 5156继扩展Activiti-5.12轻松实 ... -
bboss持久层多数据源配置及多数据库事务控制使用方法
2014-05-11 20:24 2825bboss持久层多数据源配置及使用方法,持久层框架及demo下 ... -
bboss持久层demo使用说明
2014-03-11 09:38 1107持久层案例可以用svn客户端下载eclipse工程,导入ecl ... -
bboss持久层More分页查询API使用介绍
2013-10-18 16:17 1282为了更好地提高数据库分页查询的效率,bboss持久层在Conf ... -
bboss持久层操作Clob和Blob字段示例
2013-09-09 13:29 1135bboss持久层操作Clob和Blob非常方便,基于bboss ...
相关推荐
bboss功能涵盖ioc,mvc,jsp自定义标签库,持久层,全局事务托管,安全认证,SSO,web会话共享,cxfwebservice服务发布和管理,hessian服务发布和管理等功能。另外还提供了符合中国式自由流的bboss activiti工作流...
企业级 J2EE 开源框架:bboss
4.服务自动发现(zk,etcd,consul,eureka,db,其他第三方注册中心) 5.路由规则动态切换 5.分组服务管理 可以配置多组服务集群地址,每一组地址清单支持的配置格式: ip:port(默认http协议) 多个地址用逗号分隔...
NULL 博文链接:https://yin-bp.iteye.com/blog/2174863
bboss es特点请访问: https://www.oschina.net/p/bboss-elastic
NULL 博文链接:https://yin-bp.iteye.com/blog/1449900
Elasticsearch rest client bboss介绍-Elastic2018中国开发者大会演讲稿
bboss会话共享培训文档,学习bboss不可多得的资料,值得拥有。
自动代码生成框架github源码托管地址和svn下载地址: github源码托管地址 svn下载地址 bboss大数据抽取工具db-hdfs github托管地址 svn下载地址 bboss rpc原始码 github托管地址 svn下载地址 b
bboss是一个j2ee开源框架,为企业级应用开发提供一站...bboss功能涵盖ioc,mvc,jsp自定义标签库,持久层,全局事务托管,安全认证,SSO,web会话共享,cxfwebservice服务发布和管理,hessian服务发布和管理等功能。另
bboss+es基本操作示例,elasticsearch,bboss,java使用demo
NULL 博文链接:https://yin-bp.iteye.com/blog/926166
bboss是一个j2ee开源框架,为企业级应用开发提供一站...bboss功能涵盖ioc,mvc,jsp自定义标签库,持久层,全局事务托管,安全认证,SSO,web会话共享,cxfwebservice服务发布和管理,hessian服务发布和管理等功能。另
bboss是一个j2ee开源框架,为企业级应用开发提供一站式解决方案,并能有效地支撑移动应用开发。bboss功能涵盖ioc,mvc,jsp自定义标签库,持久层,全局事务托管,安全认证,SSO,web会
bboss-datatran 由 bboss 开源的数据采集&流批一体化工具,提供数据采集、数据清洗转换处理和数据入库以及数据指标统计计算流批一体化处理功能。
基于java语言比mybatis更实用的orm框架,支持mysql、oracle、postgresql、sqlserver、db2、dm、mongodb
bboss是一个j2ee开源框架,为企业级应用开发提供一站式解决方案,并能有效地支撑移动应用开发。bboss功能涵盖ioc,mvc,jsp自定义标签库,持久层,全局事务托管,安全认证,SSO,web会
官方版本,亲测可用
springboot集成ElasticsearchBboss调用Elasticsearch的案例分享
bboss是一个j2ee开源框架,为企业级应用开发提供一站式解决方案,并能有效地支撑移动应用开发。bboss功能涵盖ioc,mvc,jsp自定义标签库,持久层,全局事务托管,安全认证,SSO,web会