J'ai un projet client-serveur existant qui utilise JDBC simple pour communiquer avec une seule instance MySQL. Maintenant je voudrais l'étendre pour supporter plusieurs instances MySQL (partagées) en utilisant n'importe quelle implémentation JPA et avec l'aide de l'implémentation JTA qui supporte les transactions XA.Comment utiliser JPA et JTA avec un gestionnaire de transactions?
Ma question est comment dois-je procéder? Après plusieurs heures de googling, ce que je comprends, je ne peux pas utiliser les implémentations JTA sans aucun conteneur de serveur d'application, est-ce vrai? Pour mon but je serais heureux si les logiques d'application pourraient être abstraites en utilisant n'importe quelle couche ORM - une implémentation JPA (comme EclipseLink Partition ou OpenJPA Slice) et ensuite en utilisant un gestionnaire de transaction (comme BTM) pour exécuter les transactions XA fournissant ACID garantit l'ensemble sous-jacent des instances MySQL. Jusqu'ici j'ai essayé le didacticiel vidéo dans YouTube (https://www.youtube.com/watch?v=Vmr6GAlbG10) en expérimentant avec EclipseLink et une seule instance DB. Maintenant, je prévois de l'étendre sur plusieurs instances, mais je ne sais pas comment.
Toutes les suggestions, les liens et les lignes directrices seraient très utiles. Je suis un peu nouveau à ce sujet donc acceptez tout inconvénient si j'ai mal compris. Merci.
Pourriez-vous fournir plus de détails concernant votre proposition, par ex. un tutoriel ou un exemple? –
Ma proposition avec Spring? Il suffit de chercher sur internet pour "spring jta" et vous y trouverez de nombreux exemples. Par exemple, vérifiez [l'article de Spring sur JTA] (http://spring.io/blog/2011/08/15/configuring-spring-and-jta-without-full-java-ee/). –
@Geziefer et parce que vous avez déjà de l'expérience avec Java EE: vous configurez simplement le gestionnaire de transactions, et dites à vos EntityManagers qu'ils sont JTA (pas de ressource locale), et qu'ils seront automatiquement injectés par Spring transaction. Les annotations sont très similaires à celles de Java EE, mais seules les propagations de transaction sont différentes.(et probablement vous devez annoter les méthodes publiques avec '@ Transactional', par rapport à EJB, où c'est par défaut) –