У меня есть веб-приложение, использующее JPA и JTA с Spring. Я хотел бы поддержать как JBoss, так и Tomcat. При работе на JBoss я хотел бы использовать собственный TransactionManager JBoss, а при работе на Tomcat я хотел бы использовать JOTM.
У меня работают оба сценария, но теперь я обнаружил, что мне нужны две отдельные конфигурации Spring для двух случаев. С JOTM мне нужно использовать Spring's JotmFactoryBean
:
<bean id="transactionManager"
class="org.springframework.transaction.jta.JtaTransactionManager">
<property name="userTransaction">
<bean class="org.springframework.transaction.jta.JotmFactoryBean"/>
</property>
</bean>
Однако в JBoss мне просто нужно получить «TransactionManager» из 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>
Есть ли способ настроить это так, чтобы использовать соответствующий TransactionManager - JBoss или JOTM - без необходимости двух разных файлов конфигурации?