`
周英能
  • 浏览: 188003 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

spring +jotm分布式数据库

 
阅读更多

首先引入jotm和xpool包,通过maven引入

<dependency>
			<groupId>com.experlog</groupId>
			<artifactId>xapool</artifactId>
			<version>1.5.0</version>
		</dependency>
		<dependency>
			<groupId>org.ow2.jotm</groupId>
			<artifactId>jotm-core</artifactId>
			<version>2.2.2</version>
		</dependency>
		<dependency>
			<groupId>org.ow2.jotm</groupId>
			<artifactId>jotm</artifactId>
			<version>2.2.2</version>
			<type>pom</type>
		</dependency>
		<dependency>
			<groupId>org.ow2.spec.ee</groupId>
			<artifactId>ow2-connector-1.5-spec</artifactId>
			<version>1.0.9</version>
		</dependency>
 

spring配置

<!--JOTM本地实例 -->
<bean id="jotm" class="org.springframework.transaction.jta.JotmFactoryBean" />

<!-- 指定userTransaction属性 -->
<bean id="txManager"
class="org.springframework.transaction.jta.JtaTransactionManager">
	<property name="userTransaction" ref="jotm" />
</bean>

<!-- XAPool配置,内部包含了一个XA数据源,对应database1数据库 -->
	<bean id="dataSource1" 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>
				<property name="driverName" value="${jdbc.driver}"></property>
				<property name="url" value="${jdbc.url1}"></property>
			</bean>
		</property>
		<property name="user" value="${jdbc.username}" />
		<property name="password" value="${jdbc.password}" />
	</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>
				<property name="driverName" value="${jdbc.driver}"></property>
				<property name="url" value="${jdbc.url2}"></property>
			</bean>
		</property>
		<property name="user" value="${jdbc.username}" />
		<property name="password" value="${jdbc.password}" />
	</bean>
<bean id="sessionFactory1"
		class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
		<property name="dataSource" ref="dataSource1" />
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">${hibernate.dialect}</prop>
				<prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
				<prop key="hibernate.hbm2ddl.auto">${hibernate.auto}</prop>
				<prop key="current_session_context_class">jta</prop>
				<prop key="hibernate.search.default.directory_provider">org.hibernate.search.store.FSDirectoryProvider</prop>
				<prop key="hibernate.search.default.indexBase">F:/temp/index</prop>
			</props>
		</property>
		<property name="annotatedClasses">
			<list>
				<value>com.zyn.ssh.pojo.Student</value>
				<value>com.zyn.ssh.pojo.Teacher</value>
				<value>com.zyn.ssh.pojo.Course</value>
				<value>com.zyn.ssh.pojo.StudentInfo</value>
			</list>
		</property>
	</bean>
	<bean id="sessionFactory2"
		class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
		<property name="dataSource" ref="dataSource2" />
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">${hibernate.dialect}</prop>
				<prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
				<prop key="hibernate.hbm2ddl.auto">${hibernate.auto}</prop>
				<prop key="current_session_context_class">jta</prop>
				<prop key="hibernate.search.default.directory_provider">org.hibernate.search.store.FSDirectoryProvider</prop>
				<prop key="hibernate.search.default.indexBase">F:/temp/index</prop>
			</props>
		</property>
		<property name="annotatedClasses">
			<list>
				<value>com.zyn.ssh.pojo.Student</value>
				<value>com.zyn.ssh.pojo.Teacher</value>
				<value>com.zyn.ssh.pojo.Course</value>
				<value>com.zyn.ssh.pojo.StudentInfo</value>
			</list>
		</property>
	</bean>
<!-- 使用annotation定义事务 -->
	<tx:annotation-driven transaction-manager="txManager"
		proxy-target-class="true" />

 测试如下:

//第一个dao中注入
@Resource(name="sessionFactory1")
public void setSessionFactory(final SessionFactory sessionFactory) {
		this.sessionFactory = sessionFactory;
}

//第二个dao中注入

@Resource(name="sessionFactory2")
public void setSessionFactory(SessionFactory sessionFactory) {
	this.sessionFactory = sessionFactory ;
}

@Test
@Transactional
public void save(){
	Student student = new Student("mmmm",20,2008988L);
	dao1.save(student);
	dao2.save(student);
}
 

 

分享到:
评论

相关推荐

    Spring+JOTM 分布式事务管理

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

    Spring+Jotm+Hibernate+Oracle+Junit 实现JTA分布式事务要求Demo工程

    2.Spring+Jotm整合实现JTA分布式事务,应用场景如转账等,同一事务内完成db1用户加100元、db2用户减100元。 3.Spring+Junit4单元测试,优点:不会破坏数据库现场,等等。 (特别注意:Spring3.0里不在提供对jotm的...

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

    本项目“spring+jotm+ibatis+mysql实现JTA分布式事务”旨在利用这些技术来确保在分布式环境中的数据一致性。下面将详细介绍这个项目所涉及的知识点。 首先,Spring框架是Java开发中最常用的应用框架之一,它提供了...

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

    本教程将深入探讨如何使用Spring框架、Java Transaction API (JTA) 和 Java Open Transaction Manager (JOTM) 来实现这样的分布式事务管理。 首先,我们来了解一下JTA。JTA是Java平台的标准事务API,它允许应用程序...

    Java分布式开发spring+jta+jotm

    "Java分布式开发spring+jta+jotm"的主题涵盖了Spring框架在分布式系统中的应用,特别是如何利用JTA和JOTM来处理跨资源的分布式事务。理解和掌握这些技术对于构建可扩展、健壮的Java应用至关重要。通过深入学习和实践...

    Spring+iBatis+JOTM实现JTA事务

    在集成Spring+iBatis+JOTM的环境中,Spring主要负责事务策略的配置和管理,iBatis则作为持久层框架,负责SQL的执行,而JOTM作为事务管理器,确保跨数据库的事务一致性。 1. **环境搭建** - 首先,确保安装了JDK ...

    spring+jotm 多数据源事务管理(二)hibernate

    JOTM是Java平台上的一个开放源代码事务管理器,它遵循JTA(Java Transaction API)标准,用于处理分布式事务。在Spring中集成JOTM可以提供更高级别的事务控制,确保在多数据源环境下事务的一致性和完整性。 首先,...

    spring 3.0.5 + jotm 实现的的spring mvc 的例子

    这个项目可能旨在演示如何在Spring MVC环境中配置和管理事务,特别是使用JOTM作为外部事务管理器来处理数据库操作。 **Spring MVC框架**: Spring MVC是Spring框架的一个模块,专门用于构建Web应用程序。它提供了...

    struts + spring + hibernate + velocity + ajax + jotm + acegi

    Struts、Spring、Hibernate、Velocity、Ajax、JOTM 和 Acegi 是一组常见的技术栈,它们在构建企业级Java Web应用程序时发挥着关键作用。这些技术各有专长,结合使用可以构建出高效、灵活且安全的系统。接下来,我们...

    JOTM配置分布式事务

    ### JOTM配置分布式事务详解 #### 一、引言 在现代软件系统尤其是企业级应用中,分布式事务处理是一项关键技术。随着业务复杂度的提高和技术的发展,单一的数据存储已经难以满足需求,多个数据源之间的协调操作变...

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

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

    Spring分布式事务实现

    总结来说,Spring分布式事务实现主要依赖于Spring框架的事务管理能力、JOTM作为JTA实现的事务管理器,以及相关的JDBC驱动来连接数据库。通过声明式事务管理,开发者可以在不深入事务管理细节的情况下,编写出可靠的...

    分布式事务JTA之实践:Spring+ATOMIKOS

    本篇文章将探讨如何在Java环境中,利用Spring框架和Atomikos这样的第三方工具实现分布式事务管理,即JTA(Java Transaction API)的实践。 JTA是Java平台提供的一种标准API,用于管理跨越多个资源(如数据库、消息...

    spring+hibernate+jtom demo

    在本文中,我们将深入探讨如何使用Spring、Hibernate和JOTM进行分布式事务管理,以实现在一个Service方法中同时操作两个不同数据源的数据,并确保任何错误都能导致所有操作回滚。首先,我们需要了解这些技术的基本...

    Spring-test做数据库操作的单元测试2-跨库访问

    Spring提供了一些内置的实现,如`JtaTransactionManager`,它可以配合JOTM(Java Open Transaction Manager)这样的JTA事务管理器进行分布式事务控制。在配置JOTM时,我们需要添加相应的依赖并配置相关参数。 最后...

    多数据源 更新 spring jta java jotm

    通过Spring的`AbstractRoutingDataSource`和JTA,我们可以轻松地管理多个数据源,并通过JOTM保证分布式事务的一致性。在实际项目中,这种架构可以帮助我们构建可扩展、高可用的系统。在SpringDemo项目中,你可以找到...

    spring对多个数据库进行事务管理.doc

    对于多个数据库的事务管理,Spring主要依赖于JTA(Java Transaction API)和XAResource接口来实现分布式事务。然而,JTA的XA事务通常在J2EE环境下工作,需要容器支持,比如JBoss、WebLogic等。在J2SE环境中,Spring...

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

    此外,JOTM还支持与Spring框架的集成,可以轻松地在Spring应用上下文中配置和管理事务。通过使用`@Transactional`注解,开发者可以在方法级别声明事务,简化事务管理。 总之,JOTM是实现Java分布式事务管理的强大...

    jta分布式事务完成例子,测试通过

    例子虽小,可覆盖面广,设计spring载入.properties文件,spring配置jta和jotm分布式事务,设置数据源连接池,注解事务驱动。功能是在mysql上建立了两个数据库分别为dbone和dbtwo,在dbone里有表tb1,表中只有一个字段...

Global site tag (gtag.js) - Google Analytics