随着网站(www.jzease.com)的扩大,在三个月的时间里Myslq的表格从四十几张,扩到现在的一百多张,以后肯定还会继续扩大为了更好的管理和运行,着手开始分数据库,这就涉及到跨数据库事务,我们使用的是Tomcat,它本身不支持XA,供我选择的就只有spring+JTA,JTA的实现就只有两种,一种是JOTM,另一种是AtomikosTransactionsEssentials.下面是JOTM的实现:
DataSource:
<bean id="jtaTxManager" class="org.springframework.transaction.jta.JtaTransactionManager">
<property name="userTransaction" ref="jotmJta"/>
</bean>
<!--第一个数据源,采用XAPool链接池-->
<bean id="familyDataSource" 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="jotmJta" />
<property name="driverName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/family?useUnicode=true&characterEncoding=GBK"/>
</bean>
</property>
<property name="user" value="root"/>
<property name="password" value="1234"/>
</bean>
<!--第二个数据源,采用XAPool链接池-->
<bean id="localDataSource" 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="jotmJta" />
<property name="driverName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/local?useUnicode=true&characterEncoding=GBK"/>
</bean>
</property>
<property name="user" value="root"/>
<property name="password" value="1234"/>
</bean>
<!--tx配置aop,spring2.0的用法-->
<tx:annotation-driven transaction-manager="jtaTxManager"/>
DAO:
<beans>
<bean id="familyJdbcDAO" class="com.xband.admin.spring.LocalJdbcDAO">
<property name="dataSource" ref="familyDataSource" />
</bean>
<bean id="localJdbcDAO" class="com.xband.admin.spring.LocalJdbcDAO">
<property name="dataSource" ref="localDataSource" />
</bean>
</beans>
Service:
<!--在程序里使用元数据@Transactional声明事务-->
<bean id="springService" class=" com.xband.admin.spring.SpringService">
<property name="familyJdbcDAO" ref="familyHibernatedao"/>
<property name="localJdbcDAO" ref="localJdbcDAO"/>
</bean>
好!如果你只用JDBC写DAO,上面的配置完全没问题,两个数据源能同时rollback(),接着我们配置Hibernater,配置如下:
<beans>
<bean id="familySessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="familyDataSource"/>
<property name="configLocation" value="classpath:hibernate.cfg.family.xml"/>
<property name="jtaTransactionManager"> <ref bean="jotmJta" /> </property>
</bean>
<bean id="localSessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="localDataSource"/>
<property name="configLocation" value="classpath:hibernate.cfg.local.xml"/>
<property name="jtaTransactionManager"> <ref bean="jotmJta" /> </property>
</bean>
</beans>
http://www.iteye.com/topic/145404
分享到:
相关推荐
`DefaultJtaPlatform`指定了JOTM作为事务管理器,而`JtaTransactionManager`是Spring中处理JTA事务的核心类。在XML配置中,这可能看起来像这样: ```xml <bean id="jtaTransactionManager" class="org.spring...
对于分布式事务,Spring支持JTA事务管理,并且可以无缝集成JOTM。 1. **配置JOTM**:首先,你需要在项目的类路径下添加JOTM的依赖库。然后,在Spring的配置文件中定义JOTM的事务管理器 bean,例如: ```xml ...
Spring框架提供了对JTA(Java Transaction API)的支持,允许开发者处理跨多个数据存储的事务一致性。本文将深入探讨如何在Tomcat应用服务器上集成JTA,并使用JOTM(Java Open Transaction Manager)或Atomikos作为...
本篇文章将详细讲解如何利用Spring+iBatis+JOTM来实现JTA事务。 首先,我们需要理解JTA的核心概念。JTA定义了一组接口和规范,允许应用程序在不同的事务边界之间进行协调,确保原子性和持久性。JOTM作为JTA的一个...
总结来说,Spring、JTA和JOTM的组合提供了在多数据源环境中高效且可靠的事务处理能力。通过Spring的`AbstractRoutingDataSource`和JTA,我们可以轻松地管理多个数据源,并通过JOTM保证分布式事务的一致性。在实际...
本文将详细介绍如何在Spring中使用JTA事务管理,包括通过集成JOTM(Java Open Transaction Manager)以及引用Tomcat的JTA事务。 ### 1. 通过集成JOTM,直接在Spring中使用JTA事务 #### 1.1. 添加JOTM类库到类路径...
首先,Spring框架是Java开发中最常用的应用框架之一,它提供了全面的编程和配置模型,包括对事务管理的支持。在本项目中,Spring被用来协调各个组件,并提供声明式事务管理。Spring支持JTA(Java Transaction API)...
Spring+iBatis+JOTM实现JTA事务: 如何处理跨库事物:spring + jtom 的jta事务是个很好的选择. 这个源码示例非常不错,包括所有的源码和jar包,下载后eclipse 或 myeclipse 导入就能用。 里面有详细的说明和注释,...
2.Spring+Jotm整合实现JTA分布式事务,应用场景如转账等,同一事务内完成db1用户加100元、db2用户减100元。 3.Spring+Junit4单元测试,优点:不会破坏数据库现场,等等。 (特别注意:Spring3.0里不在提供对jotm的...
Spring框架作为一个广泛使用的Java应用程序开发框架,提供了多种支持事务管理的解决方案,其中包括集成JOTM(Java Open Transaction Manager)来处理分布式事务。本文将深入探讨Spring与JOTM结合使用的知识点,帮助...
标题“spring-hibernate-jotm 例子”涉及的是一个整合Spring框架、Hibernate持久化框架以及JOTM(Java Open Transaction Manager)事务管理器的示例项目。这个项目旨在展示如何在Java应用程序中有效地管理和协调...
JOTM是一个开源的Java事务管理器,实现了JTA(Java Transaction API),使得应用程序可以在分布式环境中进行事务管理。在Spring中,通过集成JOTM,可以实现全局的事务控制,确保在多资源操作中保持数据的一致性。 *...
例子虽小,可覆盖面广,设计spring载入.properties文件,spring配置jta和jotm分布式事务,设置数据源连接池,注解事务驱动。功能是在mysql上建立了两个数据库分别为dbone和dbtwo,在dbone里有表tb1,表中只有一个字段...
JOTM是Java平台上的一个开放源代码事务管理器,它遵循JTA(Java Transaction API)标准,用于处理分布式事务。在Spring中集成JOTM可以提供更高级别的事务控制,确保在多数据源环境下事务的一致性和完整性。 首先,...
Spring框架作为Java领域广泛使用的轻量级框架,提供了对JTA的支持,使得开发者可以方便地在应用中集成和管理事务。Spring的Transaction API允许我们通过编程或声明式方式控制事务,极大地简化了事务管理的复杂性。 ...
总结来说,Spring分布式事务实现主要依赖于Spring框架的事务管理能力、JOTM作为JTA实现的事务管理器,以及相关的JDBC驱动来连接数据库。通过声明式事务管理,开发者可以在不深入事务管理细节的情况下,编写出可靠的...
### Spring + JOTM 多数据源事务管理详解(三):JNDI + Tomcat 在本篇文章中,我们将深入探讨如何利用Spring框架结合JOTM(Java Open Transaction Manager)来实现多数据源下的分布式事务管理。我们将通过具体实例...