CreateEntityManagerFactory et Persistence.xml
Bonjour,
Je travaille depuis une semaine à regler un problème à propos de Java Persistence.
Je suis en train de créer une application web multi-tenants et j'ai décidé d'adopter une stratégie 1 client = 1 base de donnée.
- Les bases de données ont la même structure, donc les mêmes entity
- J'ai une table qui me permet de connaitre le nom de la base de donnée associé au client.
- Une fois la base de donnée connu, j'ai besoin d'instancier une EntityManagerFactory avec les infos du client.
- J'essaie d'instancier une EMF avec Persistence.createentitymanagerfactory("name",map)
- Les informations sur la base de donnée du client sont dans la "map" et non dans persistence.xml (Je ne veux pas avoir une Persistence unit hard-codé pour chaque client)
Voici le résultat obtenu jusqu'à présent:
J'ai une PU définie dans persistence.xml qui pointe vers la base de donnée "jdbc/gmao". Si dans la map je pointe vers une autre base de donnée "jdbc/gmao_2", voici ce que le log me donne lorsque je crée la factory:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| connecting(DatabaseLogin(
platform=>DatabasePlatform
user name=> ""
connector=>JNDIConnector datasource name=>null
))
Connected: jdbc:mysql://localhost:3306/gmao
User: root@localhost
Database: MySQL Version: 5.1.34-community
Driver: MySQL-AB JDBC Driver Version: mysql-connector-java-5.1.7 ( Revision: ${svn.Revision} )
connecting(DatabaseLogin(
platform=>MySQLPlatform
user name=> ""
connector=>JNDIConnector datasource name=>jdbc/gmao_2
))
Connected: jdbc:mysql://localhost:3306/gmao_2
User: root@localhost
Database: MySQL Version: 5.1.34-community
Driver: MySQL-AB JDBC Driver Version: mysql |
Et toutes les données affichées à l'écran proviennent de jdbc/gmao
Si je ne pointe pas vers une autre base de donnée, voici le résultat:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| connecting(DatabaseLogin(
platform=>DatabasePlatform
user name=> ""
connector=>JNDIConnector datasource name=>null
))
Connected: jdbc:mysql://localhost:3306/gmao
User: root@localhost
Database: MySQL Version: 5.1.34-community
Driver: MySQL-AB JDBC Driver Version: mysql-connector-java-5.1.7 ( Revision: ${svn.Revision} )
connecting(DatabaseLogin(
platform=>MySQLPlatform
user name=> ""
connector=>JNDIConnector datasource name=>null
))
Connected: jdbc:mysql://localhost:3306/gmao
User: root@localhost
Database: MySQL Version: 5.1.34-community
Driver: MySQL-AB JDBC Driver Version: mysql-connector-java-5.1.7 ( Revision: ${svn.Revision} ) |
Il semblerait à première vue qu'il y a un processus de connexion à une bd qui précèdent celle de jta_datasource dans la "map"
Quelqu'un peut m'aider je vous pris?
Merci