原先不带atomikos引入的方式是
<bean id="dataSource_a" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>java:comp/env/jdbc/abc</value>
</property>
</bean>
<bean id="dataSource_b" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>java:comp/env/jdbc/xyz</value>
</property>
</bean>
使用atomikos后看网上一般使用的是jdbc源
<bean id="mysqlDS" class="com.atomikos.jdbc.AtomikosDataSourceBean"
init-method="init" destroy-method="close">
<description>mysql xa datasource</description>
<property name="uniqueResourceName">
<value>mysql_ds</value>
</property>
<property name="xaDataSourceClassName" value="com.mysql.jdbc.jdbc2.optional.MysqlXADataSource" />
<property name="xaProperties">
<props>
<prop key="user">userName</prop>
<prop key="password">password</prop>
<prop key="URL">jdbc\:mysql\://127.0.0.1\:3306/dataBaseName?autoReconnect\=true</prop>
</props>
</property>
<!-- 连接池里面连接的个数? -->
<property name="poolSize" value="3"/>
</bean>
但是这边需要直接用jndiname引入,查了下文档,有一种方式是通过xaConnectionFactory
我配成这样试试:
<bean id="dataSource_a" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>java:comp/env/jdbc/abc</value>
</property>
</bean>
<bean id="dataSource_b" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>java:comp/env/jdbc/xyz</value>
</property>
</bean>
<bean id="connectionFactory_a" class="com.atomikos.jms.AtomikosConnectionFactoryBean" init-method="init" destroy-method="close">
<property name="uniqueResourceName">
<value>jdbc/tem</value>
</property>
<property name="xaConnectionFactory">
<ref bean="dataSource_a"/>
</property>
</bean>
<bean id="connectionFactory_b" class="com.atomikos.jms.AtomikosConnectionFactoryBean" init-method="init" destroy-method="close">
<property name="uniqueResourceName">
<value>jdbc/datadb</value>
</property>
<property name="xaConnectionFactory">
<ref bean="dataSource_b"/>
</property>
</bean>
<!-- Mybatis SqlSessionFactory -->
<bean id="sqlSessionFactory_a" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="connectionFactory_a" />
<property name="configLocation" value="classpath:mybatis-config.xml" />
</bean>
<bean id="sqlSessionFactory_b" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="connectionFactory_b" />
<property name="configLocation" value="classpath:mybatis-config.xml" />
</bean>
结果当然是悲剧的,datasource源不能转成xaConnectionFactory
有什么方法能在atomikos中使用jndiname方式直接创建datasource或是xaConnectionFactory?
<bean id="dataSource_a" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>java:comp/env/jdbc/abc</value>
</property>
</bean>
<bean id="dataSource_b" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>java:comp/env/jdbc/xyz</value>
</property>
</bean>
使用atomikos后看网上一般使用的是jdbc源
<bean id="mysqlDS" class="com.atomikos.jdbc.AtomikosDataSourceBean"
init-method="init" destroy-method="close">
<description>mysql xa datasource</description>
<property name="uniqueResourceName">
<value>mysql_ds</value>
</property>
<property name="xaDataSourceClassName" value="com.mysql.jdbc.jdbc2.optional.MysqlXADataSource" />
<property name="xaProperties">
<props>
<prop key="user">userName</prop>
<prop key="password">password</prop>
<prop key="URL">jdbc\:mysql\://127.0.0.1\:3306/dataBaseName?autoReconnect\=true</prop>
</props>
</property>
<!-- 连接池里面连接的个数? -->
<property name="poolSize" value="3"/>
</bean>
但是这边需要直接用jndiname引入,查了下文档,有一种方式是通过xaConnectionFactory
我配成这样试试:
<bean id="dataSource_a" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>java:comp/env/jdbc/abc</value>
</property>
</bean>
<bean id="dataSource_b" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>java:comp/env/jdbc/xyz</value>
</property>
</bean>
<bean id="connectionFactory_a" class="com.atomikos.jms.AtomikosConnectionFactoryBean" init-method="init" destroy-method="close">
<property name="uniqueResourceName">
<value>jdbc/tem</value>
</property>
<property name="xaConnectionFactory">
<ref bean="dataSource_a"/>
</property>
</bean>
<bean id="connectionFactory_b" class="com.atomikos.jms.AtomikosConnectionFactoryBean" init-method="init" destroy-method="close">
<property name="uniqueResourceName">
<value>jdbc/datadb</value>
</property>
<property name="xaConnectionFactory">
<ref bean="dataSource_b"/>
</property>
</bean>
<!-- Mybatis SqlSessionFactory -->
<bean id="sqlSessionFactory_a" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="connectionFactory_a" />
<property name="configLocation" value="classpath:mybatis-config.xml" />
</bean>
<bean id="sqlSessionFactory_b" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="connectionFactory_b" />
<property name="configLocation" value="classpath:mybatis-config.xml" />
</bean>
结果当然是悲剧的,datasource源不能转成xaConnectionFactory
有什么方法能在atomikos中使用jndiname方式直接创建datasource或是xaConnectionFactory?
参考这篇博文
http://blog.csdn.net/conquer0715/article/details/50948530
<constructor-arg>
<props>
<prop key="user">root</prop>
<prop key="password">murali</prop>
<prop key="DYNAMIC_CLASS">com.findonnet.service.transaction.jboss.jdbc.Mysql</prop>
</props>
</constructor-arg>
</bean> <bean id="dataSource1" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName">
<value>com.arjuna.ats.jdbc.TransactionalDriver</value>
</property>
<property name="url" value="jdbc:arjuna:mysql://127.0.0.1:3306/mydb1"/>
<property name="connectionProperties">
<ref bean="dsProps"/>
</property>
</bean> <bean id="dataSource2" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName">
<value>com.arjuna.ats.jdbc.TransactionalDriver</value>
</property>
<property name="url" value="jdbc:arjuna:mysql://127.0.0.1:3306/mydb2"/>
<property name="connectionProperties">
<ref bean="dsProps"/>
</property>
</bean> <bean id="sequenceDAO" class="com.findonnet.persistence.MessageSequenceDAO">
<property name="dataSource">
<ref bean="dataSource1"/>
</property>
</bean> <bean id="sequenceDAO2" class="com.findonnet.persistence.MessageSequenceDAO">
<property name="dataSource">
<ref bean="dataSource2"/>
</property>
</bean>