日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

spring+mybatis+atomikos 实现JTA事务

發布時間:2025/1/21 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 spring+mybatis+atomikos 实现JTA事务 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

atomikos支持一個分布式事務,結合spring,可以很好的滿足一個應用訪問多個庫的需要。

atomikos 結合spring做配置也很簡單

1.配置datasource

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

<!-- 第一個數據庫 -->

????<bean id="dataSource" class="com.atomikos.jdbc.SimpleDataSourceBean"

????????init-method="init" destroy-method="close">

????????<property name="uniqueResourceName" value="mysql/main" ?/>

????????<property name="xaDataSourceClassName"

????????????value="com.mysql.jdbc.jdbc2.optional.MysqlXADataSource" ?/>

????????<property name="xaDataSourceProperties"

????????????value="URL=${jdbc.url.a};user=${jdbc.username.a};password=${jdbc.password.a}" ?/>

????????<property name="exclusiveConnectionMode" value="true" ?/>

????????<property name="connectionPoolSize" value="10" ?/>

????????<property name="validatingQuery">

????????????<value>SELECT 1</value>

????????</property>

????</bean>

????<!-- 第二個數據庫 -->

????<bean id="dataSourceB" class="com.atomikos.jdbc.SimpleDataSourceBean"

????????init-method="init" destroy-method="close">

????????<property name="uniqueResourceName" value="mysql/news" ?/>

????????<property name="xaDataSourceClassName"

????????????value="com.mysql.jdbc.jdbc2.optional.MysqlXADataSource" ?/>

????????<property name="xaDataSourceProperties"

????????????value="URL=${jdbc.url.b};user=${jdbc.username.b};password=${jdbc.password.b}" ?/>

????????<property name="exclusiveConnectionMode" value="true" ?/>

????????<property name="connectionPoolSize" value="10" ?/>

????????<property name="validatingQuery">

????????????<value>SELECT 1</value>

????????</property>

????</bean>

配置mybatisSessionFactory

?

?

1

2

3

4

5

6

7

8

9

<bean id="sqlSessionFactoryB" class="org.mybatis.spring.SqlSessionFactoryBean">

????????<property name="configLocation" value="classpath:mybatis/mybatis-config-b.xml" ?/>

????????<property name="dataSource" ref="dataSourceB" ?/>

????</bean>

?

????<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">

????????<property name="configLocation" value="classpath:mybatis/mybatis-config.xml" ?/>

????????<property name="dataSource" ref="dataSource" ?/>

????</bean>

這里使用的是SessionFactory,不是org.springframework.orm.ibatis.SqlMapClientFactoryBean,在mybatis3中用SqlMapClientFactoryBean匯報com.ibatis.common.xml.NodeletException?異常。

configLocation 對應的mybatis配置,跟平時配置一樣。

?

1

2

3

4

5

6

7

8

9

10

<?xml version="1.0" encoding="UTF-8" ??>

<!DOCTYPE configuration PUBLIC ?"-//mybatis.org//DTD Config 3.0//EN" ?"http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>

????<typeAliases>

????????<typeAlias alias="User"? type="com.lantii.domain.User"/>

????</typeAliases>

????<mappers>

????????<mapper resource="com/lantii/dao/UserMapper.xml" ?/>

????</mappers>

</configuration>

事務這塊用spring管理atomikos

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

<bean id="atomikosTransactionManager" class="com.atomikos.icatch.jta.UserTransactionManager"

????????init-method="init" destroy-method="close">

????????<property name="forceShutdown">

????????????<value>true</value>

????????</property>

????</bean>

?

????<bean id="atomikosUserTransaction" class="com.atomikos.icatch.jta.UserTransactionImp">

????????<property name="transactionTimeout" value="300" ?/>

????</bean>

?

????<bean id="springTransactionManager"

????????class="org.springframework.transaction.jta.JtaTransactionManager">

????????<property name="transactionManager">

????????????<ref bean="atomikosTransactionManager" />

????????</property>

????????<property name="userTransaction">

????????????<ref bean="atomikosUserTransaction" />

????????</property>

????</bean>

?

????<aop:aspectj-autoproxy />

?

????<aop:config? proxy-target-class="true">

????????<aop:advisor pointcut="execution(* ?*com.lantii.service..*(..))"

????????????advice-ref="txAdvice" />

????</aop:config>

?

????<tx:advice id="txAdvice" transaction-manager="springTransactionManager">

????????<tx:attributes>

????????????<tx:method name="get*"? propagation="REQUIRED"? ?read-only="true" />

????????????<tx:method name="find*"? propagation="REQUIRED"? ?read-only="true" />

????????????<tx:method name="has*"? propagation="REQUIRED"? ?read-only="true" />

????????????<tx:method name="locate*"? propagation="REQUIRED"? ?read-only="true" />

????????????<tx:method name="*"? propagation="REQUIRED" ?rollback-for="Exception"? />

????????</tx:attributes>

????</tx:advice>

Mapper的管理及注入

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

<bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">

