sql >> Database >  >> RDS >> Oracle

Een jta-gegevensbron definiëren buiten de container

Ja, u zou een JTA-conforme transactiemanager zoals Atomikos of Bitronix kunnen gebruiken. Hun respectievelijke sites hebben documentatie over hoe ze te configureren met Spring. Over het algemeen moet u de onderstaande stappen volgen (als u Atomikos gebruikt):

  1. Behoud uw bestaande XA-gegevensbron (rtsDatasource in uw geval) of maak er een aan als u deze nog niet gebruikt (als iemand bijvoorbeeld een niet-XA-gegevensbron heeft, moet die gegevensbron eerst worden geconverteerd naar een XA-gegevensbron).
  2. Wikkel de XA-gegevensbron in een AtomikosDataSourceBean .
  3. Richt uw EntityManagerFactory bij de nieuwe AtomikosDataSourceBean instantie.
  4. Declareer een XA-transactiebeheerder en een XA-gebruikerstransactie.
  5. Wikkel de XA-transactiemanager in een Spring JtaTransactionManager .
  6. Gebruik de Spring JtaTransactionManager .

Een kort configuratiefragment met H2-database, Hibernate 4, Spring 4 en Atomikos 4 wordt hieronder weergegeven.

<bean class="org.h2.jdbcx.JdbcDataSource" id="originalDataStore" lazy-init="true">...</bean>

<bean class="com.atomikos.jdbc.AtomikosDataSourceBean" id="dataSource" init-method="init" destroy-method="close">
  <property name="uniqueResourceName" value="xaDS"/>
  <property name="xaDataSource" ref="originalDataStore"/>
  <property name="poolSize" value="3"/>
</bean>

<bean class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" id="entityManagerFactory">
  <property name="dataSource" ref="dataSource"/>
  <property name="jpaProperties">
    <props>
      <prop key="hibernate.transaction.jta.platform">com.atomikos.icatch.jta.hibernate4.AtomikosPlatform</prop>
       ...
    </props>
  </property>
</bean>

<bean class="org.springframework.transaction.jta.JtaTransactionManager" id="transactionManager">
  <property name="transactionManager">
    <bean class="com.atomikos.icatch.jta.UserTransactionManager" init-method="init" destroy-method="close">
      <property name="forceShutdown" value="false"/>
    </bean>
  </property>
  <property name="userTransaction">
    <bean class="com.atomikos.icatch.jta.J2eeUserTransaction">
      <property name="transactionTimeout" value="300"/>
    </bean>
  </property>
  <property name="allowCustomIsolationLevels" value="true"/>
</bean>

<transaction:annotation-driven transaction-manager="transactionManager"/>

Voor details kun je deze app bekijken .




  1. Rails (postgres)-query met jsonb-array

  2. Zoek of een kolom in Oracle een reeks heeft

  3. verkeerde telling in query

  4. SQL:Unie van polygonen