- 浏览: 249922 次
- 性别:
- 来自: 苏州
文章分类
- 全部博客 (289)
- java (72)
- oracle (3)
- mysql (5)
- spring (28)
- hibernate (2)
- osgi (0)
- linux (2)
- ExtJs (1)
- jvm (0)
- mybatis (7)
- 分布式 (11)
- MINA (6)
- apache+tomcat (13)
- js+htm (7)
- android (44)
- http (1)
- hbase+hdoop (0)
- memcache (13)
- search (27)
- 部署及性能 (12)
- mongoDB (2)
- 多线程 (12)
- 安全管理验证 (9)
- struts (1)
- webservice (0)
- easyUI (1)
- spring security (16)
- pattern (6)
- 算法 (2)
最新评论
-
lzh8189146:
CommonsHttpSolrServer这个类,现在是不是没 ...
CommonsHttpSolrServer -
xiaochanzi:
我按照你的方法试了下,tomcat6可以发布,但是访问任何网页 ...
基于内嵌Tomcat的应用开发 -
phoneeye:
麻烦你,如果是抄来的文章,请给出来源。谢谢
ant 两则技巧 -
neverforget:
转载不注明出处
Spring Security3.1登陆验证 替换 usernamepasswordfilter -
liang1022:
若不使用eclipse ,如何在命令行下 运行服务端程序 ?
WebService CXF学习(入门篇2):HelloWorld
4. 在Spring配置文件中配置JOTM
代码清单 1 applicationContext-jta.xml
…
首先,我们在①处通过Spring所提供的JotmFactoryBean创建一个本地JOTM实例,该实例同时实现了 javax.transaction.UserTransaction和javax.transaction.TransactionManager接口,它可以和ObjectWeb的XAPool一起工作。
JTA事务管理器通过userTransaction属性引用本地JOTM实例,Spring的JtaTransactionManager会自动探测到传入的javax.transaction.UserTransaction引用也实现了javax.transaction.TransactionManager,所以我们无需再配置JtaTransactionManager的transactionManager属性,如②所示。
在Spring中配置JOTM的另一个关键问题是配置XAPool,支持JTA事务的数据源必须封装成XAPool。首先,我们通过org.enhydra.jdbc.standard.StandardXADataSource 配置一个XA数据源,它指向topicdb数据库,如③-1所示。而后,通过org.enhydra.jdbc.pool.StandardXAPoolDataSource将其封装成一个XAPool,如③所示。按照相同的方式,配置指向postdb数据库的XAPool,如④所示。
接下来的配置就顺理成章了,分别使用Spring JDBC的模板类配置DAO类,然后再配置引用DAO类的业务类。关于Spring JDBC的详细内容,参见第10章的内容。
这里,我们使用@Transaction注解对业务类BbtForumImpl进行事务声明,所以通过<tx:annotation-driven/>对此进行驱动,BbtForumImpl的代码如下所示:
代码清单 2 BbtForumImpl
BbtForumImpl将Dao类组织起来,PostDao和TopicDao分别访问不同数据库中表,通过Spring注解驱动事务切面的增强后,它们将工作于同一个JTA事务中。
代码清单 1 applicationContext-jta.xml
…
<bean id="jotm"class="org.springframework.transaction.jta.JotmFactoryBean" />①JOTM本地实例 ②JTA事务管理器 <bean id="txManager"class="org.springframework.transaction.jta.JtaTransactionManager"><property name="userTransaction" ref="jotm" /> ②-1:指定userTransaction属性 </bean>③XAPool配置,内部包含了一个XA数据源,对应topicdb数据库 <bean id="topicDS"class="org.enhydra.jdbc.pool.StandardXAPoolDataSource"destroy-method="shutdown"><property name="dataSource">③-1:内部XA数据源 <bean class="org.enhydra.jdbc.standard.StandardXADataSource"destroy-method="shutdown"><property name="transactionManager"ref="jotm" /><property name="driverName"value="com.MySQL.jdbc.Driver" /><property name="url"value="jdbc:MySQL://localhost:3309/topicdb" /></bean></property><property name="user" value="root" /><property name="password"value="1234" /></bean>④按照③相似的方式配置另一个XAPool,对应postdb数据库, <bean id="postDS"class="org.enhydra.jdbc.pool.StandardXAPoolDataSource"destroy-method="shutdown"><property name="dataSource"><beanclass="org.enhydra.jdbc.standard.StandardXADataSource"destroy-method="shutdown"><property name="transactionManager"ref="jotm" /><property name="driverName"value="com.mysql.jdbc.Driver" /><property name="url"value="jdbc:mysql://localhost:3309/postdb" /></bean></property><property name="user" value="root" /><property name="password"value="1234" /></bean>⑤配置访问topicDB数据源的Spring JDBC模板 <bean id="topicTemplate"class="org.springframework.jdbc.core.JdbcTemplate"><property name="dataSource" ref="topicDS" /></bean>⑥配置访问postDB数据源的Spring JDBC模板 <bean id="postTemplate"class="org.springframework.jdbc.core.JdbcTemplate"><property name="dataSource" ref="postDS" /></bean>⑦基于topicTemplate数据源的topicDao <bean id="topicDao"class="com.baobaotao.dao.jdbc.TopicJdbcDao"><property name="jdbcTemplate" ref="topicTemplate" /></bean>⑧基于postTemplate数据源的postDao <bean id="postDao"class="com.baobaotao.dao.jdbc.PostJdbcDao"><property name="jdbcTemplate" ref="postTemplate" /></bean>⑨进行跨数据库JTA事务的业务类 <bean id="bbtForum"class="com.baobaotao.service.impl.BbtForumImpl"><property name="topicDao" ref="topicDao" /><property name="postDao"ref="postDao" /></bean>⑩对BbtForumImpl业务类中的@Transaction注解进行驱动 <tx:annotation-driven transaction-manager="txManager" />
JTA事务管理器通过userTransaction属性引用本地JOTM实例,Spring的JtaTransactionManager会自动探测到传入的javax.transaction.UserTransaction引用也实现了javax.transaction.TransactionManager,所以我们无需再配置JtaTransactionManager的transactionManager属性,如②所示。
在Spring中配置JOTM的另一个关键问题是配置XAPool,支持JTA事务的数据源必须封装成XAPool。首先,我们通过org.enhydra.jdbc.standard.StandardXADataSource 配置一个XA数据源,它指向topicdb数据库,如③-1所示。而后,通过org.enhydra.jdbc.pool.StandardXAPoolDataSource将其封装成一个XAPool,如③所示。按照相同的方式,配置指向postdb数据库的XAPool,如④所示。
接下来的配置就顺理成章了,分别使用Spring JDBC的模板类配置DAO类,然后再配置引用DAO类的业务类。关于Spring JDBC的详细内容,参见第10章的内容。
这里,我们使用@Transaction注解对业务类BbtForumImpl进行事务声明,所以通过<tx:annotation-driven/>对此进行驱动,BbtForumImpl的代码如下所示:
代码清单 2 BbtForumImpl
package com.baobaotao.service.impl; import org.springframework.transaction.annotation.Transactional; import com.baobaotao.dao.PostDao; import com.baobaotao.dao.TopicDao; import com.baobaotao.domain.Forum; import com.baobaotao.domain.Topic; import com.baobaotao.service.BbtForum; @Transactional ①事务注解,以便Spring动态织入事务管理功能 public class BbtForumImpl implements BbtForum { private TopicDao topicDao; private PostDao postDao; public voidaddTopic(Topic topic) throws Exception { ②将方法将被施加JTA事务的增强 topicDao.addTopic(topic); postDao.addPost(topic.getPost()); }}
发表评论
-
主题:Spring MVC3 国际化配置
2012-04-13 08:30 738http://www.iteye.com/topic/1122 ... -
使用 Spring Data JPA 简化 JPA 开发
2012-04-13 08:30 861http://www.ibm.com/developerwor ... -
跟我学spring3 电子书下载(完)
2012-04-13 08:30 600http://www.iteye.com/topic/1122 ... -
spring 读取applicationContext方式
2012-04-12 08:02 985spring 读取applicationCont ... -
spring javamail
2012-04-11 08:00 714spring javamail 博客分类 ... -
Quartz在Spring中动态设置cronExpression
2012-04-11 08:00 618Quartz在Spring中动态设置cronEx ... -
spring定时器用Annotation实现
2012-04-10 08:28 748spring定时器用Annotation实现 ... -
spring 3 中使用注解的方式来进行任务调度。
2012-04-10 08:28 705spring 3 中使用注解的方式来进行任务调度。 ... -
spring定时器如何配置
2012-04-10 08:28 1006有两种流行Spring定时器配置:Java的Timer类 ... -
Spring在web应用中获得Bean的方法
2012-04-01 08:21 858Spring在web应用中获得Bean的方法 ... -
Spring3.0中的异常处理配置方法
2012-04-10 08:28 753Spring3.0中的异常处理配置方法 ... -
在Spring3中使用注解(@Scheduled)创建计划任务
2012-04-09 09:49 1222在Spring3中使用注解(@Scheduled ... -
利用 Spring 和 EHCache 做方法缓存处理〔转〕
2012-04-09 09:49 800利用 Spring 和 EHCache 做方法缓存处理〔 ... -
springmvc rest框架搭建中遇到的问题
2012-03-16 14:37 927springmvc rest框架搭建中遇到的问题(一) ... -
spring 3.0 应用springmvc 构造RESTful URL 详细讲解
2012-03-16 14:36 653http://badqiu.iteye.com/blog/47 ... -
MyBatis3整合Spring3的Transaction事务处理
2012-03-07 08:18 877MyBatis3整合Spring3的Transacti ... -
spring mvc 注解验证springmodules common validator (注解验证)
2012-03-02 09:21 1981转载:http://blog.csdn.net/h ... -
spring结合quartz的定时的2种方式
2012-03-02 09:21 735spring结合quartz的定时的2种方式 ... -
spring结合quartz的执行多任务的实现
2012-03-02 09:21 1828spring结合quartz的执行多任务的实现 ... -
spring 事务 不能rollback的问题终于解决了
2012-03-19 08:24 828spring 事务 不能rollback的问题 ...
相关推荐
在Spring中使用JTA事务管理 1 通过集成JOTM,直接在Spring中使用JTA事务 1.1. 将JOTM以下类库添加到类路径中 1.2. 编写JOTM配置文件,放到类路径下 1.3. 在MySQL上建立两个数据库 1.4. 在Spring配置文件中配置JOTM ...
JTA配置文件请看applicationContext-jta.xml 博文链接:https://liran-email.iteye.com/blog/227990
Spring+iBatis+JOTM实现JTA事务: 如何处理跨库事物:spring + jtom 的jta事务是个很好的选择. 这个源码示例非常不错,包括所有的源码和jar包,下载后eclipse 或 myeclipse 导入就能用。 里面有详细的说明和注释,...
spring + JTA + JOTM实现分布式事务, 高大上的技术
博客上有很多类似的,很多都有点小错误。还是自己搭建测试的好用。resource中有sql,自己创建两个数据库导入sql,即可运行test测试
Spring+iBatis+JOTM实现JTA事务
atomikos实现多数据源支持分布式事务管理(spring、tomcat、JTA) 结合spring 和durid进行配置,
Atomikos jta 的jar包 博文链接:https://momoko8443.iteye.com/blog/190994
spring + JTA + atomikos实现分布式事务, 高大上的技术
Spring Boot+Druid+Mybatis实现JTA分布式事务
分布式事务操作之Spring+JTA+mybatis源码
2.Spring+Jotm整合实现JTA分布式事务,应用场景如转账等,同一事务内完成db1用户加100元、db2用户减100元。 3.Spring+Junit4单元测试,优点:不会破坏数据库现场,等等。 (特别注意:Spring3.0里不在提供对jotm的...
例子虽小,可覆盖面广,设计spring载入.properties文件,spring配置jta和jotm分布式事务,设置数据源连接池,注解事务驱动。功能是在mysql上建立了两个数据库分别为dbone和dbtwo,在dbone里有表tb1,表中只有一个字段...
spring+jms+jta事务的消息发送和消息消费。 完整可正常运行例子,对JTA分布式事务的配置。 本例可以直接作为处理消息的项目,在此之上直接继续开发。
Spring boot+Atomikos+JTA+Hibernate+MySQL实现分布式事务+多数据源,分别向两个不同的数据里面插入数据同时失败和成功,调用接口方式原理一样。
代码下载下来,想要了解更多相关内容可以看http://www.cnblogs.com/shamo89/p/7307961.html
NULL 博文链接:https://lizhao6210-126-com.iteye.com/blog/1958831