http://418684644-qq-com.iteye.com/blog/1204565

 

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

 

Java代码 复制代码 收藏代码spinner.gif

  1. <dependency>   

  2.             <groupId>com.experlog</groupId>   

  3.             <artifactId>xapool</artifactId>   

  4.             <version>1.5.0</version>   

  5.         </dependency>   

  6.         <dependency>   

  7.             <groupId>org.ow2.jotm</groupId>   

  8.             <artifactId>jotm-core</artifactId>   

  9.             <version>2.2.2</version>   

  10.         </dependency>   

  11.         <dependency>   

  12.             <groupId>org.ow2.jotm</groupId>   

  13.             <artifactId>jotm</artifactId>   

  14.             <version>2.2.2</version>   

  15.             <type>pom</type>   

  16.         </dependency>   

  17.         <dependency>   

  18.             <groupId>org.ow2.spec.ee</groupId>   

  19.             <artifactId>ow2-connector-1.5-spec</artifactId>   

  20.             <version>1.0.9</version>   

  21.         </dependency>  

<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配置

 

Java代码 复制代码 收藏代码spinner.gif

  1. <!--JOTM本地实例 -->   

  2. <bean id="jotm" class="org.springframework.transaction.jta.JotmFactoryBean" />   

  3.   

  4. <!-- 指定userTransaction属性 -->   

  5. <bean id="txManager"  

  6. class="org.springframework.transaction.jta.JtaTransactionManager">   

  7.     <property name="userTransaction" ref="jotm" />   

  8. </bean>   

  9.   

  10. <!-- XAPool配置,内部包含了一个XA数据源,对应database1数据库 -->   

  11.     <bean id="dataSource1" class="org.enhydra.jdbc.pool.StandardXAPoolDataSource"  

  12.         destroy-method="shutdown">   

  13.         <property name="dataSource">   

  14.             <bean class="org.enhydra.jdbc.standard.StandardXADataSource"  

  15.                 destroy-method="shutdown">   

  16.                 <property name="transactionManager" ref="jotm"></property>   

  17.                 <property name="driverName" value="${jdbc.driver}"></property>   

  18.                 <property name="url" value="${jdbc.url1}"></property>   

  19.             </bean>   

  20.         </property>   

  21.         <property name="user" value="${jdbc.username}" />   

  22.         <property name="password" value="${jdbc.password}" />   

  23.     </bean>   

  24.   

  25.     <bean id="dataSource2" class="org.enhydra.jdbc.pool.StandardXAPoolDataSource"  

  26.         destroy-method="shutdown">   

  27.         <property name="dataSource">   

  28.             <bean class="org.enhydra.jdbc.standard.StandardXADataSource"  

  29.                 destroy-method="shutdown">   

  30.                 <property name="transactionManager" ref="jotm"></property>   

  31.                 <property name="driverName" value="${jdbc.driver}"></property>   

  32.                 <property name="url" value="${jdbc.url2}"></property>   

  33.             </bean>   

  34.         </property>   

  35.         <property name="user" value="${jdbc.username}" />   

  36.         <property name="password" value="${jdbc.password}" />   

  37.     </bean>   

  38. <bean id="sessionFactory1"  

  39.         class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">   

  40.         <property name="dataSource" ref="dataSource1" />   

  41.         <property name="hibernateProperties">   

  42.             <props>   

  43.                 <prop key="hibernate.dialect">${hibernate.dialect}</prop>   

  44.                 <prop key="hibernate.show_sql">${hibernate.show_sql}</prop>   

  45.                 <prop key="hibernate.hbm2ddl.auto">${hibernate.auto}</prop>   

  46.                 <prop key="current_session_context_class">jta</prop>   

  47.                 <prop key="hibernate.search.default.directory_provider">org.hibernate.search.store.FSDirectoryProvider</prop>   

  48.                 <prop key="hibernate.search.default.indexBase">F:/temp/index</prop>   

  49.             </props>   

  50.         </property>   

  51.         <property name="annotatedClasses">   

  52.             <list>   

  53.                 <value>com.zyn.ssh.pojo.Student</value>   

  54.                 <value>com.zyn.ssh.pojo.Teacher</value>   

  55.                 <value>com.zyn.ssh.pojo.Course</value>   

  56.                 <value>com.zyn.ssh.pojo.StudentInfo</value>   

  57.             </list>   

  58.         </property>   

  59.     </bean>   

  60.     <bean id="sessionFactory2"  

  61.         class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">   

  62.         <property name="dataSource" ref="dataSource2" />   

  63.         <property name="hibernateProperties">   

  64.             <props>   

  65.                 <prop key="hibernate.dialect">${hibernate.dialect}</prop>   

  66.                 <prop key="hibernate.show_sql">${hibernate.show_sql}</prop>   

  67.                 <prop key="hibernate.hbm2ddl.auto">${hibernate.auto}</prop>   

  68.                 <prop key="current_session_context_class">jta</prop>   

  69.                 <prop key="hibernate.search.default.directory_provider">org.hibernate.search.store.FSDirectoryProvider</prop>   

  70.                 <prop key="hibernate.search.default.indexBase">F:/temp/index</prop>   

  71.             </props>   

  72.         </property>   

  73.         <property name="annotatedClasses">   

  74.             <list>   

  75.                 <value>com.zyn.ssh.pojo.Student</value>   

  76.                 <value>com.zyn.ssh.pojo.Teacher</value>   

  77.                 <value>com.zyn.ssh.pojo.Course</value>   

  78.                 <value>com.zyn.ssh.pojo.StudentInfo</value>   

  79.             </list>   

  80.         </property>   

  81.     </bean>   

  82. <!-- 使用annotation定义事务 -->   

  83.     <tx:annotation-driven transaction-manager="txManager"  

  84.         proxy-target-class="true" />  

<!--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" />

 测试如下:

 

Java代码 复制代码 收藏代码spinner.gif

  1. //第一个dao中注入   

  2. @Resource(name="sessionFactory1")   

  3. public void setSessionFactory(final SessionFactory sessionFactory) {   

  4.         this.sessionFactory = sessionFactory;   

  5. }   

  6.   

  7. //第二个dao中注入   

  8.   

  9. @Resource(name="sessionFactory2")   

  10. public void setSessionFactory(SessionFactory sessionFactory) {   

  11.     this.sessionFactory = sessionFactory ;   

  12. }   

  13.   

  14. @Test  

  15. @Transactional  

  16. public void save(){   

  17.     Student student = new Student("mmmm",20,2008988L);   

  18.     dao1.save(student);   

  19.     dao2.save(student);   

  20. }  

//第一个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);
}