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 : 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
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 : 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} )
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