Salut à tous,

J'aimerais dans mon appli pouvoir dynamiquement en fonction du login de l'utilisateur modifier le datasource du fichier hibernate.cfg.xml

J'ai une variable de session que je récupère quand l'utilisateur se logue :
#{sessionScope.utilisateur.datasource}

j'aimerais donc remplacer le XXX de la ligne :
<property name="connection.datasource">java:comp/env/XXX</property>
par cette variable.


hibernate.cfg.xml
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
		"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
		"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property>
         <property name="connection.datasource">java:comp/env/XXX</property>
		<property name="show_sql">true</property>
 
    </session-factory>
</hibernate-configuration>

EDIT :

J'ai essayé avec cette méthode pour réécrire la config de hibernate :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
Configuration configuration = new Configuration()
.setProperty("hibernate.dialect", "org.hibernate.dialect.PostgreSQLDialect")
.setProperty("hibernate.connection.driver_class", "org.postgresql.Driver")
.setProperty("connection.datasource", "java:comp/env/"+"XXX")
.setProperty("show_sql", "true")
 
 
SessionFactory factory = configuration.buildSessionFactory()
Mais j'ai cette erreur :

Cependant j'ai toujours cette erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
Caused by: java.lang.UnsupportedOperationException: The user must supply a JDBC connection
   at org.hibernate.connection.UserSuppliedConnectionProvider.getConnection(UserSuppliedConnectionProvider.java:30)
Normalement je n'ai pas besoin de reseigner de connection JDBC si le datasource est renseigner, il doit aller chercher les infos dans le context.xml contenant les datasources

Quelqu'un aurait une idée ?


Par avance merci !