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:
Et toutes les données affichées à l'écran proviennent de jdbc/gmao
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Si je ne pointe pas vers une autre base de donnée, voici le résultat:
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"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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} )
Quelqu'un peut m'aider je vous pris?
Merci
Partager