@PersistenceContext pour du multi base de données

cs_chatis Messages postés 74 Date d'inscription vendredi 4 juillet 2003 Statut Membre Dernière intervention 4 avril 2012 - 2 nov. 2011 à 10:20
cs_chatis Messages postés 74 Date d'inscription vendredi 4 juillet 2003 Statut Membre Dernière intervention 4 avril 2012 - 2 nov. 2011 à 15:22
Bonjour,

j'ai créé une application de traitement java multi-couche (REST-Manger-DAO-Entity) utilisant java EE 6 JPA/JTA Hibernate. Pas de Spring ni de JSF car le client est PHP.

Cette application est utilisée par 50 domaines différents et il devient difficile à gérer.

Sachant que l'appli est la même sur les 50 domaines et que chaque domaines possède ca propre BDD, existe-il un moyen d'avoir 50 domaines qui se connecte sur une seul et unique appli et en fonction du domaine qu'il l'appelle, l'appli sait qu'elle BDD aller appeler ?

Car actuellement j'ai mon fichier persistence.xml comme suis :

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

  
    org.hibernate.ejb.HibernatePersistence


    <jta-data-source>jdbc/sportreserv</jta-data-source>
    


  






et dans ma couche DAO, je me connecte comme suis :

@PersistenceContext(unitName = "Plugin-PU")
    private EntityManager em;


Je sais que mon persistence.xml peut gérer sans souci plusieurs persistence-unit. Mais je ne sais pas comment faire pour les appeler avec mon @PersistenceContext en fonction du domaine qui a appelé l'appli...

Quelqu'un peut m'aider ?

2 réponses

shaiulud Messages postés 404 Date d'inscription mardi 18 décembre 2001 Statut Membre Dernière intervention 15 juillet 2014 22
2 nov. 2011 à 14:42
L'utilisation de Spring n'a rien à voir avec le fait que le client soit en PHP.
Il existe avec ce framwork une solution de datasource proxifiées (RoutingDataSource) qui permet de tapper plusieurs bases.

Je n'ai pas tester cette solution avec du JPA mais seulement avec spring-jdbc.
Il faut de surcroit, avec une couche AOP (pointcut sur les appels de DAOs), attacher un contexte de routage au ThreadLocal pour que tu puisses router vers la bonne base.

Cependant avec JPA cette méthode me parait risquée techniquement (que va-t'il se passer avec le manager transactionnel ?)


Quoi qu'il en soit, ta problématique t'impose de revoir ton architecture.
Tu peux aussi voir auprès des outils d'intégration (maven avec des builds multiple par exemple) pour ne pas avoir à changer ton archi et de faire prendre en charge la multiplicité des applis identique un tel outils.
0
cs_chatis Messages postés 74 Date d'inscription vendredi 4 juillet 2003 Statut Membre Dernière intervention 4 avril 2012
2 nov. 2011 à 15:22
Oula... Ca me semble complexe ta solution.... Car je n'ai jamais utilisé Maven et encore moins Spring.....

Penses-tu qu'il est possible d'intégrer ta solution à mon appli sans grande connaissance de ces frameworks ?

Penses-tu que je vais devoir modifier énormément mon architecture ? Il n'existe pas de solution avec JPA ?

merci
0
Rejoignez-nous