当前位置: 首页 > news >正文

国家最新政策完美一键优化

国家最新政策,完美一键优化,盐城代运营公司,用vs2010做免费网站模板下载地址一、JTA组件简介1、JTA基本概念JTA即Java-Transaction-API#xff0c;JTA允许应用程序执行分布式事务处理#xff0c;即在两个或多个网络计算机资源上访问并且更新数据。JDBC驱动程序对JTA的支持极大地增强了数据访问能力。XA协议是数据库层面的一套分布式事务管理的规范,JTA…一、JTA组件简介1、JTA基本概念JTA即Java-Transaction-APIJTA允许应用程序执行分布式事务处理即在两个或多个网络计算机资源上访问并且更新数据。JDBC驱动程序对JTA的支持极大地增强了数据访问能力。XA协议是数据库层面的一套分布式事务管理的规范,JTA是XA协议在Java中的实现,多个数据库或是消息厂商实现JTA接口,开发人员只需要调用SpringJTA接口即可实现JTA事务管理功能。JTA事务比JDBC事务更强大。一个JTA事务可以有多个参与者而一个JDBC事务则被限定在一个单一的数据库连接。下列任一个Java平台的组件都可以参与到一个JTA事务中2、分布式事务分布式事务(DistributedTransaction)包括事务管理器(TransactionManager)和一个或多个支持 XA 协议的资源管理器 ( Resource Manager )。资源管理器是任意类型的持久化数据存储容器例如在开发中常用的关系型数据库MySQLOracle等消息中间件RocketMQ、RabbitMQ等。事务管理器提供事务声明事务资源管理同步事务上下文传播等功能并且负责着所有事务参与单元者的相互通讯的责任。JTA规范定义了事务管理器与其他事务参与者交互的接口其他的事务参与者与事务管理器进行交互。二、SpringBoot整合JTA项目整体结构图1、核心依赖org.springframework.bootspring-boot-starter-weborg.springframework.bootspring-boot-starter-jta-atomikos2、环境配置这里jtaManager的配置在日志输出中非常关键。spring:jta:transaction-manager-id: jtaManager# 数据源配置datasource:type: com.alibaba.druid.pool.DruidDataSourcedata01:driverClassName: com.mysql.jdbc.DriverdbUrl: jdbc:mysql://localhost:3306/data-oneusername: rootpassword: 000000data02:driverClassName: com.mysql.jdbc.DriverdbUrl: jdbc:mysql://localhost:3306/data-twousername: rootpassword: 0000003、核心容器这里两个数据库连接的配置手法都是一样的可以在源码中自行下载阅读。基本思路都是把数据源交给JTA组件来统一管理方便事务的通信。数据源参数ComponentConfigurationProperties(prefix spring.datasource.data01)public class DruidOneParam {private String dbUrl;private String username;private String password;private String driverClassName;}JTA组件配置package com.jta.source.conifg;ConfigurationMapperScan(basePackages {com.jta.source.mapper.one},sqlSessionTemplateRef data01SqlSessionTemplate)public class DruidOneConfig {private static final Logger LOGGER LoggerFactory.getLogger(DruidOneConfig.class) ;Resourceprivate DruidOneParam druidOneParam ;PrimaryBean(dataSourceOne)public DataSource dataSourceOne () {// 设置数据库连接MysqlXADataSource mysqlXADataSource new MysqlXADataSource();mysqlXADataSource.setUrl(druidOneParam.getDbUrl());mysqlXADataSource.setUser(druidOneParam.getUsername());mysqlXADataSource.setPassword(druidOneParam.getPassword());mysqlXADataSource.setPinGlobalTxToPhysicalConnection(true);// 事务管理器AtomikosDataSourceBean atomikosDataSourceBean new AtomikosDataSourceBean();atomikosDataSourceBean.setXaDataSource(mysqlXADataSource);atomikosDataSourceBean.setUniqueResourceName(dataSourceOne);return atomikosDataSourceBean;}PrimaryBean(name sqlSessionFactoryOne)public SqlSessionFactory sqlSessionFactoryOne(Qualifier(dataSourceOne) DataSource dataSourceOne) throws Exception{// 配置Session工厂SqlSessionFactoryBean sessionFactory new SqlSessionFactoryBean();sessionFactory.setDataSource(dataSourceOne);ResourcePatternResolver resolver new PathMatchingResourcePatternResolver();sessionFactory.setMapperLocations(resolver.getResources(classpath*:/dataOneMapper/*.xml));return sessionFactory.getObject();}PrimaryBean(name data01SqlSessionTemplate)public SqlSessionTemplate sqlSessionTemplate(Qualifier(sqlSessionFactoryOne) SqlSessionFactory sqlSessionFactory) {// 配置Session模板return new SqlSessionTemplate(sqlSessionFactory);}}4、测试对比这里通过两个方法测试结果做对比在两个数据源之间进行数据操作时只需要在接口方法加上Transactional注解即可这样保证数据在两个数据源间也可以保证一致性。Servicepublic class TransferServiceImpl implements TransferService {Resourceprivate UserAccount01Mapper userAccount01Mapper ;Resourceprivate UserAccount02Mapper userAccount02Mapper ;Overridepublic void transfer01() {userAccount01Mapper.transfer(jack,100);System.out.println(i1/0);userAccount02Mapper.transfer(tom,100);}TransactionalOverridepublic void transfer02() {userAccount01Mapper.transfer(jack,200);System.out.println(i1/0);userAccount02Mapper.transfer(tom,200);}}三、JTA组件小结在上面JTA实现多数据源的事务管理使用方式还是相对简单通过两阶段的提交可以同时管理多个数据源的事务。但是暴露出的问题也非常明显就是比较严重的性能问题,由于同时操作多个数据源,如果其中一个数据源获取数据的时间过长,会导致整个请求都非常的长,事务时间太长,锁数据的时间就会太长自然就会导致低性能和低吞吐量。因此在实际开发过程中对性能要求比较高的系统很少使用JTA组件做事务管理。作为一个轻量级的分布式事务解决方案在小的系统中还是值得推荐尝试的。最后作为Java下的API原理和用法还是值得学习一下开阔眼界和思路。四、源代码地址到此这篇关于SpringBoot2整合JTA组件实现多数据源事务管理的文章就介绍到这了,更多相关SpringBoot2 JTA多数据源事务管理内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家
http://www.sadfv.cn/news/392857/

