У меня есть приложение, которое использует декларативное управление транзакциями Spring. Как я могу развернуть это в контейнере TomEE +, чтобы приложение использовало диспетчер транзакций Tomice JTA?Как мне получить доступ к менеджеру транзакций JTA TomEE?
В частности, как я могу обратиться к встроенному диспетчеру транзакций из файла «application-context.xml» Spring?
Конфигурация управления транзакциями 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-файл/весна/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 configuration - how to set TransactionManager?
Вот рядом промах, который не будет работать в конфигурационном файле XML: https://issues.apache.org/jira/browse/TOMEE-38
Вот как это сделать в Java коде, если у вас есть ваши руки на InitialContext: http://osdir.com/ml/users.openejb.apache.org/2012-11/msg00110.html
[Edit: Документация Tomee говорит о том, как объявить диспетчер транзакций, но он говорит, что нужно сделать это в Tomee.xml, который принадлежит серверу, а не отдельному webapp; Я хочу настроить диспетчер транзакций для одного приложения, а не для всего сервера: http://tomee.apache.org/containers-and-resources.html]
Каково имя класса менеджера транзакций, предоставленного JTA по умолчанию? Я замечаю, что дистрибутив TomEE + включает в себя geronimo-транзакцию и openejb-core, оба из которых имеют справедливый бит транзакций в них. –