Erro no Hibernate ao publicar no servidor Linux

Olá pessoal,

estou tendo um problema ao publicar minha aplicacao no servidor linux. minha aplicacao utiliza hibernate. abaixo segue a classe HibernateUtil e um trecho de codigo q faz uso desta classe.

package br.com.shifti.ri.framework.dao.util;

import java.util.HashMap;
import java.util.Map;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

import br.com.shifti.ri.framework.base.Tenant;
import br.com.shifti.ri.framework.util.RISessionUtil;
import br.com.shifti.ri.framework.util.SystemUtils;

public class HibernateUtil {
	static Log logger = LogFactory.getLog(HibernateUtil.class);
	
	private static HibernateUtil instance;
	
	private static final String TENANT_CONFIG_FILE = "hibernate.Tenants.cfg.xml";
	
	private Map<Tenant, SessionFactory> sessions;
	private SessionFactory sessionDefault = new Configuration().configure("hibernate.Tenants.cfg.xml").buildSessionFactory();
	
	private SessionFactory sessionClientes = new Configuration().configure("hibernate.LMF.cfg.xml").buildSessionFactory();
	
	private HibernateUtil() {
		this.sessions = new HashMap<Tenant, SessionFactory>();
	}
	
	private SessionFactory getSessionFactory() {
		logger.debug("Quer pegar o Session Factory");
		SessionFactory retorno = null;
		Tenant tenant = SystemUtils.getTenant(RISessionUtil.getSessionId());
		if (tenant != null) {
			retorno = sessionClientes;
		} else {
			retorno = sessionDefault;
		}
		return retorno;
	}
	
	public Session getCurrentSession() {
		SessionFactory sessionFactory = getSessionFactory();
		logger.debug("Pegou o Session Factory do metodo 'getSessionFactory' Session Factory: " + sessionFactory);
		return sessionFactory.getCurrentSession();
	}
	
	public static HibernateUtil getInstance() {
		if (instance == null) {
			instance = new HibernateUtil();
		}
		return instance;
	}
	
}

a bronca é que quando eu passo +/- um minuto sem fazer nenhuma requisicao, ocorre um erro no acesso ao mysql. segue o erro:

bem, caso alguem tenha alguma dica… valeu!

abs
galera!

Pessoal,

alguém tem alguma idéia do que possa ser?

vlw
abs

Já achei qual o problema. Em meu servidor (Locaweb) o timeout das conexoes ao Mysql é de 15s, por questoes de performance. Entao depois desse tempo ocorre esse erro.

Fiz o teste para toda vez eu criar a sessionFactory e o erro nao ocorre mais. Porém, como já era esperado, toda vez o cara criar a SessionFactory é inviável, pois demora muito.

Olá danilo.dct,

Estou tentando fazer esse gerenciamento de multi-tenant … porem estou com dificuldades…

Meu getSession esta desta forma …

	public static Session getSession() throws HibernateException {
	    if (factory == null) {
			new ConexaoManager();
		}
	    Session session = (Session) threadLocal.get();
        if ((session == null) || (!session.isOpen()))
            session = factory.openSession();
        threadLocal.set(session);
		return session;
	}

E no lugar do hibernate.cfg.xml, utilizo as configuração na propria classe de conexão.

Obrigado.