`

分布式事务处理-jotm应用

 
阅读更多

由于项目的需要,初步学习了分布式事务的相关知识,了解了可以和tomcat集成的几款分布式软件,在此基础之上,将事务处理和项目集成到了一起。

 

应用层采用了spring的声明式事务处理方式,经过测试知道sping本身支持单数据源的跨表事务。

集成了jotm后,对跨数据源的事务进行统一管理。经过测试,可以通过配置文件的方式将jotm和spring较好的集成在一起。

 

项目使用的框架:struts2+spring2.5
数据库:mysql5

第三方事务软件:jotm2.2.1

 

下面是配置文件,仅供参考。

 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
           http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context-2.5.xsd">
	
	
	<bean id="dsDefault" class="org.enhydra.jdbc.standard.StandardXADataSource" destroy-method="shutdown">
    	<property name="transactionManager" ref="jotm"/>
        <property name="driverName" value="org.logicalcobwebs.proxool.ProxoolDriver" />
        <property name="url" value="proxool.guopei" />
    </bean>

    
    <bean id="dsTestLocal" class="org.enhydra.jdbc.standard.StandardXADataSource" destroy-method="shutdown">
    	<property name="transactionManager" ref="jotm"/>
        <property name="driverName" value="org.logicalcobwebs.proxool.ProxoolDriver" />
        <property name="url" value="proxool.test" />
    </bean>
    
    <bean id="dsTestVm" class="org.enhydra.jdbc.standard.StandardXADataSource" destroy-method="shutdown">
    	<property name="transactionManager" ref="jotm"/>
        <property name="driverName" value="org.logicalcobwebs.proxool.ProxoolDriver" />
        <property name="url" value="proxool.vm" />
    </bean>
	
	
	<!--JOTM本地实例-->
	<bean id="jotm" class="org.springframework.transaction.jta.JotmFactoryBean"/>
	
	<!--JTA事务管理器-->
	<bean id="txManager" class="org.springframework.transaction.jta.JtaTransactionManager">
		<property name="userTransaction" ref="jotm"/><!--指定userTransaction属性引用JOTM本地实例-->
	</bean>
	
	<!--XAPool配置,内部包含了一XA数据源,对应了数据库jtatesta支持JTA事务的数据源,必须封装成XAPool-->
	<bean id="jtaDs" class="org.enhydra.jdbc.pool.StandardXAPoolDataSource" destroy-method="shutdown">
		<property name="dataSource">
			<ref local="dsDefault" />
		</property>
	</bean>
	
	
	<!--类似地,对应了数据库jtatestb的XAPool配置,内部包含了一XA数据源-->
	<bean id="jtaTest" class="org.enhydra.jdbc.pool.StandardXAPoolDataSource" destroy-method="shutdown">
		<property name="dataSource">
			<ref local="dsTestLocal" />
		</property>
	</bean>	
	
	<bean id="jtaVm" class="org.enhydra.jdbc.pool.StandardXAPoolDataSource" destroy-method="shutdown">
		<property name="dataSource">
			<ref local="dsTestVm" />
		</property>
	</bean>
	
	
	<bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor">	
		<property name="transactionManager" ref="txManager" />
		
		<property name="transactionAttributes">
			<props>
				<prop key="insert*">PROPAGATION_REQUIRED, -Throwable</prop>
				<prop key="*">PROPAGATION_REQUIRED, readOnly</prop>
			</props>
		</property>
	</bean>
	
	<bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
		<property name="proxyTargetClass">
         	<value>true</value>
        </property>
		<property name="beanNames">
			<list>
				<value>*Service</value>
			</list>
		</property>
		<property name="interceptorNames">
			<list>
				<value>transactionInterceptor</value>
			</list>
		</property>
	</bean>
	
	
	<bean id="singleDsService" class="com.test.service.SingleDsService">
	</bean>
	
	
	<bean id="dsMultiService" class="com.test.service.DsMultiService">
		<property name="dsLocalGuopeiDao" ref="dsLocalGuopeiDao"/>
		<property name="dsLocalTestDao" ref="dsLocalTestDao"/>
		<property name="dsVmTestDao" ref="dsVmTestDao"/>
	</bean>
	
	
	<bean id="dsLocalGuopeiDao" class="com.test.dao.DsLocalGuopeiDao">
		<property name="dataSource" ref="jtaDs" />
	</bean>
	
	<bean id="dsLocalTestDao" class="com.test.dao.DsLocalTestDao">
		<property name="dataSource" ref="jtaTest" />
	</bean>
	
	<bean id="dsVmTestDao" class="com.test.dao.DsVmTestDao">
		<property name="dataSource" ref="jtaVm" />
	</bean>
	
</beans>

 

分享到:
评论

相关推荐

    ow2-jotm-dist-2.2.1-bin.tar.gz

    5. **性能优化**:JOTM设计时考虑了性能,提供了一种轻量级的事务处理机制,适合高性能的应用场景。 在实际应用中,开发者会将JOTM集成到Java EE服务器或Spring框架中,利用JOTM的事务管理能力来保证业务逻辑的正确...

    ow2-jotm-src-2.2.1-src.tar

    标题中的"ow2-jotm-src-2.2.1-src.tar"是一个开源项目JOTM(Java Open Transaction Manager)的源代码压缩包,版本号为...通过深入理解其源代码和使用方法,开发者可以更好地控制和优化他们的应用程序的事务处理能力。

    spring-hibernate-jotm 例子

    这个项目旨在展示如何在Java应用程序中有效地管理和协调数据库事务,特别是对于分布式事务处理。 Spring是一个广泛使用的轻量级应用框架,它提供了一个全面的基础架构,支持面向切面编程(AOP)和依赖注入(DI),...

    spring+jotm+ibatis+mysql实现JTA分布式事务

    总的来说,这个项目展示了如何利用Spring的事务管理能力,结合JOTM作为事务协调器,以及iBATIS作为数据访问层,实现基于MySQL的JTA分布式事务处理。这不仅有助于理解分布式事务的原理,也为实际开发提供了可参考的...

    Spring+JOTM 分布式事务管理

    Spring框架作为一个广泛使用的Java应用程序开发框架,提供了多种支持事务管理的解决方案,其中包括集成JOTM(Java Open Transaction Manager)来处理分布式事务。本文将深入探讨Spring与JOTM结合使用的知识点,帮助...

    JOTM开发所需jar包

    4. jts1_0.jar:JTS(Java Transaction Service)1.0版本的实现,它是JTA的扩展,提供更强大的分布式事务支持。 5. xapool.jar:这通常是一个连接池库,例如XAPool,用于高效管理数据库连接。 6. jotm-1.4.3.jar:...

    Java分布式开发spring+jta+jotm

    JOTM 是一个开源的JTA事务管理器,实现了X/Open XA规范,允许跨多个资源进行分布式事务处理。它与各种数据库和JMS提供者兼容,为Java应用提供了强大的事务管理能力。JOTM可以在Spring框架中无缝集成,通过Spring的...

    spring JTA集成JOTM或Atomikos配置分布式事务(Tomcat应用服务器)

    总结来说,集成Spring、JTA、JOTM或Atomikos进行分布式事务处理,是提高系统扩展性和可靠性的重要手段。通过上述步骤,开发者能够在Tomcat应用服务器上实现跨数据库的事务一致性,从而构建更健壮的分布式应用。

    spring + JTA + JOTM实现分布式事务

    JTA是Java平台的标准事务API,它允许应用程序进行跨多个数据源(如数据库或消息队列)的全局事务处理。通过JTA,开发者可以编写不关心具体事务管理细节的代码,这样就提高了代码的可移植性和可维护性。 JOTM则是JTA...

    Spring分布式事务实现

    JTA提供了一种标准接口,使得应用程序可以透明地处理分布式事务。在Spring中集成JOTM,可以利用其功能来管理跨数据库的事务。 JOTM相关的jar包包括`jotm-core.jar`,`xapool.jar`,`ow2-connector-1.5-spec.jar`和`...

    开源分布式事务管理Jtom

    "分布式事务处理"则强调了在多个节点或服务间处理事务的复杂性,这是Jtom所解决的问题。 文件列表中的"jotm.pdf"可能包含了Jtom的详细文档,涵盖了安装指南、使用示例、API参考等内容,对于开发者来说是宝贵的资源...

    使用JOTM实现分布式事务管理(多数据源)

    JOTM是Java世界里一个开源的事务管理器,遵循JTA(Java Transaction API)规范,提供了分布式事务处理的能力。在多数据源环境中,JOTM可以帮助我们处理复杂的事务边界,保证在不同的数据库或服务之间的一致性,即使...

    jotm-2.0.11.MR5.rar_Jotm jar_jotm_jotm-2.0.11.MR5_jotm.jar _jtom

    它支持两阶段提交(2PC)协议,这是分布式事务处理中的标准模式。 2. **JTA兼容**:遵循Java EE的JTA标准,使得JOTM可以无缝集成到任何符合J2EE规范的应用服务器中,如Tomcat、Jetty等轻量级容器。 3. **高性能与...

    基于Java的实例源码-开源事务管理器 JOTM.zip

    Java开源事务管理器JOTM(Java Open Transaction Manager)是一个强大的、完全符合X/Open XA规范的事务管理器,它提供了分布式事务处理的能力。在Java应用程序中,事务管理是确保数据一致性、完整性和原子性的重要...

    20170830-分布式事务解决方案1

    分布式事务处理模型X/Open DTP定义了一套标准,包括了AP(Application)和RM(Resource Manager),以及TM(Transaction Manager)。AP是应用层,RM是数据库或其他资源管理者,TM负责协调整个事务的执行。其中,XA...

    jotm 2.1.9 源码

    本文将详细介绍JOTM的核心功能、如何使用MVN进行编译以及其在分布式事务处理中的应用。 一、JOTM核心功能 1. 分布式事务管理:JOTM遵循JTA(Java Transaction API)标准,能够管理跨多个数据库、消息队列和其他...

    基于java的开发源码-开源事务管理器 JOTM.zip

    JOTM是一个完全遵循Java Transaction API (JTA) 1.1规范的开放源代码事务管理器,它为分布式环境提供了高级的事务处理能力。 首先,让我们深入理解什么是Java Transaction API (JTA)。JTA是Java平台标准版(Java EE...

    jotm 2.1.4 source dist

    JOTM作为事务管理器,可能在后端服务器上支持Flex应用的事务处理。 压缩包内的两个文件: 1. `ow2-jotm-dist-2.1.4-bin`:这是JOTM的二进制发行版,包含预编译的库和可执行文件,用户可以直接在服务器上部署,无需...

Global site tag (gtag.js) - Google Analytics