Comment utiliser Atomikos Transaction Essentials avec Hibernate >= 4.3
Je suis passé de mise en veille prolongée 4.2 mise en veille prolongée 4.3 et mon projet n'est pas de travail, pas plus. Je suis un
HibernateException: Impossible de localiser actuel transaction JTA
quand je fais
Session s = sessionFactory.getCurrentSession();
J'ai réalisé que org.mise en veille prolongée.des transactions.TransactionManagerLookup n'existe plus. Il a été supprimé en veille prolongée 4.3. Comment dois-je changer ma configuration actuelle?
<hibernate-configuration>
<session-factory>
<property name="connection.datasource">testDS</property>
<property name="current_session_context_class">jta</property>
<property name="transaction.manager_lookup_class">com.atomikos.icatch.jta.hibernate3.TransactionManagerLookup</property>
<property name="transaction.factory_class">org.hibernate.transaction.CMTTransactionFactory</property>
<property name="connection.release_mode">auto</property>
<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
<property name="hibernate.hbm2ddl.auto">create-drop</property>
<property name="hibernate.show_sql">true</property>
<mapping class="test.entities.Person" />
<mapping class="test.entities.CreditCard" />
<mapping class="test.entities.ExampleRevEntity" />
</session-factory>
OriginalL'auteur sebplorenz | 2013-12-19
Vous devez vous connecter pour publier un commentaire.
En veille prolongée 4.3 le long obsolète TransactionManagerLookup est supprimé. Maintenant, le JTA fournisseur doit mettre en œuvre org.mise en veille prolongée.moteur.des transactions.jta.la plate-forme.le spi.JtaPlatform. Un résumé de la mise en œuvre de la JTA Plate-forme est déjà disponible dans Hibernate à savoir org.mise en veille prolongée.moteur.des transactions.jta.la plate-forme.interne.AbstractJtaPlatform. L'utilisation de ce il est assez simple à écrire un JTA Plate-forme pour Atomikos:
En outre, le nom de la plate-forme de mise en œuvre de la classe doit être ajouté à la hibernate:
Salut Eric, le problème est que Hibernate va créer une nouvelle instance de la JTA plate-forme au démarrage. Il n'existe aucun moyen pour injecter un Ressort créé JTA plate-forme avec son Ressort créé gestionnaire de transactions en Hibernation (autant que je sache). Ce que vous pourriez faire est de faire des références à la transaction de l'utilisateur et le gestionnaire de transactions statique dans le JTA Plate-forme. Puis créez tout dans le Ressort du contexte avant Hibernate fait de la première utilisation de la JTA plate-forme.
Je l'ai eu vers le printemps problème de l'injection par la création d'une Classe qui implémente l'ApplicationContextAware interface pour permettre la appCtx et modifier le AtomikosJtaPlatform classe pour aller chercher de l'un usertransaction à partir du printemps contexte à chaque fois : @Override protected TransactionManager locateTransactionManager() { return SpringContext.getcontexteapplication().getBean("atomikosTransactionManager", UserTransactionManager.class); }
Je suis en train d'utiliser atomikos tm pour jbpm moteur d'exécution. J'ai mis en œuvre personnalisée plate-forme de mise en œuvre et la mise à jour hibernate plate-forme de l'entrée en persistance.xml mais je suis en dessous exception - Causé par: javax.la persistance.TransactionRequiredException: Explicitement de rejoindre une transaction JTA nécessite une transaction JTA être actuellement active au org.mise en veille prolongée.interne.SessionImpl.joinTransaction(SessionImpl.java:3766) at org.mise en veille prolongée.interne.SessionImpl.joinTransaction(SessionImpl.java:3751)
OriginalL'auteur sebplorenz
À utiliser Hibernate JTA Plate-forme avec le Printemps, d'écrire et de compiler ce code
Ajouter dans votre printemps-configuration
N'oubliez pas d'ajouter une dépendance
Et enfin la modification de hibernate configuration comme celle -
hibernate.transaction.jta.platform=my.domain.spring.hibernate.jta.SpringJtaPlatformAdapter
OriginalL'auteur Anton Lem
Un indice pour le Printemps utilisateurs - il suffit d'utiliser cette application si vous l'installation des trucs avec de l'usine bean:
OriginalL'auteur Torsten Krah
Vous pouvez essayer le réglage de la jtaTransactionManager propriété de org.springframework.orm.hibernate4.LocalSessionFactoryBean pour le Printemps JtaTransactionManager? J'ai le même problème mais résolu par la présente. Par ailleurs, la HibernateTemplate est de retour sur le Printemps 4.0.1. Bien qu'il n'est pas recommandé, mais j'aime l'utiliser. Il a aidé à prendre soin de beaucoup de choses. (Je suis en utilisant le Printemps 4.0.5 + Hibernate 4.3.5 + Atomikos 3.9.3)
OriginalL'auteur Po-Ting Huang
Ce qui suit est une approche alternative qui fonctionne avec la configuration Spring. C'est différent d'Anton dans une démarche qui ne repose pas sur une méthode d'instance de l'écriture d'un champ statique (ce qui est généralement considéré comme une mauvaise pratique).
Puis au Printemps de configuration:
OriginalL'auteur The Gilbert Arenas Dagger