Galera, meu problema é o seguinte:
tenho um sistema que vai ser acessado por vários clientes, sendo que cada cliente
tem o seu próprio banco de dados, ou seja, para cada cliente eu tenho um arquivo xml de configuração do hibernate.
O cliente é identificado por uma chave que ele digita na hora do login. O sistema recupera a chave digitada,
descobre qual é o cliente e cria a SessionFactory com o arquivo xml de configuração correspondente ao cliente encontrado.
O problema acontece na hora que eu faço o logoff e tento fazer o login novamente, a partir do mesmo computador,
só que com outra chave, como se fosse outro cliente, pois o sistema não cria mais a SessionFactory.
Minha dúvida é: se eu acessar o sistema a partir de outro computador, uma nova SessionFactory é criada,
ou ela é compartilhada por todos os usuários do sistema, mesmo estando em computadores diferentes?
Abaixo segue o código da minha classe HibernateUtil:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package modelo.persistencia;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.SessionFactory;
/**
* Hibernate Utility class with a convenient method to get Session Factory object.
*
* @author Administrador
*/
public class HibernateUtil {
private static SessionFactory sessionFactory;
static {
try {
//Postgres
//sessionFactory = new AnnotationConfiguration().configure("hibernate_postgres.cfg.xml").buildSessionFactory();
//SQL Server - Desenvolvimento
sessionFactory = new AnnotationConfiguration().configure("hibernate_desenvolvimento.cfg.xml").buildSessionFactory();
//SQL Server - Cliente: Nazareno
//sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
}
catch (HibernateException ex) {
throw new RuntimeException("Problema de configuração: " + ex.getMessage(), ex);
}
}
public static final ThreadLocal threadSession = new ThreadLocal();
/**
*
* @return
* @throws org.hibernate.HibernateException
*/
@SuppressWarnings("unchecked")
public static Session currentSession() throws HibernateException {
Session session = (Session) threadSession.get();
// Abre uma nova sessão se uma não foi aberta ainda.
if (session == null) {
session = sessionFactory.openSession();
threadSession.set(session);
}
return session;
}
/**
*
* @throws org.hibernate.HibernateException
*/
@SuppressWarnings("unchecked")
public static void closeSession() throws HibernateException {
Session session = (Session) threadSession.get();
threadSession.set(null);
if (session != null) {
session.close();
}
}
public ConexaoHibernate() {
}
}