spring+ibatis多データソース事務(分散事務)管理配置方法
13596 ワード
spring + ibatis ( ) ( )
1、 :spring , 。 :spring 。 , 。
2、 : , , 。
3、 jar spring , :jotm Atomikos。 google , atomikos email , email 。 :
1、http://jotm.objectweb.org/
2、http://www.atomikos.com/Main/InstallingTransactionsEssentials
jotm。
4、 spring+ibatis jotm 。 spring 。 , 。
Xml
<bean id="jotm" class="org.springframework.transaction.jta.JotmFactoryBean">
<property name="defaultTimeout" value="500000"/>
</bean>
<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="${driverClass}"/>
<property name="url" value="${jdbcUrl}"/>
</bean>
</property>
<property name="user" value="${user}"/>
<property name="password" value="${password}"/>
</bean>
<bean id="dataSourceBbs" 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="${bbs.driverClass}"/>
<property name="url" value="${bbs.jdbcUrl}"/>
</bean>
</property>
<property name="user" value="${bbs.user}"/>
<property name="password" value="${bbs.password}"/>
</bean>
<!-- JTA -->
<bean id="myJtaManager" class="org.springframework.transaction.jta.JtaTransactionManager">
<property name="userTransaction" ref="jotm" />
</bean>
<!-- -->
<aop:config>
<aop:pointcut id="serviceOperation" expression="execution(* com.bohai.service.impl.*.*(..))"/>
<aop:advisor pointcut-ref="serviceOperation" advice-ref="txAdvice" order="0" />
</aop:config>
<!-- -->
<tx:advice id="txAdvice" transaction-manager="myJtaManager">
<tx:attributes>
<tx:method name="delete*" propagation="REQUIRED" />
<tx:method name="save*" propagation="REQUIRED" />
<tx:method name="update*" propagation="REQUIRED" />
<tx:method name="*" propagation="REQUIRED" />
<tx:method name="find*" propagation="SUPPORTS" read-only="true"/>
<tx:method name="get*" propagation="SUPPORTS" read-only="true"/>
<tx:method name="fetch*" propagation="SUPPORTS" read-only="true"/>
<tx:method name="*_noTrans" propagation="NOT_SUPPORTED"/>
</tx:attributes>
</tx:advice>
5、jtom carol.properties , :
Java
# do not use CAROL JNDI wrapper
carol.start.jndi=false
# do not start a name server
carol.start.ns=false
# Naming Factory
carol.jndi.java.naming.factory.url.pkgs=org.apache.naming
classpath , src 。
6、 jtom jar:
:http://www.blogjava.net/hao446tian/