相关文章:

  • 个人如何优化网站有哪些方法品牌设计就是vi设计吗
  • 网站域名备案谁来做建设网站建站公司
  • 网站制作+网站建设wordpress mega
  • 做架构图的网站aso优化服务
  • asp网站后台登陆地址广东新闻联播吴姗姗
  • 外贸网站优化公司国内最专业的设计网站建设
  • 网站建设方案模板下载西安网站建设那家好
  • 企业网站主页 优帮云关于做公司app的软件或网站
  • 网站上加一个浮动小框怎么做营销网站开发方案
  • 北京市城乡建设部网站首页建站平台排行
  • 国外域名注册网站 中文wordpress头像怎么设置
  • 信托公司网站建设北京网页制作案例
  • 怎样做免费网站的推广网站开发好找工作吗
  • 厦门建网站多少钱网站收录大幅度下降
  • myeclipse怎样做网站新型网络营销模式
  • 长沙做网站的费用个人网用wordpress吗
  • 网站建设企业 熊账号php做的网站模版
  • 常平镇网站建设公司如何运营网站
  • 网站开发线上销售技巧WordPress无刷新登录
  • wordpress站点地图优化网站开发百灵鸟优化
  • 做网站可以不写代码建设银行的投诉网站首页
  • 全方位营销型网站网站开发需要学php吗
  • 网站制作完成后应进入什么阶段北京建筑设计院加盟
  • 做机械加工外贸网站哪家好深圳响应式网站
  • 世界足球排名前100名热狗网站排名优化外包
  • 杭州微信网站建设一人之下王野
  • 重庆深蓝科技网站开发wordpress封面外链
  • 雄县网站制作建设中心中山精品网站建设案例
  • 衡阳做网站ss0734北京天仪建设工程质量检测所网站6
  • 论坛怎么做网站链接网店代运营公司排名