हां, आप एटमिकोस या बिट्रोनिक्स जैसे जेटीए अनुपालन लेनदेन प्रबंधक का उपयोग कर सकते हैं। उनकी संबंधित साइटों में दस्तावेज़ हैं कि उन्हें स्प्रिंग के साथ कैसे कॉन्फ़िगर किया जाए। सामान्य तौर पर, आपको नीचे दिए गए चरणों का पालन करना होगा (यदि एटमिकोस का उपयोग कर रहे हैं):
- अपने मौजूदा XA डेटा स्रोत को बनाए रखें (
rtsDatasource
आपके मामले में) या पहले से उपयोग नहीं कर रहे हैं तो एक बनाएं (उदाहरण के लिए, यदि किसी के पास गैर-एक्सए डेटा स्रोत है, तो उस डेटा स्रोत को पहले एक्सए डेटा स्रोत में परिवर्तित किया जाना चाहिए)। - XA डेटा स्रोत को
AtomikosDataSourceBean
में लपेटें । - अपना
EntityManagerFactory
इंगित करें नएAtomikosDataSourceBean
. पर उदाहरण। - XA लेनदेन प्रबंधक और XA उपयोगकर्ता लेनदेन की घोषणा करें।
- XA लेनदेन प्रबंधक को स्प्रिंग में लपेटें
JtaTransactionManager
। - वसंत का उपयोग करें
JtaTransactionManager
।
H2 डेटाबेस, हाइबरनेट 4, स्प्रिंग 4 और एटमिकोस 4 का उपयोग करते हुए एक संक्षिप्त कॉन्फ़िगरेशन स्निपेट नीचे दिखाया गया है।
<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"/>
विवरण के लिए, आप यह ऐप देख सकते हैं ।