Spring with and without XA

http://www.javaworld.com/article/2077963/open-source-tools/distributed-transactions-in-spring--with-and-without-xa.html

文章涉及的代码:

1.

	<bean id="transactionManager"
		class="org.springframework.transaction.jta.JtaTransactionManager">
		<property name="transactionManager">
			<bean class="com.atomikos.icatch.jta.UserTransactionManager"
				init-method="init" destroy-method="close">
				<property name="forceShutdown">
					<value>true</value>
				</property>
				<property name="transactionTimeout">
					<value>600</value>
				</property>
			</bean>
		</property>
		<property name="userTransaction">
			<bean class="com.atomikos.icatch.jta.UserTransactionImp" />
		</property>
	</bean>

		<bean id="dataSource" class="com.springsource.open.db.AtomikosDataSourceFactoryBean">
		<property name="uniqueResourceName" value="data-source" />
		<property name="xaDataSource">
			<bean class="test.jdbc.datasource.DerbyDataSourceFactoryBean">
				<property name="databaseName" value="derbydb" />
			</bean>
		</property>
		<property name="exclusiveConnectionMode" value="true" />
		<property name="connectionPoolSize" value="1" />
	</bean>

	<bean id="otherDataSource" class="com.springsource.open.db.AtomikosDataSourceFactoryBean">
		<property name="uniqueResourceName" value="other-data-source" />
		<property name="xaDataSource">
			<bean class="test.jdbc.datasource.DerbyDataSourceFactoryBean">
				<property name="databaseName" value="otherdb" />
			</bean>
		</property>
		<property name="exclusiveConnectionMode" value="true" />
		<property name="connectionPoolSize" value="1" />
	</bean>

2.

	<bean id="brokerService" class="org.apache.activemq.broker.BrokerService"
		init-method="start" destroy-method="stop">
		<property name="brokerName" value="broker" />
		<!-- Enable this if you need to inspect with JMX -->
		<property name="useJmx" value="false" />
		<property name="transportConnectorURIs">
			<list>
				<value>vm://localhost</value>
			</list>
		</property>
		<property name="persistenceAdapter">
			<bean class="org.apache.activemq.store.jdbc.JDBCPersistenceAdapter">
				<property name="dataSource">
					<bean class="com.springsource.open.jms.JmsTransactionAwareDataSourceProxy">
						<property name="targetDataSource" ref="dataSource"/>
						<property name="jmsTemplate" ref="jmsTemplate"/>
					</bean>
				</property>
				<property name="createTablesOnStartup" value="true" />
			</bean>
		</property>
	</bean>

3.

	<bean id="connectionFactory"
		class="org.springframework.jms.connection.TransactionAwareConnectionFactoryProxy">
		<property name="targetConnectionFactory">
			<bean class="org.apache.activemq.ActiveMQConnectionFactory" depends-on="brokerService">
				<property name="brokerURL" value="vm://localhost"/>
			</bean>
		</property>
		<property name="synchedLocalTransactionAllowed" value="true" />
	</bean>
时间: 2024-12-28 17:52:21

Spring with and without XA的相关文章

Distributed transactions in Spring, with and without XA

While it's common to use the Java Transaction API and the XA protocol for distributed transactions in Spring, you do have other options. The optimum implementation depends on the types of resources your application uses and the trade-offs you're will

spring Transaction Management --官方

原文链接:http://docs.spring.io/spring/docs/current/spring-framework-reference/html/transaction.html 12. Transaction Management 12.1 Introduction to Spring Framework transaction management Comprehensive transaction support is among the most compelling rea

数据库分库分表(sharding)系列

数据库分库分表(sharding)系列     目录; (一) 拆分实施策略和示例演示 (二) 全局主键生成策略 (三) 关于使用框架还是自主开发以及sharding实现层面的考量 (四) 多数据源的事务处理 (五) 一种支持自由规划无须数据迁移和修改路由代码的Sharding扩容方案 (一) 拆分实施策略和示例演示 第一部分:实施策略 图1.数据库分库分表(sharding)实施策略图解 1.准备阶段 对数据库进行分库分表(Sharding化)前,需要开发人员充分了解系统业务逻辑和数据库sch

数据库分库分表(sharding)系列(四) 多数据源的事务处理

系统经sharding改造之后,原来单一的数据库会演变成多个数据库,如何确保多数据源同时操作的原子性和一致性是不得不考虑的一个问题.总体上看,目前对于一个分布式系统的事务处理有三种方式:分布式事务.基于Best Efforts 1PC模式的事务以及事务补偿机制.我们下面对这三种处理方式一一进行分析.本文原文链接:http://blog.csdn.net/bluishglc/article/details/7793172 转载请注明出处! 分布式事务 这是最为人们所熟知的多数据源事务处理机制.本文

Spring分布式事务

[如何实现XA式.非XA式Spring分布式事务] [http://www.importnew.com/15812.html] 在JavaWorld大会上,来自SpringSource的David Syer跟大家分享了Spring应用的几种事务处理机制.读完此文,你可以了解可以用分布式事务做些什么.不能做什么以及如何.何时避免使用XA,何时必须使用.

使用spring+hibernate+atomikos+tomcat构建分布式事务

本文通过一个demo,介绍如何使用spring+hibernate+atomikos+tomcat构建在一个事务中涉及两个数据源的web应用. demo功能:实现一个能成功提交和回滚的涉及两个数据库数据源的XA事务. demo将实现: 1.一次性在两个数据库的两张表中各插入一条数据并提交. 2.一次性在两个数据库的两张表中各插入一条数据并回滚. 测试方式:restful web api 使用工具: spring 4.1.1.RELEASE hibernate 4.2.4.Final atomik

剑指架构师系列-InnoDB存储引擎、Spring事务与缓存

事务与锁是不同的.事务具有ACID属性: 原子性:持久性:由redo log重做日志来保证事务的原子性和持久性,一致性:undo log用来保证事务的一致性隔离性:一个事务在操作过程中看到了其他事务的结果,如幻读.锁是用于解决隔离性的一种机制.事务的隔离级别通过锁的机制来实现. 数据库的事务隔离级别有(多个事务并发的情况下): 1.read uncommitted #首先,修改隔离级别 set tx_isolation='READ-UNCOMMITTED'; select @@tx_isolat

玩转spring boot——properties配置

前言 在以往的java开发中,程序员最怕大量的配置,是因为配置一多就不好统一管理,经常出现找不到配置的情况.而项目中,从开发测试环境到生产环境,往往需要切换不同的配置,如测试数据库连接换成生产数据库连接,若有一处配错或遗漏,就会带来不可挽回的损失.正因为这样,spring boot给出了非常理想的解决方案——application.properties.见application-properties的官方文档:http://docs.spring.io/spring-boot/docs/curr

JDBC、JTA、Spring的事务管理

Java事务的类型有三种:JDBC事务.JTA(Java Transaction API)事务.容器事务. 事务就是对一系列的数据库操作(比如插入多条数据)进行统一的提交或回滚操作,如果插入成功,那么一起成功,如果中间有一条出现异常,那么回滚之前的所有操作.       这样可以防止出现脏数据,防止数据库数据出现问题.开发中为了避免这种情况一般都会进行事务管理. JDBC中是通过Connection对象进行事务管理的Hibernate中是通过Transaction进行事务管理,处理方法与JDBC