J'ai une application qui utilise la gestion des transactions déclarative de Spring. Comment puis-je le déployer dans un conteneur TomEE + afin que l'application utilise le gestionnaire de transactions JTA de TomEE?Comment puis-je accéder au gestionnaire de transactions JTA de TomEE?
Plus précisément, comment puis-je me référer au gestionnaire de transactions intégré dans le fichier "application-context.xml" de Spring?
La configuration de gestion des transactions de Spring semble vouloir rechercher le gestionnaire de transactions soit par une référence de bean, soit par une recherche JNDI; J'ai passé une journée à faire des recherches sur ce sujet et à regarder le code source; J'ai trouvé beaucoup de discussions sur la question (références ci-dessous) mais pas de façon définitive.
Ce que j'ai dans META-INF/persistence.xml de l'application est la suivante:
<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>
Et, dans les applications META-INF/fichier printemps/applicationContext.xml J'ai ceci: (je l'ai essayé différentes valeurs pour transactionManagerName comme suggéré dans diverses discussions sur le sujet, car il semble être non standard sur les serveurs d'application
<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>
Voici un exemple qui prétend travailler pour JBoss: Spring JTA configuration - how to set TransactionManager?
est ici une quasi-collision qui ne fonctionne pas dans un fichier de configuration xml: https://issues.apache.org/jira/browse/TOMEE-38
Voici comment le faire dans le code java si vous avez vos mains sur initialContext: http://osdir.com/ml/users.openejb.apache.org/2012-11/msg00110.html
[Edit: La documentation Tomee parle de la façon de déclarer un gestionnaire de transactions, mais il dit de le faire dans Tomee.xml, qui appartient au serveur et non à la webapp individuelle; Je souhaite configurer le gestionnaire de transactions pour une seule application et non pour l'ensemble du serveur: http://tomee.apache.org/containers-and-resources.html]
Quel est le nom de classe du gestionnaire de transactions fourni par JTA par défaut? Je remarque que la distribution TomEE + inclut geronimo-transaction et openejb-core, qui ont toutes les deux une bonne partie de la transaction. –