Atomikos分两个:一个是开源的TransactionEssentials,一个是商业的ExtremeTransactions。
TransactionEssentials的主要特征:JTA/XA 事务管理 —— 提供事务管理和连接池不需要应用服务器 —— TransactionEssentials可以在任何Java EE应用服务器中运行,也就是不依赖于任何应用服务器开源 —— TransactionEssentials是遵守Apache版本2许可的开源软件专注于JDBC/JMS —— 支持所有XA资源
AtomikosTransactionsEssentials-3.7.0 下载地址
步骤1:
在atomikos 官网上下载AtomikosTransactionsEssentials-3.7.0或者直接从上方链接获得,官网下载需要登录。
将atomikos/disc下的jar包拷到工程的web-inf/lib下。
步骤2:
把需要用到的数据库驱动jar包拷到工程的web-inf/lib文件夹下
步骤3:
修改application-context.xml文件
现在以mysql和oracle数据源为例子,进行介绍。
1)修改数据源
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>/WEB-INF/config/jdbc.properties</value>
</list>
</property>
</bean>
<!-- mysql数据源 -->
<bean id="mysqlDatasource" class="com.atomikos.jdbc.AtomikosDataSourceBean">
<property name="uniqueResourceName"><value>mysqlDatasource</value></property>
<property name="xaDataSourceClassName"><value>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</value></property>
<property name="xaProperties">
<props>
<prop key="databaseName">${jdbc.databaseName}</prop>
<prop key="createDatabase">create</prop>
<prop key="user">${jdbc.username}</prop>
<prop key="password">${jdbc.password}</prop>
<prop key="url">${jdbc.url}</prop>
</props>
</property>
<property name="poolSize"><value>4</value></property>
<property name="borrowConnectionTimeout"><value>60</value></property>
</bean>
<!-- oracle 数据源 -->
<bean id="otherDatasource" class="com.atomikos.jdbc.AtomikosDataSourceBean">
<property name="uniqueResourceName"><value>otherDatasource</value></property>
<property name="xaDataSourceClassName"><value>oracle.jdbc.xa.client.OracleXADataSource</value></property>
<property name="xaProperties">
<props>
<prop key="user">${oracle.username}</prop>
<prop key="password">${oracle.password}</prop>
<prop key="URL">${oracle.url}</prop> <!-- 注意此处的URL必须大写,否则会报无效参数的错误 -->
</props>
</property>
<property name="poolSize"><value>4</value></property>
<property name="borrowConnectionTimeout"><value>60</value></property>
</bean>
2)修改SessionFactory,与配置一样,只是现在变成了两个SessionFactory,一个处理Mysql,一个处理Oracle。
3)修改transactionManager(注解方式)
<bean id="atomikosTransactionManager" class="com.atomikos.icatch.jta.UserTransactionManager" init-method="init" destroy-method="close"> <property name="forceShutdown"><value>true</value></property> </bean> <bean id="atomikosUserTransaction" class="com.atomikos.icatch.jta.UserTransactionImp"> <property name="transactionTimeout"><value>300</value></property> </bean> <bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager"> <property name="transactionManager"><ref bean="atomikosTransactionManager" /></property> <property name="userTransaction"><ref bean="atomikosUserTransaction" /></property> <property name="allowCustomIsolationLevels" value="true"/> </bean> <tx:annotation-driven transaction-manager="transactionManager"/>
只在数据源和 transactionManager 的配置的时候用到了Atomikos的相关内容
经过以上三步就配置好了application-context.xml文件。
配置好了application-context.xml,其他操作就跟一个数据源的操作一致了,不在介绍。
希望对大家有所帮助