????????<property name="sqlSessionFactory" ref="sqlSessionFactory" ?/>

????????<property name="mapperInterface" value="com.lantii.dao.UserMapper" ?/>

????</bean>

?????

????<bean id="roleMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">

????????<property name="sqlSessionFactory" ref="sqlSessionFactoryB" ?/>

????????<property name="mapperInterface" value="com.lantii.dao.RoleMapper" ?/>

????</bean>

?

????<bean id="userService" class="com.lantii.service.UserServiceImpl">

????????<property name="userMapper" ref="userMapper" ?/>

????????<property name="roleMapper" ref="roleMapper" ?/>

????</bean>

atomikos的配置jta.properties,該文件放在應用classpath下面

?

1

2

3

4

5

com.atomikos.icatch.service=com.atomikos.icatch.standalone.UserTransactionServiceFactory

com.atomikos.icatch.console_file_name = tm.out

com.atomikos.icatch.log_base_name = tmlog

com.atomikos.icatch.tm_unique_name = ?com.atomikos.spring.jdbc.tm

com.atomikos.icatch.console_log_level=WARN

這幾基本配置完畢,需要jar包

atomikos-util.jar

transactions.jar

transactions-jta.jar

transactions-jdbc-deprecated.jar

mybatis.jar

mybatis-spring.jar

cglib.2.2.2.jar

spring的jar包

在Service中,調用事務的方法不能try。。。catch事務的方法,否者不能回滾

如下帶面就會出現不會滾問題

?

1

2

3

4

5

6

try{

????userMapper.addUser(user);

????roleMapper.addRole(role);

}catch(Exception){

?????????????????

}

當然也可以不用mybatis,個人喜歡用Spring JdbcTemplate



轉載于:https://blog.51cto.com/1306733/1721585

總結

以上是生活随笔為你收集整理的spring+mybatis+atomikos 实现JTA事务的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 绿帽h啪肉np辣文 | 久久久久久网站 | 91射区| 午夜伊人网 | aa在线| 伊人久久一区 | 大尺度一区二区 | 欧美中文字幕视频 | 青青草狠狠干 | 成人午夜一区二区 | 绿帽人妻精品一区二区 | 久久久18 | 亚洲加勒比 | 亚洲三区在线观看无套内射 | 少妇特黄a一区二区三区88av | 又色又爽又高潮免费视频国产 | 婷婷久久久久 | 狠狠干男人的天堂 | 久久久久一区 | 永久免费在线视频 | 一区二区三区精彩视频 | 尹人在线视频 | 亚洲第一免费网站 | 国产精品黑人一区二区三区 | 亚洲精品在线视频观看 | 熟妇人妻中文av无码 | 国产成人精品综合久久久久99 | 国产香蕉97碰碰碰视频在线观看 | 久久久久国产精品无码免费看 | 亚洲精品高潮 | 91在线成人| 国产靠逼网站 | 女人舌吻男人茎视频 | 日韩欧美aaa | 午夜精品一区二区三区在线观看 | 噜噜色成人 | 成人看片黄a免费看视频 | 曰本丰满熟妇xxxx性 | 你懂的在线免费观看 | 国产精品-区区久久久狼 | 九九在线观看视频 | 黄色资源在线观看 | 用力抵着尿进去了h | 成人免费毛片日本片视频 | 国产在线观看免费播放 | 亚洲第一男人天堂 | 99精品视频免费看 | 欧美激情综合色综合啪啪五月 | 人人插人人草 | 国产精品福利导航 | 天天欲色 | 手机看片1024国产 | 欧美日韩精品一区二区三区蜜桃 | 欧美成人aaaaa | 老司机精品福利导航 | 蜜臀av性久久久久蜜臀aⅴ | 日韩在线免费观看av | 武侠古典av| 国产网站免费 | 亚洲视频在线观看一区二区三区 | 亚州av网站| 污视频在线免费 | 91精品国产91久久久久久 | 999成人网| 超碰国产一区二区三区 | 欧美日韩一区二区综合 | 爱情岛论坛自拍 | 欧美freesex黑人又粗又大 | 国产精品资源 | 天天躁日日躁狠狠躁av麻豆 | 色婷婷视频| 少妇一边呻吟一边说使劲视频 | 国产原创一区 | 久久99精品久久久久久噜噜 | 免费看污片的网站 | 日韩精品一区二区三区无码专区 | 星空大象在线观看免费播放 | 成人午夜影片 | 日本高清视频www夜色资源 | 欧美做受高潮1 | 喷水少妇| 国产毛片一区二区三区va在线 | 成人午夜久久 | 在线观看av免费 | 一区三区视频 | av线上免费观看 | 国产精品久久国产愉拍 | 神马影院一区二区三区 | 国产乱子伦精品无码专区 | 日本美女a级片 | 免费在线观看日韩 | 99热国产| 国产普通话bbwbbwbbw | 亚洲一区二区三区影视 | 在线视频一二区 | 国产欧美日韩视频 | 久草新视频 | 一区二区有码 | 日韩国产网站 |