1、依赖包
Atomikos的:
transactions-jdbc
transactions-jta
transactions-api
transactions
atomikos-utils
还有一个不要忘了,是jta的包。
用maven要简单一点,只需要加入两个依赖:
Xml代码
- <dependency>
- <groupId></groupId>
- <artifactId>transactions-jdbc</artifactId>
- <version>3.7.0</version>
- </dependency>
- <dependency>
- <groupId></groupId>
- <artifactId>jta</artifactId>
- <version>1.1</version>
- </dependency>
2、配置数据源
这一步是比较重要的。要用AtomikosDataSourceBean,而不是以前用的连接池如dbcp。最好也用XA(这东西我还不太懂),注意jdbc的链接地址和登陆账号与普通连接池的配置的格式不一样。下面是一个mysql数据库的配置举例:
Xml代码
- <bean id="dataSource1" class="" init-method="init" destroy-method="close">
- <property name="uniqueResourceName" value="ds1"/>
- <property name="xaDataSourceClassName" value="."/>
- <property name="xaProperties">
- <props>
- <prop key="url">jdbc:mysql://localhost/test</prop>
- <prop key="user">test</prop>
- <prop key="password">test</prop>
- </props>
- </property>
- <property name="minPoolSize" value="10" />
- <property name="maxPoolSize" value="100" />
- <property name="borrowConnectionTimeout" value="30" />
- <property name="testQuery" value="select 1" />
- <property name="maintenanceInterval" value="60" />
- </bean>
再来一个sybase的配置举例:
Xml代码
- <bean id="dataSource2" class="" init-method="init" destroy-method="close">
- <property name="uniqueResourceName" value="ds2"/>
- <property name="xaDataSourceClassName" value="."/>
- <property name="xaProperties">
- <props>
- <prop key="serverName">192.168.1.10</prop>
- <prop key="portNumber">2638</prop>
- <prop key="databaseName">test</prop>
- <prop key="user">test</prop>
- <prop key="password">test</prop>
- </props>
- </property>
- <property name="minPoolSize" value="10" />
- <property name="maxPoolSize" value="100" />
- <property name="borrowConnectionTimeout" value="30" />
- <property name="testQuery" value="select 1" />
- <property name="maintenanceInterval" value="60" />
- </bean>
3、使用数据源
这一步与平时好像没什么不一样。我做例子的时候是用mybatis,配置如下:
Xml代码
- <bean id="sqlSessionFactory1" class="">
- <property name="dataSource" ref="dataSource1"/>
- </bean>
- <bean id="sqlSessionFactory2" class="">
- <property name="dataSource" ref="dataSource2"/>
- </bean>
当然,mybatis还要配置一下映射文件的自动扫描,这里与atomikos无关:
Xml代码
- <bean class="">
- <property name="basePackage" value=";" />
- <property name="sqlSessionFactory" ref="sqlSessionFactory1"/>
- </bean>
- <bean class="">
- <property name="basePackage" value=";" />
- <property name="sqlSessionFactory" ref="sqlSessionFactory2"/>
- </bean>
用spring JdbcTemplate应该与普通使用没什么不同,用hibernate可能会有点不一样,没测试过。
4、配置jta事务管理
这是很关键的一步。原理我不太懂,例子如下:
Xml代码
- <bean id="transactionManager" class="">
- <property name="transactionManager">
- <bean class="" init-method="init" destroy-method="close">
- <property name="forceShutdown" value="true"/>
- </bean>
- </property>
- <property name="userTransaction">
- <bean class=""/>
- </property>
- </bean>
当然,用spring的声明式事务配置,再加上一行:
Xml代码
- <tx:annotation-driven/>
(注意,本来要配置transaction-manager属性,如:<tx:annotation-driven transaction-manager="transactionManager" />。这里没有配置是因为它的默认值是transactionManager)
5、atomikos的配置文件
这个文件一般放在根路径吧,与类似。也可命名为。如果不配置这个文件,项目也能启动,因为几乎所有配置项都有默认值。最好还是配置了,详细配置信息请查看:/Documentation/JtaProperties。
6、不管是用JdbcTemplate、mybatis还是hibernate,应该都可以写代码来测试了。。。