У меня есть приложение, использующее декларативное управление транзакциями Spring. Как я могу развернуть это в контейнере TomEE +, чтобы приложение использовало диспетчер транзакций TomEE JTA?
В частности, как я могу обратиться к встроенному диспетчеру транзакций из файла Spring application-context.xml?
Конфигурация управления транзакциями Spring, похоже, хочет искать диспетчер транзакций либо по ссылке на bean-компонент, либо с помощью поиска JNDI; Я потратил день на изучение этого и просмотр исходного кода; Я нашел много дискуссий по этой проблеме (ссылки ниже), но не нашел исчерпывающих инструкций.
Вот что у меня в META-INF / persistence.xml приложения:
<persistence-unit name="myPersistenceUnit" transaction-type="JTA">
<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
<jta-data-source>myDs-managed</jta-data-source>
<non-jta-data-source>myDs-unmanaged</non-jta-data-source>
<properties>
<property name="openjpa.jdbc.DBDictionary"
value="org.apache.openjpa.jdbc.sql.PostgresDictionary"/>
<property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema"/>
<property name="openjpa.Run
<property name="openjpa.Log" value="slf4j" />
</properties>
</persistence-unit>
И в файле приложений META-INF / spring / applicationContext.xml у меня есть следующее: (Я пробовал различные значения для transactionManagerName, как предлагалось в различных обсуждениях темы, так как это кажется нестандартным для серверов приложений
<tx:annotation-driven mode="aspectj" transaction-manager="txManager" />
<bean class="org.springframework.transaction.jta.JtaTransactionManager"
id="txManager">
<property name="transactionManagerName"
value=" java:comp/TransactionManager"/>
</bean>
Вот пример, который, как утверждается, работает для JBoss: Конфигурация Spring JTA - как установить TransactionManager?
Вот возможный промах, который не будет работать в файле конфигурации xml: https://issues.apache.org/jira/browse/TOMEE-38.
Вот как это сделать в Java-коде, если у вас есть в руках initialContext: http://osdir.com/ml/users.openejb.apache.org/2012-11/msg00110.html
[Изменить: в документации Tomee говорится о том, как объявить диспетчер транзакций, но в нем говорится, что это нужно делать в Tomee.xml, который принадлежит серверу, а не отдельному веб-приложению; Я хочу настроить диспетчер транзакций для одного приложения, а не для всего сервера: http://tomee.apache.org/containers-and-resources.htmlpting