Datasource dynamique en fonction d'une variable session
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:
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:
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:
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 !