pessoal, to com um problema que não estou conseguindo resolver.
tenho uma appweb com hibernate.
há uma action generica com todos os controles genericos: controle de acesso, beans, transações, exceptions…
sempre quando a action generica é executada, a ultima session do hibernate é fechada. Alem disso abro uma transação (e session) e a fecho ao final da execução da action. Porem existe objetos (lazy do hibernate) que são carregados durante a execução do JSP, o que não me permite fechar a session ao final da action e sim no inicio da proxima action (ou a ultima session).
public abstract class GenericAction extends Action {
public final ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
Persistencia.closeSession();
ActionForward forward = null;
try{
Persistencia.initTransaction();
forward = onExecute(mapping, form, request, response);
Persistencia.commit();
}catch(PermissionException e){
Persistencia.rollback();
....
}catch(Exception e){
Persistencia.rollback();
...
}finally{
...
}
return forward;
}
public abstract ActionForward onExecute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception;
}
está correto o que eu fiz?
aparentemente está tudo ok.
starto o servidor e uso normalmente, sem problemas…
o que está acontecendo é que após um bom periodo sem uso, acontece um monte de erros no hibernate. parece que é um timeout. Talvez seja na ultima session que foi fechada ou então na SessionFactory que foi perdida.
um dos erros:
org.hibernate.exception.GenericJDBCException: could not execute query
