Problema intermitente com hibernate

5 respostas
lpicanco

Salve pessoal, tudo jóia ?

Estou tendo um probleminha aqui na minha aplicação que usa Webwork + Hibernate. O Banco é o SAP DB 7.5

A minha aplicação starta normalmente, mas depois de um tempo de uso, ela começa a lançar essa exceção: org.hibernate.exception.JDBCConnectionException: could not execute query

Aí eu dou um restart na aplicação e ela volta a funcionar normalmente por determinado tempo.

Valeu pela ajuda, pessoal.

Segue abaixo o stack trace:

Hibernate: select userbean0_.COD_USUARIO as COD1_, userbean0_.NME_USUARIO as NME2_1_, userbean0_.DSC_EMAIL as DSC3_1_, userbean0_.IND_FUNCIONARIO_CLIENTE as IND4_1_, userbean0_.NMR_MATRICULA_CNPJ as NMR5_1_, userbean0_.NME_EMPRESA as NME6_1_, userbean0_.NMR_TELEFONE as NMR7_1_, userbean0_.NMR_RAMAL as NMR8_1_, userbean0_.NMR_CELULAR as NMR9_1_, userbean0_.IND_ACESSO as IND10_1_, userbean0_.NME_LOGIN as NME11_1_, userbean0_.IND_ATIVO as IND12_1_, userbean0_.DTA_CADASTRO as DTA13_1_, userbean0_.NME_SENHA as NME14_1_, userbean0_.IND_CADASTRADO_POR as IND15_1_, userbean0_.DTA_INI_VALIDADE as DTA16_1_, userbean0_.DTA_FIM_VALIDADE as DTA17_1_, userbean0_.DSC_SERIAL_CD as DSC18_1_ from T002_USUARIOS userbean0_ where userbean0_.NME_LOGIN=?

[ WARN] 10:57:24,247 JDBCExceptionReporter:71 - SQL Error: -708, SQLState: 08000

[ERROR] 10:57:24,247 JDBCExceptionReporter:72 - [-708] Could not send data.

[ WARN] 10:57:24,247 JDBCExceptionReporter:71 - SQL Error: -708, SQLState: 08000

[ERROR] 10:57:24,247 JDBCExceptionReporter:72 - [-708] Could not send data.

[ERROR] 10:57:24,247 DispatcherUtils:245 - Could not execute action

org.hibernate.exception.JDBCConnectionException: could not execute query

at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:66)

at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)

at org.hibernate.loader.Loader.doList(Loader.java:1596)

at org.hibernate.loader.Loader.list(Loader.java:1577)

at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:395)

at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:271)

at org.hibernate.impl.SessionImpl.list(SessionImpl.java:844)

at org.hibernate.impl.QueryImpl.list(QueryImpl.java:74)

5 Respostas

Anderson_Schmidt

Olá,

Pelo que entendi, essa mesma consulta funciona logo após o deploy e depois pára, por algum motivo qualquer. Se for isso, alguma coisa está matando sua conectividade com o banco, pode ser na lógica ou fisicamente mesmo.

Flws!

Alexandre_Vilas_Boas

voce esta encerrando a sessao do hibernate no final das transacoes?

G

Ola… estou com o mesmo problema…

org.hibernate.exception.JDBCConnectionException: could not execute query org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:74) org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43) org.hibernate.loader.Loader.doList(Loader.java:2147) org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2028) org.hibernate.loader.Loader.list(Loader.java:2023) org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:95) org.hibernate.impl.SessionImpl.list(SessionImpl.java:1569) org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:283) br.com.unimedsudoestemg.DAO.ColaboradorDAO.lista(ColaboradorDAO.java:49) br.com.unimedsudoestemg.uniponto.logic.RegistroLogic.listaDia(RegistroLogic.java:135) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) java.lang.reflect.Method.invoke(Unknown Source) org.vraptor.reflection.ReflectionUtil.invoke(ReflectionUtil.java:75) org.vraptor.reflection.JavaMethod.invoke(JavaMethod.java:31) org.vraptor.component.DefaultLogicMethod.execute(DefaultLogicMethod.java:94) org.vraptor.interceptor.ExecuteLogicInterceptor.intercept(ExecuteLogicInterceptor.java:37) org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:82) org.vraptor.interceptor.SettingAndValidationInterceptor.intercept(SettingAndValidationInterceptor.java:133) org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:82) org.vraptor.interceptor.InjectionInterceptor.intercept(InjectionInterceptor.java:45) org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:82) org.vraptor.interceptor.ComponentLookupInterceptor.intercept(ComponentLookupInterceptor.java:43) org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:82) org.vraptor.interceptor.RegisterAttributesInteceptor.intercept(RegisterAttributesInteceptor.java:57) org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:82) org.vraptor.core.VRaptorExecution.execute(VRaptorExecution.java:91) org.vraptor.core.VRaptorController.execute(VRaptorController.java:59) org.vraptor.VRaptorServlet.service(VRaptorServlet.java:53) javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

Nao é em todos metodos do DAO que eu dou o session.close();

alguns eu fecho e outras nao…

qual é a melhor maneira pra fazer pra evitar esse erro acima?

[]'s
Geraldo

G

vejam como esta meu DAO...
Preciso fechar a sessao depois das consulas?
tem algo de errado nele que possa estar causando este erro?

public class ColaboradorDAO {
	private Session session;

	public ColaboradorDAO() {
		this.session = new HibernateFactory().getSession();
	}

	public void salva(Colaborador colaborador) {
		// TODO Auto-generated method stub
		Transaction transaction = session.beginTransaction();
		this.session.save(colaborador);
		transaction.commit();
		this.session.close();
	}

	public Colaborador pegaColaborador(Colaborador colaborador) {
		// TODO Auto-generated method stub
		return (Colaborador) this.session.load(Colaborador.class, colaborador.getCod());
	}

	public void update(Colaborador colaborador){
		Transaction transaction = session.beginTransaction();
		this.session.update(colaborador);
		transaction.commit();
		this.session.close();	
	}
	public void del(Colaborador colaborador){
		Transaction transaction = session.beginTransaction();
		this.session.delete(colaborador);
		transaction.commit();
		this.session.close();	
	}

	public List<Colaborador> lista() {
		// TODO Auto-generated method stub
		
		return this.session.createCriteria(Colaborador.class).addOrder(Order.asc("nome")).list();
		     
	}
	
	
}

[]'s

Guilherme_Silveira

Tente usar um Filtro ou Interceptor para fechar e abrir suas sessions, assim voce garante que sempre esta com elas fechadas.

Ja o motivo para ele nao econseguir rodar a query deve estar mais detalhado no arquivo de log, tente dar uma olhada nele.

Criado 17 de janeiro de 2007
Ultima resposta 20 de jan. de 2007
Respostas 5
Participantes 5