spring结合 atomikos 使用

来源:互联网 发布:认知神经科学书籍知乎 编辑:程序博客网 时间:2024/05/16 06:08
 
atomikos 所需jar :1.transactions-jdbc.jar2.transactions.jar3.transactions-jta.jar4.transactions-api.jar 5.atomikos-util.jar jta.properties 配置文件 放在src目录即可com.atomikos.icatch.service=com.atomikos.icatch.standalone.UserTransactionServiceFactorycom.atomikos.icatch.console_file_name = tm.out com.atomikos.icatch.log_base_name = tmlog com.atomikos.icatch.tm_unique_name = com.atomikos.spring.jdbc.tm com.atomikos.icatch.console_log_level =INFOspring配置文件<!--   tomcat  数据源方式    <jee:jndi-lookup id="dataSource1" jndi-name="jdbc/t1"/>    <jee:jndi-lookup id="dataSource2" jndi-name="jdbc/t2"/>-->              <!--  读取数据库连接配置文件 -->     <bean id="propertyConfig"         class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">        <property name="locations">            <list>                 <value>classpath:jdbc.properties</value>             </list>         </property>     </bean>            <!-- 第一个数据库   -->      <bean id="dataSource1" class="com.atomikos.jdbc.AtomikosDataSourceBean"          init-method="init" destroy-method="close">        <property name="uniqueResourceName" value="mysql/product1" />        <property name="xaDataSourceClassName"            value="com.mysql.jdbc.jdbc2.optional.MysqlXADataSource" />          <property name="xaProperties">            <props>                <prop key="user">${jdbc.username.a}</prop>                <prop key="password">${jdbc.password.a}</prop>                <prop key="URL">${jdbc.url.a}</prop>            </props>        </property>        <property name="testQuery">              <value>SELECT 1</value>          </property>    </bean>      <!-- 第二个数据库-->      <bean id="dataSource2" class="com.atomikos.jdbc.AtomikosDataSourceBean"          init-method="init" destroy-method="close">        <property name="uniqueResourceName" value="mysql/product2" />        <property name="xaDataSourceClassName"            value="com.mysql.jdbc.jdbc2.optional.MysqlXADataSource" />          <property name="xaProperties">            <props>                <prop key="user">${jdbc.username.b}</prop>                <prop key="password">${jdbc.password.b}</prop>                <prop key="URL">${jdbc.url.b}</prop>            </props>        </property>        <property name="testQuery">              <value>SELECT 1</value>          </property>    </bean>         <!-- SessionFactory -->    <bean id="sqlSessionFactory1" class="org.mybatis.spring.SqlSessionFactoryBean">          <property name="dataSource" ref="dataSource1" />     </bean>         <bean id="sqlSessionFactory2" class="org.mybatis.spring.SqlSessionFactoryBean">          <property name="dataSource" ref="dataSource2" />     </bean>      <!--                 spring管理atomikos -->        <bean id="atomikosTransactionManager" class="com.atomikos.icatch.jta.UserTransactionManager"                                     init-method="init" destroy-method="close">        <description>UserTransactionManager</description>        <property name="forceShutdown">            <value>true</value>        </property>    </bean>            <bean id="atomikosUserTransaction" class="com.atomikos.icatch.jta.UserTransactionImp">          <property name="transactionTimeout" value="300" />      </bean>          <bean id="springTransactionManager" class="org.springframework.transaction.jta.JtaTransactionManager">          <property name="transactionManager" ref="atomikosTransactionManager"/>         <property name="userTransaction" ref="atomikosUserTransaction" />         <property name="allowCustomIsolationLevels" value="true"/>     </bean>         <aop:aspectj-autoproxy />         <aop:config  proxy-target-class="true">          <aop:advisor pointcut="execution(* secoo.server.impl.*.*(..))"             advice-ref="txAdvice" />         </aop:config>       <tx:advice id="txAdvice" transaction-manager="springTransactionManager">          <tx:attributes>             <tx:method name="insert*" propagation="REQUIRED" read-only="true" />            <tx:method name="delete*" propagation="REQUIRED" read-only="true" />            <tx:method name="update*" propagation="REQUIRED" read-only="true" />            <tx:method name="*" propagation="SUPPORTS" rollback-for="Exception"  />          </tx:attributes>      </tx:advice>  <!—mapping 配置 并且指定 用哪个ssessio工厂 --><bean id="product1" class="org.mybatis.spring.mapper.MapperFactoryBean">    <property name="mapperInterface" value="secoo.mapper.Product1"></property>    <property name="sqlSessionFactory" ref="sqlSessionFactory1"></property></bean><bean id="product2" class="org.mybatis.spring.mapper.MapperFactoryBean">    <property name="mapperInterface" value="secoo.mapper.Product2"></property>    <property name="sqlSessionFactory" ref="sqlSessionFactory2"></property></bean>

原创粉丝点击