- 浏览: 698236 次
- 性别:
- 来自: 长沙
文章分类
- 全部博客 (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 1103bboss 持久层数据源外部属性配置引用介绍 bboss持久 ... -
bboss持久层开启和关闭自带主键机制
2017-08-17 11:56 756bboss持久层开启和关闭自带主键机制 请访问文档: bbos ... -
bboss高性能db批处理功能使用方法介绍
2017-05-14 21:28 2148bboss持久层在v5.0.3.5中新增简单的高效的db批处理 ... -
bboss持久层公共sql片段定义和引用方法说明
2017-03-03 13:05 1131bboss持久层公共sql片段定义和引用方法说明 在配置sq ... -
最新版本mysql jdbc驱动包获取表定义信息空指针异常处理方法
2016-12-15 10:24 1369在使用最新的mysql-connector-java 6.0. ... -
持久层快速入门系列一
2016-08-19 13:00 1266持久层快速入门 先在应用中导入bboss 持久层(bboss ... -
bboss与spring中配置和引用bboss数据源和bboss dao组件方法说明
2016-08-10 16:04 922首先在项目中导入bboss 持久层包: maven坐标 & ... -
bboss 持久层sql xml配置文件编写和加载方法介绍
2016-04-05 13:14 1704bboss 持久层sql xml配置文件编写和加载方法介绍 通 ... -
bboss持久层设置数据库查询fetchsize参数方法
2015-11-06 11:54 1020bboss持久层设置数据库查询fetchsize参数方法 j ... -
bboss持久层快速入门教程
2015-09-19 13:49 1595bboss持久层快速入门教程,快速搭建bboss持久层的开 ... -
bboss持久层数据库适配器编写和注册方法
2015-02-06 15:21 980bboss持久层数据库适配器编写和注册方法 bboss持久层默 ... -
bboss模糊查询、动态sql、批处理资料荟萃
2015-01-30 12:03 2377bboss模糊查询、动态sql、批处理资料荟萃 bboss持 ... -
bboss持久层查询元数据缓存机制开启方法
2014-11-18 12:03 1026bboss持久层为了提升数据库查询操作性能,提供了对查 ... -
bboss开发、模块工程目录结构及功能说明
2014-10-15 19:46 4918基于bboss开发项目说明 ... -
bboss内置数据源apache dbcp与druid数据源切换方法
2014-09-23 09:59 1392bboss内置数据源与druid数据源切换方法 bboss内置 ... -
bboss版activiti 5.12扩展动态
2014-09-20 18:19 5268继扩展Activiti-5.12轻松实 ... -
bboss持久层多数据源配置及多数据库事务控制使用方法
2014-05-11 20:24 2981bboss持久层多数据源配置及使用方法,持久层框架及demo下 ... -
bboss持久层demo使用说明
2014-03-11 09:38 1223持久层案例可以用svn客户端下载eclipse工程,导入ecl ... -
bboss持久层More分页查询API使用介绍
2013-10-18 16:17 1487为了更好地提高数据库分页查询的效率,bboss持久层在Conf ... -
bboss持久层操作Clob和Blob字段示例
2013-09-09 13:29 1233bboss持久层操作Clob和Blob非常方便,基于bboss ...
相关推荐
2. **数据库操作**:BBoss提供了便捷的数据访问层(DAO),支持SQL动态生成、事务管理以及多种数据库的兼容性,使得数据库操作变得简单且高效。 3. **服务治理**:框架内置了服务注册与发现机制,可以实现微服务...
bboss功能涵盖ioc,mvc,jsp自定义标签库,持久层,全局事务托管,安全认证,SSO,web会话共享,cxfwebservice服务发布和管理,hessian服务发布和管理等功能。另外还提供了符合中国式自由流的bboss activiti工作流...
4. **AOP(面向切面编程)**:BBoss MVCDemo支持AOP,可以实现如事务管理、日志记录、权限控制等功能,提高代码的复用性和可维护性。 5. **国际化与本地化**:框架内置了国际化和本地化支持,使得应用可以根据用户...
BBoss安全认证过滤器是Java Web开发中一种用于实现用户身份验证和权限控制的重要组件。在Web应用程序中,过滤器(Filter)是Servlet规范的一部分,它允许开发者在请求到达目标Servlet或JSP之前进行预处理,以及在...
bboss-plugins project.包含kafka、log4j、spring、dubbo、activemq、word转pdf、pdf转swf项目,持久层hibernate/hibernate4插件
BBoss Persistent是一个轻量级的持久层框架,它提供了方便的方式来处理这些大字段。本文将深入探讨在BBoss Persistent 1.0.2中如何高效地管理CLOB和BLOB数据。 首先,CLOB用于存储大量的文本数据,如长篇文章或XML...
该项目为bboss插件集的Java设计源码,总计277个文件,涵盖163个Java源文件、22个XML配置文件、14个Gradle构建脚本、13个Git忽略规则、13个属性文件以及少量的JavaScript、HTML、CSS和Shell脚本,主要用于文档转换和...
【bboss-db-elasticsearch-tool-master_java_】是一个Java ORM(对象关系映射)框架,它在功能上超越了MyBatis,提供了对多种数据库的广泛支持,包括MySQL、Oracle、PostgreSQL、SQLServer、DB2、DM以及MongoDB。...
bboss会话共享是一种分布式会话管理技术,它针对在集群环境下应用部署时如何解决会话数据丢失和单点登录问题提供了专门的解决方案。根据提供的文档内容,我们可以详细探讨bboss会话共享涉及的关键知识点。 首先,...
4. **持久层支持**: 框架集成了多种持久层技术,如Hibernate、MyBatis等,方便开发者进行数据库操作,提供了事务管理和数据访问的抽象层,提高了代码的可复用性。 5. **全局事务托管**: bboss支持分布式事务处理,...
bboss框架集成了AOP/iOC、MVC、持久化标签库、RPC、事件处理、Bean-XML序列化等多种功能。本项目基于bboss框架构建了数据采集ETL工具、流批一体化Stream工具、Elasticsearch客户端工具和WebSession共享框架等应用。
展示了通过spring boot管理单集群功能和管理多集群功能 单集群测试用例:eshelloword-spring-boot-starter\src\test\java\org\bboss\elasticsearchtest\springboot\BBossESStarterTestCase.java 单集群演示功能...
3. `bboss-util-5.5.0.jar`和`bboss-persistent-5.5.0.jar`:这是BBoss框架的核心组件,提供了许多实用工具类和持久化操作支持,如数据库连接、事务管理等,为Elasticsearch的数据导入提供底层支持。 4. `...
4.服务自动发现(zk,etcd,consul,eureka,db,其他第三方注册中心) 5.路由规则动态切换 5.分组服务管理 可以配置多组服务集群地址,每一组地址清单支持的配置格式: ip:port(默认http协议) 多个地址用逗号分隔...
Elasticsearch rest client bboss介绍-Elastic2018中国开发者大会演讲稿
**bboss-datatran** 是一个由 **bboss** 社区开源的高效数据处理工具,专注于数据采集、数据清洗转换以及数据入库等任务。它实现了流批一体化的数据处理能力,使得用户能够灵活地应对实时和批量的数据处理场景。在...
BBoss是一个轻量级的企业级应用开发框架,提供了IOC(Inversion of Control)功能,使得对象之间的依赖关系可以通过配置文件进行管理。本文将详细介绍如何在BBoss的IOC配置文件中引用外部属性文件,以便更好地管理和...
BBoss 是一个针对 Elasticsearch 的企业级开发框架,它提供了丰富的 Java API,使得开发者可以更简单地进行索引管理、查询构建、结果分析等操作。BBoss 还支持多版本兼容,方便应对 Elasticsearch 的升级问题。 **...