Ok i solve the problem,but now : I create my SessionFactory well in my hashmap, but strangely, if I perform a login with a user using the datasource X, then other user with datasource Y and when i reloguing with the user using datasource X, this works partialy because sometimes the data in my datasource Y are displayed, tut it should be the data of datasource X :/
My HibernateUtil :
Code:
public class HibernateUtil {
private static HashMap<String, SessionFactory> sessionFactoryMap = new HashMap<String, SessionFactory>();
private static Configuration configuration = new Configuration();
private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();
private static org.hibernate.SessionFactory sessionFactory;
public static void currentSession(String datasource) throws HibernateException {
System.out.println("### CONFIG HIBERNATE AVEC DATASOURCE : " + datasource);
try {
if (!sessionFactoryMap.containsKey(datasource)) {
System.out.println("SESSION FACTORY ABSENTE DE LA MAP, CREATION DE LA SESSION FACTORY");
configuration = new Configuration();
configuration.configure("/hibernate.cfg.xml");
//reconfiguration du datasource en fonction de l'utilisateur
configuration.setProperty("hibernate.connection.datasource", "java:comp/env/" + datasource);
sessionFactory = configuration.buildSessionFactory();
//on stock la session factory dans la map
sessionFactoryMap.put(datasource, sessionFactory);
System.out.println("NB SESSION FACTORY : " + sessionFactoryMap.size());
} else {
System.out.println("SESSION FACTORY PRESENTE DANS LA MAP");
sessionFactory = sessionFactoryMap.get(datasource);
}
} catch (Exception e) {
System.err.println("%%%% Error Creating SessionFactory %%%%");
e.printStackTrace();
}
}
}