# dubbo LCN分布式事务示例demo
## 使用说明
框架分为jdbc/hibernate/mybatis三个版本。各个版本之间除了DB框架差异以外,其他配置都相同。
demo分为两类,demo1/demo2 只是消费者与提供者两个的简单demo。以及demo1/2/3/4/5复杂类型调用关系。
demo1/demo2类型:
demo1作为消费者(分布式事务的发起者)调用demo2.
demo1/2/3/4/5类型:
demo1作为分布式事务的发起者,调用了demo2 demo3,demo3有调用了demo4 demo5.
## 使用步骤
1. 启动[TxManager](https://github.com/1991wangliang/tx-lcn/tree/master/tx-manager)
2. 添加配置maven库与tx-lcn库
maven私有仓库地址:
```
<repositories>
<repository>
<id>lorne</id>
<url>https://1991wangliang.github.io/repository</url>
</repository>
</repositories>
```
maven jar地址
```
<dependency>
<groupId>com.lorne.tx</groupId>
<artifactId>dubbo-transaction</artifactId>
<version>x.x.x.RELEASE</version>
</dependency>
```
最新版本为 `3.0.0.RELEASE`
3. 添加tx.properties
```
#txmanager地址 http://txmanager ip:txmanager port/txmanager name/tx/manager/getServer 写法固定
url=http://127.0.0.1:8761/tx/manager/getServer
#事务补偿记录配置
#db 数据库类型 目前支持 mysql oracle sqlserver
compensate.db.dbType = mysql
```
4. 添加事务拦截器,确保拦截器的优先级高于spring事务优先级
```java
@Aspect
@Component
public class TxTransactionInterceptor implements Ordered{
@Autowired
private TxManagerInterceptor txManagerInterceptor;
@Override
public int getOrder() {
return 1;
}
@Around("execution(* com.demo.service.impl.*Impl.*(..))")
public Object around(ProceedingJoinPoint point)throws Throwable{
return txManagerInterceptor.around(point);
}
}
```
注意:
@Around 拦截地址不能包含com.lorne.tx.*
LCN是不控制事务。切面仅用于识别LCN分布式事务的作用。
5. 添加`META-INF\dubbo\com.alibaba.dubbo.rpc.Filter`配置。
```
transactionFilter=com.lorne.tx.dubbo.filter.TransactionFilter
```
在dubbo配置文件下添加
```
<!-- 请求拦截器-->
<dubbo:consumer filter="transactionFilter" />
<!-- 拒绝重复调用-->
<dubbo:provider delay="-1" timeout="6000" port="20881" retries="0"/>
```
6. 创建数据库,项目都是依赖相同的数据库,创建一次其他的demo下将不再需要重复创建。mysql数据库,库名称test
```sql
USE test;
DROP TABLE IF EXISTS `t_test`;
CREATE TABLE `t_test` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
```
7. spring配置说明
若spring下面配置了`<aop:aspectj-autoproxy expose-proxy="true"/>`增加`proxy-target-class="true" `
如下:
```
<aop:aspectj-autoproxy expose-proxy="true" proxy-target-class="true" />
```
8. 连接池配置,**后面操作的连接池都必须是LCN代理连接池**
```
<!--mysql druid连接池配置-->
<bean name="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
<property name="url" value="jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
<!-- 初始化连接大小 -->
<property name="initialSize" value="5"/>
<!-- 连接池最大并发使用连接数量 -->
<property name="maxActive" value="50"/>
<!-- 连接池最小空闲 -->
<property name="minIdle" value="1"/>
<!-- 获取连接最大等待时间 -->
<property name="maxWait" value="60000"/>
<!-- 打开pscache功能 在mysql5.5以上版本支持 -->
<property name="poolPreparedStatements" value="true"/>
<!-- 指定每个连接上的pscache的大小 -->
<property name="maxPoolPreparedStatementPerConnectionSize" value="33"/>
<property name="validationQuery" value="select 1"/>
<property name="testOnBorrow" value="false"/>
<!-- 归还连接时执行validationQuery ,检测是否有效,设置为true这样会降低性能 -->
<property name="testOnReturn" value="false"/>
<!-- 申请链接的时间是否检测 -->
<property name="testWhileIdle" value="true"/>
<!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
<property name="timeBetweenEvictionRunsMillis" value="60000"/>
<!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
<property name="minEvictableIdleTimeMillis" value="25200000"/>
<!-- 打开超过时间限制是否回收功能 -->
<property name="removeAbandoned" value="true"/>
<!-- 超过多长时间 1800秒,也就是30分钟 -->
<property name="removeAbandonedTimeout" value="1800"/>
<!-- 关闭abanded连接时输出错误日志 -->
<property name="logAbandoned" value="true"/>
<!-- 监控数据库 -->
<property name="filters" value="stat"/>
<!--<property name="filters" value="mergeStat"/>-->
<!-- 慢sql监控 10毫秒 -->
<!--<property name="connectionProperties" value="druid.stat.slowSqlMillis=10" />-->
</bean>
<!--mysql 补偿连接池 -->
<bean name="compensateDruidDataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
<property name="url" value="jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
<!-- 初始化连接大小 -->
<property name="initialSize" value="1"/>
<!-- 连接池最大并发使用连接数量 -->
<property name="maxActive" value="5"/>
<!-- 连接池最小空闲 -->
<property name="minIdle" value="1"/>
<!-- 获取连接最大等待时间 -->
<property name="maxWait" value="60000"/>
<!-- 打开pscache功能 在mysql5.5以上版本支持 -->
<property name="poolPreparedStatements" value="true"/>
<!-- 指定每个连接上的pscache的大小 -->
<property name="maxPoolPreparedStatementPerConnectionSize" value="33"/>
<property name="validationQuery" value="select 1"/>
<property name="testOnBorrow" value="false"/>
<!-- 归还连接时执行validationQuery ,检测是否有效,设置为true这样会降低性能 -->
<property name="testOnReturn" value="false"/>
<!-- 申请链接的时间是否检测 -->
<property name="testWhileIdle" value="true"/>
<!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
<property name="timeBetweenEvictionRunsMillis" value="60000"/>
<!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
<property name="minEvictableIdleTimeMillis" value="25200000"/>
<!-- 打开超过时间限制是否回收功能 -->
<property name="removeAbandoned" value="true"/>
<!-- 超过多长时间 1800秒,也就是30分钟 -->
<property name="removeAbandonedTimeout" value="1800"/>
<!-- 关闭abanded连接时输出错误日志 -->
<property name="logAbandoned" value="true"/>
<!-- 监控数据库 -->
<property name="filters" value="stat"/>
<!--<property name="filters" value="mergeStat"/>-->
<!-- 慢sql监控 10毫秒 -->
<!--<property name="connectionProperties" value="druid.stat.slowSqlMillis=10" />-->
</bean>
<!-- 补偿bean -->
<bean name="compensateDataSource" class="com.lorne.tx.compensate.repository.CompensateDataSource">
<property name="dataSource" ref="compensateDruidDataSource"></property>
</bean>
<!--lcn代理连接
没有合适的资源?快使用搜索试试~ 我知道了~
mybatis demo
共842个文件
xml:719个
java:72个
properties:25个
需积分: 15 13 下载量 28 浏览量
2018-01-25
16:57:04
上传
评论
收藏 619KB ZIP 举报
温馨提示
mybatis的demo程序, 基于dubbo的mybatis的演示程序。提供基本的pox配置
资源推荐
资源详情
资源评论
收起资源包目录
mybatis demo (842个子文件)
com.alibaba.dubbo.rpc.Filter 62B
com.alibaba.dubbo.rpc.Filter 62B
com.alibaba.dubbo.rpc.Filter 62B
com.alibaba.dubbo.rpc.Filter 62B
com.alibaba.dubbo.rpc.Filter 62B
com.alibaba.dubbo.rpc.Filter 62B
com.alibaba.dubbo.rpc.Filter 62B
com.alibaba.dubbo.rpc.Filter 62B
com.alibaba.dubbo.rpc.Filter 62B
transaction_hibernate_demo1.iml 9KB
transaction_hibernate_demo2.iml 9KB
transaction_mybatis_demo1.iml 8KB
transaction_mybatis_demo2.iml 8KB
transaction_demo4.iml 8KB
transaction_demo5.iml 8KB
transaction_demo3.iml 8KB
transaction_demo2.iml 8KB
transaction_demo1.iml 8KB
dubbo-lcn-demo.iml 336B
BaseDaoImpl.java 1KB
BaseDaoImpl.java 1KB
TestServiceImpl.java 995B
TestServiceImpl.java 916B
TestServiceImpl.java 899B
TxTransactionInterceptor.java 876B
TxTransactionInterceptor.java 875B
TxTransactionInterceptor.java 875B
TxTransactionInterceptor.java 875B
TxTransactionInterceptor.java 875B
TxTransactionInterceptor.java 874B
Test3ServiceImpl.java 861B
TxTransactionInterceptor.java 826B
TxTransactionInterceptor.java 826B
TxTransactionInterceptor.java 825B
TransactionTest.java 748B
TransactionTest.java 722B
TransactionTest.java 719B
Test2ServiceImpl.java 718B
TransactionTest.java 698B
Test2ServiceImpl.java 674B
Test2ServiceImpl.java 652B
TestController.java 650B
TransactionTest.java 634B
TransactionTest.java 629B
TransactionTest.java 629B
TransactionTest.java 627B
TransactionTest.java 627B
Test4ServiceImpl.java 615B
Test5ServiceImpl.java 615B
DemoServiceImpl.java 563B
BaseEntity.java 546B
BaseEntity.java 546B
TestDaoImpl.java 543B
TestDaoImpl.java 543B
TestDaoImpl.java 543B
TestDaoImpl.java 543B
TestDaoImpl.java 543B
BaseDao.java 456B
BaseDao.java 456B
TestDaoImpl.java 389B
TestDaoImpl.java 389B
Test.java 364B
Test.java 364B
Test.java 351B
Test.java 351B
TestDao.java 153B
TestDao.java 153B
TestDao.java 151B
TestDao.java 151B
TestService.java 124B
Test4Service.java 124B
Test5Service.java 124B
Test2Service.java 124B
Test4Service.java 124B
Test3Service.java 124B
Test5Service.java 124B
TestService.java 124B
TestService.java 124B
TestDao.java 123B
TestDao.java 123B
TestDao.java 123B
TestDao.java 123B
Test2Service.java 122B
Test2Service.java 122B
Test3Service.java 122B
TestDao.java 122B
Test2Service.java 122B
Test3Service.java 122B
Test2Service.java 121B
Test2Service.java 121B
DemoService.java 119B
jquery-1.10.2.min.js 91KB
index.jsp 308B
index.jsp 308B
index.jsp 299B
README.md 10KB
README.md 18B
log4j.properties 1KB
log4j.properties 1KB
log4j.properties 1KB
共 842 条
- 1
- 2
- 3
- 4
- 5
- 6
- 9
资源评论
szmicheas1
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功