Tôi có một ứng dụng web sử dụng JPA và JTA với Spring. Tôi muốn hỗ trợ cả JBoss và Tomcat. Khi chạy trên JBoss, tôi muốn sử dụng JBMan's TransactionManager, và khi chạy trên Tomcat, tôi muốn sử dụng JOTM.Cấu hình Spring JTA TransactionManager: Hỗ trợ cả Tomcat và JBoss
Tôi có cả hai tình huống làm việc, nhưng bây giờ tôi thấy rằng tôi dường như cần hai cấu hình Spring riêng biệt cho hai trường hợp. Với JOTM, tôi cần phải sử dụng Spring JotmFactoryBean
:
<bean id="transactionManager"
class="org.springframework.transaction.jta.JtaTransactionManager">
<property name="userTransaction">
<bean class="org.springframework.transaction.jta.JotmFactoryBean"/>
</property>
</bean>
Trong JBoss, tuy nhiên, tôi chỉ cần lấy "TransactionManager" từ JNDI:
<bean id="transactionManager"
class="org.springframework.transaction.jta.JtaTransactionManager">
<property name="transactionManager">
<bean class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="resourceRef" value="true" />
<property name="jndiName" value="TransactionManager" />
<property name="expectedType"
value="javax.transaction.TransactionManager" />
</bean>
</property>
</bean>
Có cách nào để cấu hình này để các TransactionManager thích hợp - JBoss hoặc JOTM - được sử dụng, không cần hai tệp cấu hình khác nhau?
Mùa xuân 3 không còn cung cấp lớp 'org.springframework.transaction.jta.JotmFactoryBean', vì vậy bạn có thể cần phải sao chép nguồn từ 2.5.x. – Jason