spring多数据源的配置(分布式事务管理)

spring多数据源的配置(分布式事务管理)
不依赖于应用服务器(这里使用tomcat服务器)的开源jta分布式事务管理的实现有两种方式,分别为:Jotm、atomikos,下面着重讲解用这两种方式如何配置多数据源并支持分布式事务管理
1、Jotm(Java Open Transaction Manager)
1.1、jotm:即基于java开放事务管理器,实现jta规范,能够运行在非应用服务器环境中,web容器或独立java se环境,官网地址:http://jotm.objectweb.org/

1.2、依赖的jar文件
jotm-client.jar
jotm-core.jar
jotm-datasource.jar
jotm-jms.jar
jotm-standalone.jar
ow2-jta-1.1-spec.jar
xapool.jar

1.3、首先配置支持Jotm工厂Bean
    <bean id="jotm" class="org.springframework.transaction.jta.JotmFactoryBean">
    	<property name="defaultTimeout" value="500000"></property>
    </bean>
1.4、配置分布式数据源
<pre name="code" class="html"><bean id="dataSource" class="org.enhydra.jdbc.pool.StandardXAPoolDataSource" destroy-method="shutdown">
    	<property name="dataSource">
    		<bean class="org.enhydra.jdbc.standard.StandardXADataSource" destroy-method="shutdown">
    			<property name="transactionManager" ref="jotm"/>
    			<property name="driverName" value="${database.driverClass}"/>
    			<property name="url" value="${database.jdbcUrl}"/>
    		</bean>
    	</property>
    	<property name="user" value="${database.user}"></property>
    	<property name="password" value="${database.password}"></property>
    </bean>
    
    <bean id="dataSource2" class="org.enhydra.jdbc.pool.StandardXAPoolDataSource" destroy-method="shutdown">
    	<property name="dataSource">
    		<bean class="org.enhydra.jdbc.standard.StandardXADataSource" destroy-method="shutdown">
    			<property name="transactionManager" ref="jotm"/>
    			<property name="driverName" value="${database2.driverClass}"/>
    			<property name="url" value="${database2.jdbcUrl}"/>
    		</bean>
    	</property>
    	<property name="user" value="${database2.user}"></property>
    	<property name="password" value="${database2.password}"></property>
    </bean>


 
  1.5、配置数据管理 
 
<bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager">
        <property name="userTransaction" ref="jotm" />
</bean>


2、Atomikos(http://www.atomikos.com
2.1、依赖的jar文件
transactions-jdbc
transactions-jta
transactions-api
transactions
atomikos-utils

2.2、配置多数据源
下面以informix、Oracle数据库为例
<bean id="dataSource" class="com.atomikos.jdbc.AtomikosDataSourceBean" init-method="init" destroy-method="close">
		<property name="uniqueResourceName" value="dataSource"/>
		<property name="xaDataSourceClassName" value="com.informix.jdbcx.IfxXADataSource"/>
		<property name="xaProperties">
			<props>
				<prop key="ifxIFXHOST">${database.ifxhost}</prop>
				<prop key="serverName">${database.serverName}</prop>
				<prop key="portNumber">${database.portNumber}</prop>
				<prop key="databaseName">${database.databaseName}</prop>
				<prop key="user">${database.user} </prop>
				<prop key="password">${database.password} </prop>
			</props>
		</property>
		<property name="maxPoolSize"><value>30</value> </property>
		</bean>
	
	<bean id="dataSource2" class="com.atomikos.jdbc.AtomikosDataSourceBean" init-method="init" destroy-method="close">
		<property name="uniqueResourceName" value="malldataSource"/>
		<property name="xaDataSourceClassName" value="oracle.jdbc.xa.client.OracleXADataSource"/>
		<property name="xaProperties">
			<props>
				<prop key="URL">${database2.jdbcUrl} </prop>
				<prop key="user">${database2.user} </prop>
				<prop key="password">${database2.password} </prop>
			</props>
		</property>
		<property name="maxPoolSize"><value>30</value> </property>
		</bean>

2.3、配置数据源管理
<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="240"/>	
	</bean>
	
	<bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager">
		<property name="transactionManager">
			<ref bean="atomikosTransactionManager"/>
		</property>
		<property name="userTransaction">
			<ref bean="atomikosUserTransaction"/>
		</property>
	</bean>

经过测试,以上两种配置都可以实现分布式事务管理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值