4

JTATransactionManagerグローバルトランザクション用にコンテナ管理のデータソースと組み込みのActiveMQリソースをどのように設定しますか?

私はTomcat6を使用しており、JTAをサポートするためにAtomikosをインストールしています。ORMにはHibernateを使用しています。これが私の設定です:

<bean id="AtomikosTransactionManager"  
      class="com.atomikos.icatch.jta.UserTransactionManager"  
    init-method="init" destroy-method="close"> 
   <!--  when close is called, should we force  
         transactions to terminate or not?  --> 
   <property name="forceShutdown" value="false" /> 
</bean> 

<bean id="AtomikosUserTransaction"  
   class="com.atomikos.icatch.jta.UserTransactionImp">      
   <property name="transactionTimeout" value="300" /> 
</bean>

<jee:jndi-lookup expected-type="javax.sql.DataSource" id="dataSource" jndi-name="jdbc/EDITSOLUTIONS"/>

<bean id="sessionFactory" class="org.springframework.orm.hibernate.LocalSessionFactoryBean">
    <property name="dataSource" ref="dataSource"/>
    <property name="mappingResources"/>
    <list>
        <value>../../src/editsolutions.hibernate.cfg.xml</value>
    </list>
    <property name="hibernateProperties">
        <value>
            hibernate.dialect=${hibernate.dialect}
        </value>
    </property>
</bean>

<bean id="activemq" class="org.apache.activemq.camel.component.ActiveMQComponent">
    <property name="connectionFactory">
        <bean class="org.apache.activemq.ActiveMQConnectionFactory">
            <property name="brokerURL" value="failover://tcp://localhost:61616"/>
        </bean>
    </property>
</bean>

<bean id="jmsConnectionFactory"class="org.apache.activemq.ActiveMQConnectionFactory">
    <property name="brokerURL" value="failover://tcp://localhost:61616"/>
</bean>

<bean name="txManager" class="org.springframework.transaction.jta.JtaTransactionManager">
    <property name="transactionManager" ref="AtomikosTransactionManager" /> 
    <property name="userTransaction" ref="AtomikosUserTransaction" />
</bean>

Springのドキュメントによると、JTATransactionManagerにリソースについて説明する必要はありません。それが私がやったことです。


次の未解決の質問があります。

  1. Atomikos正しく統合されているかどうかわかりませんか?
  2. からデータソースを取得しても大丈夫<jee:jndi-lookup>ですか?
  3. Hiberanteの構成は正しいJTATransactionManagerですか?
  4. コンテナによって管理されていないJVMに組み込まれているため、JTATransactionManagerはActimeMQを認識できますか?
4

1 に答える 1

1

この非常に便利なリンクを試してください:http ://www.atomikos.com/Documentation/SpringIntegration

次のようにデータソースを構成することを忘れないでください。

<bean id="dataSourceA" class="com.atomikos.jdbc.AtomikosDataSourceBean"  init-method="init" destroy-method="close">
    <qualifier value="jmsRecoveryDatabaseSchema"/> 
    <property name="uniqueResourceName"><value>XADS1</value></property> 
    <property name="xaDataSourceClassName"> 
        <value>oracle.jdbc.xa.client.OracleXADataSource</value> 
    </property> 
    <property name="xaProperties"> 
        <props> 
            <prop key="URL">${jdbc.url}</prop> 
            <prop key="user">${jdbc.username}</prop> 
           <prop key="password">${jdbc.password}</prop> 
        </props> 
    </property> 
    <property name="poolSize"><value>1</value></property>
    <property name="testQuery" value="SELECT 1 FROM DUAL"/>
</bean>

お役に立てば幸いです。

于 2013-04-12T15:21:08.090 に答える