Session factory compartilhada

Olá Pessoal!

Tenho percebido que a sessionFactory do back end é compartilhada entre todos os usuários logados.

Há algum meio de fazer com que ela seja individual por usuário??

Muito Obrigado!

Sem resposta.
Não entendi o que vc está querendo.
Ops!
Foi mal.

[quote=andre07041989]Cara a sua duvida é muito generalizada, para que o pessoal responda precisa ser mais especifico, por que senão ai velho fica dificil.
Vlw.[/quote]

Olá André!

Desculpe, vou tentar ser mais claro e colocar um exemplo de como ela está configurada:

hoje tenho a seguinte configuração da HibernateUtil:

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;

import br.com.caelum.model.Account;
import br.com.caelum.model.Category;
import br.com.caelum.model.Transaction;
import br.com.caelum.model.User;

public class HibernateUtil {
	private static final SessionFactory sessionFactory;
	private static final AnnotationConfiguration annotationConfiguration;
	static {
		try {
			annotationConfiguration = new AnnotationConfiguration();

			annotationConfiguration.addAnnotatedClass(User.class);
			annotationConfiguration.addAnnotatedClass(Account.class);
			annotationConfiguration.addAnnotatedClass(Category.class);
			annotationConfiguration.addAnnotatedClass(Transaction.class);

			sessionFactory = annotationConfiguration.configure(
					"conf/hibernate.cfg.xml").buildSessionFactory();
		} catch (Throwable ex) {
			throw new ExceptionInInitializerError(ex);
		}
	}

	private static Session session;

	public static Session getSession() throws HibernateException {
		try {
			if (session == null || session.isOpen() == false) {
				session = sessionFactory.openSession();
			}
		} catch (HibernateException e) {
			e.printStackTrace();
			throw (e);
		}
		return session;
	}

	public static void closeSession() throws HibernateException {
		try {
			if (session != null) {
				session.close();
			}
			session = null;
		} catch (HibernateException e) {
			e.printStackTrace();
			throw (e);
		}
	}

	private static org.hibernate.Transaction tx;

	public static org.hibernate.Transaction beginTransaction()
			throws HibernateException {
		try {
			if (tx == null) {
				tx = getSession().beginTransaction();
			}
		} catch (HibernateException e) {
			e.printStackTrace();
			throw (e);
		}
		return tx;
	}

	public static void commit() throws HibernateException {
		try {
			if (tx != null) {
				tx.commit();
			}
			tx = null;
		} catch (HibernateException e) {
			e.printStackTrace();
			throw (e);
		}
	}

	public static void rollBack() throws HibernateException {
		try {
			if (tx != null) {
				tx.rollback();
			}
			tx = null;
		} catch (HibernateException e) {
			e.printStackTrace();
			throw (e);
		}
	}

	public static AnnotationConfiguration getConfig() {
		return annotationConfiguration;
	}

}

Serviço que chama a session:

public class AutenticacaoServices {

	public Adm_Usuario logar(Adm_Usuario user, String hibernateCfg ) {

		setDataBaseConfigOnSession(hibernateCfg);
		Session session = HibernateUtil.getSession();
		
		Adm_UsuarioDAO dao 		= new Adm_UsuarioDAO(session);
		Adm_Usuario admUsuario 	= dao.logar(user);
		session.close();
		
		setLoggedUserOnSession(admUsuario);	
		return admUsuario;
	}

	
}

A primeira pessoa que se loga no sistema instacia a sessionFactory.
Já a segunda, não instacia novamente, ela simplesmente utiliza a que já foi criada.
Eu precisaria que cada usuário instaciasse sua própria sessionFactory.

Testa agora com o método closeSession(), que eu fiz uma alteração, se não der certo, ai velho eu não sei o que pode ser, mas tenta assim, se avisa.

public static void closeSession() throws HibernateException { try { if (session != null) { session.close(); sessionFactory.close(); // Fechar o sessionFactory também } session = null; } catch (HibernateException e) { e.printStackTrace(); throw (e); } }