Aplicacao dando erro no tomcat

30 respostas
T

pessoal, terminei minha aplicacao e coloquei ela p rodar no servidor tomcat 6
tava rodando tudo bem… mas qnd eu fui abrir ela hj de manha deu o seguinte erro:

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: org.hibernate.TransactionException: JDBC commit failed

requisicao.web.filter.ConexaoHibernateFilter.doFilter(ConexaoHibernateFilter.java:45)

org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:344)

org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:110)

org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84)

org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)

org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:98)

org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)

org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:95)

org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)

org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:79)

org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)

org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:55)

org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)

org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:36)

org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)

org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:188)

org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)

org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:106)

org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)

org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80)

org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)

org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:150)

org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)

org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)

root cause
org.hibernate.TransactionException: JDBC commit failed

org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:161)

requisicao.web.filter.ConexaoHibernateFilter.doFilter(ConexaoHibernateFilter.java:34)

org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:344)

org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:110)

org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84)

org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)

org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:98)

org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)

org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:95)

org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)

org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:79)

org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)

org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:55)

org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)

org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:36)

org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)

org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:188)

org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)

org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:106)

org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)

org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80)

org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)

org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:150)

org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)

org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)

root cause
com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException: Connection.close() has already been called. Invalid operation in this state.

com.mysql.jdbc.SQLError.createSQLException(SQLError.java:888)

com.mysql.jdbc.Connection.getMutex(Connection.java:3755)

com.mysql.jdbc.Connection.commit(Connection.java:2269)

org.hibernate.transaction.JDBCTransaction.commitAndResetAutoCommit(JDBCTransaction.java:170)

org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:146)

requisicao.web.filter.ConexaoHibernateFilter.doFilter(ConexaoHibernateFilter.java:34)

org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:344)

org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:110)

org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84)

org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)

org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:98)

org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)

org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:95)

org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)

org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:79)

org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)

org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:55)

org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)

org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:36)

org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)

org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:188)

org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)

org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:106)

org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)

org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80)

org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)

org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:150)

org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)

org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)

note The full stack trace of the root cause is available in the Apache Tomcat/6.0.29 logs.

O q pode ser ? Abracos

Eu tive q dar um start de novo na aplicacao (dentro do tomcat mannager) p ela voltar a subir ! Engracado, fui olhar a mesma aplicacao no servidor de testes daqui e ela ta
rodando… N to entendendo…

30 Respostas

T

Você chegou a usar a aplicação (depois que reiniciou seu Tomcat) e foi no mesmo lugar onde havia ocorrido o erro? Se sim, ocorreu tudo normal?

T

Além disso, veja esse link:

http://www.databasesandlife.com/automatic-reconnect-from-hibernate-to-mysql/

Irá te ajudar a configurar corretamente.

T

Valeu galera… Vou dar uma olhada agora :slight_smile:

T

Entao, eu restart a aplicao no tomcat e voltou ao normal… Como assim no mesmo lugar ? Sim, foi no mesmo servidor… Depois disso ficou normal.

Hj d manha deu o mesmo problema. Minha classe do Hibernate:

<hibernate-configuration>  
   <session-factory>  
      <!-- Configuração da conexão com o banco MySQL e dialeto -->  
      <property name="dialect">org.hibernate.dialect.MySQLDialect</property>  
      <property name="connection.driver_class">com.mysql.jdbc.Driver</property>  
      <property name="connection.url">jdbc:mysql://javaserver:3306/requmaterial</property>  
      <property name="connection.username">root</property>  
      <property name="connection.password">xxxxxxx</property>  
      <property name="conenection.datasource">java:/comp/env/jdbc/requmaterialBD</property>  
      <property name="current_session_context_class">thread</property>  
      <property name="hibernate.hbm2ddl.auto">update</property>  
  
      <!-- Usando as configurações do C3PO para pool de conexões -->  
      <property name="c3po.min_size">5</property>  
      <property name="c3po.max_size">20</property>  
      <property name="c3po.timeout">300</property>  
      <property name="c3po.max_statements">50</property>  
      <property name="c3po.idle_test_period">3000</property>  
        
      <!-- Configurações de debug -->  
      <!--  
      <property name="show_sql">true</property>  
      <property name="format_sql">true</property>  
      <property name="generate_statistics">true</property>  
      <property name="use_sql_comments">true</property>  
      -->      
        
      <!--  Mapeando classes -->   
        <mapping class="requisicao.usuario.Usuario"/>     
        <mapping class="requisicao.setor.Setor"/>     
        <mapping class="requisicao.item.Item"/>  
        <mapping class="requisicao.unidade.Unidade"/>  
        <mapping class="requisicao.rrequisicao.Requisicao"/>  
        <mapping class="requisicao.status.Status"/>     
        <mapping class="requisicao.itemrequisicao.ItemRequisicao"/>        
          
        
   </session-factory>  
</hibernate-configuration>  


Read more: http://javafree.uol.com.br/topic-890691-HTTP-Status-500-orghibernateTransactionException-JDBC-commit-failed.html#ixzz2U7VikUWq
public class ConexaoHibernateFilter implements Filter {  
  
   private SessionFactory   sf;  
  
   public void init(FilterConfig config) throws ServletException {  
      this.sf = HibernateUtil.getSessionFactory();  
   }  
  
   public void destroy() {  
   }  
  
   public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain) throws ServletException {  
  
      try {  
  
         this.sf.getCurrentSession().beginTransaction();  
  
         chain.doFilter(servletRequest, servletResponse);  
  
         this.sf.getCurrentSession().getTransaction().commit();  
         this.sf.getCurrentSession().close();  
  
      } catch (Throwable ex) {  
         try {  
            if (this.sf.getCurrentSession().getTransaction().isActive()) {  
               this.sf.getCurrentSession().getTransaction().rollback();  
            }  
         } catch (Throwable t) {  
            t.printStackTrace();  
         }  
         throw new ServletException(ex);  
      }  
   }  
  
}  


Read more: http://javafree.uol.com.br/topic-890691-HTTP-Status-500-orghibernateTransactionException-JDBC-commit-failed.html#ixzz2U7VoS1Mw
public class HibernateRenderResponsePhaseListener implements PhaseListener {  
     
   public HibernateRenderResponsePhaseListener() {  
      System.out.println("### HibernateRenderResponsePhaseListener");  
   }  
  
   public void beforePhase(PhaseEvent event) {  
   }  
  
   public void afterPhase(PhaseEvent event) {  
      SessionFactory sessionFactory = HibernateUtil.getSessionFactory();  
      Session session = sessionFactory.getCurrentSession();  
  
      try {  
         System.out.println("open: " + session.isOpen());  
         session.getTransaction().commit();  
         if (session.isOpen()) {  
            System.out.println("open: " + session.isOpen());  
            session.close();  
         }  
         System.out.println("open: " + session.isOpen());  
      } catch (Throwable ex) {  
         if (session.getTransaction().isActive()) {  
            session.getTransaction().rollback();  
         }  
      }  
   }  
  
   public PhaseId getPhaseId() {  
      return PhaseId.RENDER_RESPONSE;  
   }  
  
}  


Read more: http://javafree.uol.com.br/topic-890691-HTTP-Status-500-orghibernateTransactionException-JDBC-commit-failed.html#ixzz2U7Vw3r2m
public class HibernateRestoreViewPhaseListener implements PhaseListener {  
  
   public HibernateRestoreViewPhaseListener() {  
      System.out.println("### HibernateRestoreViewPhaseListener");  
   }  
  
   public void beforePhase(PhaseEvent event) {  
      SessionFactory sessionFactory = HibernateUtil.getSessionFactory();  
      sessionFactory.getCurrentSession().beginTransaction();  
   }  
  
   public void afterPhase(PhaseEvent event) {  
   }  
  
   public PhaseId getPhaseId() {  
      return PhaseId.RESTORE_VIEW;  
   }  
  
}  


Read more: http://javafree.uol.com.br/topic-890691-HTTP-Status-500-orghibernateTransactionException-JDBC-commit-failed.html#ixzz2U7W2UxYk
A

Bom dia,

conseguiu alguma solução? Tambem estou com o mesmo problema…
Fiz o deploy da minha aplicação para um servidor linux (CentOS 6) porem utilizo tomcat 7 e se não acesso a aplicação, depois de um certo tempo tento acessar novamente a aplicação até abre a tela de login, mas qdu digito os dados cai no mesmo erro que você esta tendo.

T

ahdeerre:
Bom dia,

conseguiu alguma solução? Tambem estou com o mesmo problema…
Fiz o deploy da minha aplicação para um servidor linux (CentOS 6) porem utilizo tomcat 7 e se não acesso a aplicação, depois de um certo tempo tento acessar novamente a aplicação até abre a tela de login, mas qdu digito os dados cai no mesmo erro que você esta tendo.

Opa

Ainda estou no mesmo erro tb, to procurando uma solucao… Assim q descobrir posto aqui p te ajudar. Me diz uma coisa:

O driver do mysql estao nas duas pastas lib (aplicacao e tomcat) ?
No livro diz, q qnd vc for exportar o arquivo .war o .jar do mysql tem q ta apenas na pasta lib do tomcat. N fiz esse teste ainda…
Vc pode colocar aqui o codigo relacionado ao Hibernate ? P a gnt fazer uma comparacao. Todas as classes q vc tem relacionadas a configuraacao do hibernate :slight_smile:

[]'s

A

tiago__:
ahdeerre:
Bom dia,

conseguiu alguma solução? Tambem estou com o mesmo problema…
Fiz o deploy da minha aplicação para um servidor linux (CentOS 6) porem utilizo tomcat 7 e se não acesso a aplicação, depois de um certo tempo tento acessar novamente a aplicação até abre a tela de login, mas qdu digito os dados cai no mesmo erro que você esta tendo.

Opa

Ainda estou no mesmo erro tb, to procurando uma solucao… Assim q descobrir posto aqui p te ajudar. Me diz uma coisa:

O driver do mysql estao nas duas pastas lib (aplicacao e tomcat) ?
No livro diz, q qnd vc for exportar o arquivo .war o .jar do mysql tem q ta apenas na pasta lib do tomcat. N fiz esse teste ainda…
Vc pode colocar aqui o codigo relacionado ao Hibernate ? P a gnt fazer uma comparacao. Todas as classes q vc tem relacionadas a configuraacao do hibernate :slight_smile:

[]'s

Sim, deixei nas duas pastas. Quando diz o deploy no servidor, o driver do mysql ja estava na aplicação, então fiz uma copia dele para a pasta lib do tomcat. Vou tentar fazer esse teste de deixar apenas no tomcat…

seguem as classes que uso hibernate:
HibernateUtil.java

package util;

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

public class HibernateUtil {
	
	private static SessionFactory sessionFactory;
	
	static{
		try{
			sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
		} catch (Throwable ex) {
			throw new ExceptionInInitializerError(ex);
		}
	}
	
	public static Session getSession(){
		return sessionFactory.openSession();
	}
}

hibernate.cfg.xml

<!DOCTYPE hibernate-configuration PUBLIC
	"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
	"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
	
<hibernate-configuration>
	<session-factory>
		<property name="dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
		<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="connection.url">jdbc:mysql://localhost:3306/sistemas</property>
		<property name="connection.username">root</property>
		<property name="connection.password">******</property>
		<property name="current_session_context_class">thread</property>
		<property name="hibernate.hbm2ddl.auto">update</property>
		
		<property name="hibernate.show_sql">true</property>
		<property name="hibernate.format_sql">true</property>
		
		<property name="hibernate.c3po.min_size">5</property>
		<property name="hibernate.c3po.max_size">20</property>
		<property name="hibernate.c3po.timeout">300</property>
		<property name="hibernate.c3po.idle_test_period">100</property>
		
		<property name="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</property>
		
		<mapping class="br.entidades.Cliente"/>
		<mapping class="br.entidades.Atendimento"/>
		<mapping class="br.entidades.Usuario"/>
		<mapping class="br.entidades.Produto"/>
		<mapping class="br.entidades.Venda"/>
		<mapping class="br.entidades.VendaUsuarioAcao"/>
		<mapping class="br.entidades.Problema"/>
		<mapping class="br.entidades.AlertaAtraso"/>
		
	</session-factory>
</hibernate-configuration>
T

ahdeerre:
tiago__:
ahdeerre:
Bom dia,

conseguiu alguma solução? Tambem estou com o mesmo problema…
Fiz o deploy da minha aplicação para um servidor linux (CentOS 6) porem utilizo tomcat 7 e se não acesso a aplicação, depois de um certo tempo tento acessar novamente a aplicação até abre a tela de login, mas qdu digito os dados cai no mesmo erro que você esta tendo.

Opa

Ainda estou no mesmo erro tb, to procurando uma solucao… Assim q descobrir posto aqui p te ajudar. Me diz uma coisa:

O driver do mysql estao nas duas pastas lib (aplicacao e tomcat) ?
No livro diz, q qnd vc for exportar o arquivo .war o .jar do mysql tem q ta apenas na pasta lib do tomcat. N fiz esse teste ainda…
Vc pode colocar aqui o codigo relacionado ao Hibernate ? P a gnt fazer uma comparacao. Todas as classes q vc tem relacionadas a configuraacao do hibernate :slight_smile:

[]'s

Sim, deixei nas duas pastas. Quando diz o deploy no servidor, o driver do mysql ja estava na aplicação, então fiz uma copia dele para a pasta lib do tomcat. Vou tentar fazer esse teste de deixar apenas no tomcat…

seguem as classes que uso hibernate:
HibernateUtil.java

package util;

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

public class HibernateUtil {
	
	private static SessionFactory sessionFactory;
	
	static{
		try{
			sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
		} catch (Throwable ex) {
			throw new ExceptionInInitializerError(ex);
		}
	}
	
	public static Session getSession(){
		return sessionFactory.openSession();
	}
}

hibernate.cfg.xml

<!DOCTYPE hibernate-configuration PUBLIC
	"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
	"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
	
<hibernate-configuration>
	<session-factory>
		<property name="dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
		<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="connection.url">jdbc:mysql://localhost:3306/sistemas</property>
		<property name="connection.username">root</property>
		<property name="connection.password">******</property>
		<property name="current_session_context_class">thread</property>
		<property name="hibernate.hbm2ddl.auto">update</property>
		
		<property name="hibernate.show_sql">true</property>
		<property name="hibernate.format_sql">true</property>
		
		<property name="hibernate.c3po.min_size">5</property>
		<property name="hibernate.c3po.max_size">20</property>
		<property name="hibernate.c3po.timeout">300</property>
		<property name="hibernate.c3po.idle_test_period">100</property>
		
		<property name="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</property>
		
		<mapping class="br.entidades.Cliente"/>
		<mapping class="br.entidades.Atendimento"/>
		<mapping class="br.entidades.Usuario"/>
		<mapping class="br.entidades.Produto"/>
		<mapping class="br.entidades.Venda"/>
		<mapping class="br.entidades.VendaUsuarioAcao"/>
		<mapping class="br.entidades.Problema"/>
		<mapping class="br.entidades.AlertaAtraso"/>
		
	</session-factory>
</hibernate-configuration>

E ai ? Resolveu ? Eu ja tirei o .jar do mysql da app, so deixei no tomcat da app. A app ta rodando no server, vamo v se resolve…

[]'s

A

Então fiz o teste de tirar o .jar da aplicação que ja etava rodando e aparentemente ficou funcionado. Porem fiz umas alterações no projeto e gerei um novo .war e fiz o deploy novamente no sistema, retirei o .jar da aplicação e mantive o do tomcat, resultado: a aplicação não logava mais, não eram encontrados os dados de login e senha.
Copiei o .jar para a aplicação e funcionou normalmente…
O meu erro aconteceu tipo quando deixei o servidor iniciado pela manha e acessei o sistema durante todo o dia (ultimo acesso 18hrs). No dia seguinte, quando tento acessar pela manhã ele apresenta o erro. Ate abre a pagina de login, mas quando informo os dados e clico em logar ele fica processando e mostra o erro. Para resolver, apenas reinicio o tomcat e logo em seguida volta a funcionar. O problema é ficar fazendo isso todo dia.
Estou buscando uma solução ainda, assim que tiver alguma ideia posto aqui pra ver se te ajuda tambem.

T

ahdeerre:

E ai ? Resolveu ? Eu ja tirei o .jar do mysql da app, so deixei no tomcat da app. A app ta rodando no server, vamo v se resolve…

Então fiz o teste de tirar o .jar da aplicação que ja etava rodando e aparentemente ficou funcionado. Porem fiz umas alterações no projeto e gerei um novo .war e fiz o deploy novamente no sistema, retirei o .jar da aplicação e mantive o do tomcat, resultado: a aplicação não logava mais, não eram encontrados os dados de login e senha.
Copiei o .jar para a aplicação e funcionou normalmente…
O meu erro aconteceu tipo quando deixei o servidor iniciado pela manha e acessei o sistema durante todo o dia (ultimo acesso 18hrs). No dia seguinte, quando tento acessar pela manhã ele apresenta o erro. Ate abre a pagina de login, mas quando informo os dados e clico em logar ele fica processando e mostra o erro. Para resolver, apenas reinicio o tomcat e logo em seguida volta a funcionar. O problema é ficar fazendo isso todo dia.
Estou buscando uma solução ainda, assim que tiver alguma ideia posto aqui pra ver se te ajuda tambem.

Certo, to aqui na expectativa tb… Qualquer coisa eu posto aqui.

[]'s

T

Outra coisa: Vc fez essa aplicacao baseada no livro “java para web” ?

A

Sim, muitas coisas eu mudei em relação ao sistema apresentado pelo livro, mas a base foi nesse livro.

T

Sim, muitas coisas eu mudei em relação ao sistema apresentado pelo livro, mas a base foi nesse livro.

Mesma situacao aqui… E ai ? Alguma novidade ?

[]'s

T

Sim, muitas coisas eu mudei em relação ao sistema apresentado pelo livro, mas a base foi nesse livro.

Mesma situacao aqui… E ai ? Alguma novidade ?

[]'s

Coloquei isso aqui p ve se resolve… Vamos ver no q da:

<property name="connection.url">jdbc:mysql://javaserver:3306/requmaterial</property>
		<property name="connection.relaxAutoCommit">true</property>
		<property name="connection.autoReconnect">true</property>
A

Sim, muitas coisas eu mudei em relação ao sistema apresentado pelo livro, mas a base foi nesse livro.

Mesma situacao aqui… E ai ? Alguma novidade ?

[]'s

Coloquei isso aqui p ve se resolve… Vamos ver no q da:

<property name="connection.url">jdbc:mysql://javaserver:3306/requmaterial</property> <property name="connection.relaxAutoCommit">true</property> <property name="connection.autoReconnect">true</property>

Olá tiago

funcionou??

Estive pesquisando e encontrei um topico aqui no GUJ mesmo com um problema similiar a esse e teve uma pessoa que sugeriu dar uma olhada nessa parte da documentação do tomcat
http://tomcat.apache.org/tomcat-7.0-doc/security-manager-howto.html
ainda estou verificando e tentando entender, caso consiga solucionar te aviso.

T

Sim, muitas coisas eu mudei em relação ao sistema apresentado pelo livro, mas a base foi nesse livro.

Mesma situacao aqui… E ai ? Alguma novidade ?

[]'s

Coloquei isso aqui p ve se resolve… Vamos ver no q da:

<property name="connection.url">jdbc:mysql://javaserver:3306/requmaterial</property> <property name="connection.relaxAutoCommit">true</property> <property name="connection.autoReconnect">true</property>

Olá tiago

funcionou??

Estive pesquisando e encontrei um topico aqui no GUJ mesmo com um problema similiar a esse e teve uma pessoa que sugeriu dar uma olhada nessa parte da documentação do tomcat
http://tomcat.apache.org/tomcat-7.0-doc/security-manager-howto.html
ainda estou verificando e tentando entender, caso consiga solucionar te aviso.

Nada :confused:

Mesmo erro…

A

eu tambem ainda não consegui resolver

J

Sim, muitas coisas eu mudei em relação ao sistema apresentado pelo livro, mas a base foi nesse livro.

Mesma situacao aqui… E ai ? Alguma novidade ?

[]'s

Coloquei isso aqui p ve se resolve… Vamos ver no q da:

<property name="connection.url">jdbc:mysql://javaserver:3306/requmaterial</property> <property name="connection.relaxAutoCommit">true</property> <property name="connection.autoReconnect">true</property>

estou com o mesmo problema…vc consegui resolver o problema?

J

vou colocar em baixo o código de erro que aparece em meu navegador…

em especial eu sublinhei uma parte no código que da uma dica para resolver o problema… mas ainda não consegui resolver…

type Exception report

message org.hibernate.TransactionException: JDBC begin failed:

description The server encountered an internal error that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: org.hibernate.TransactionException: JDBC begin failed: 
	com.evento.filtros.ConexaoHibernateFilter.doFilter(ConexaoHibernateFilter.java:44)

root cause

org.hibernate.TransactionException: JDBC begin failed: 
	org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:96)
	org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1463)
	sun.reflect.GeneratedMethodAccessor193.invoke(Unknown Source)
	sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	java.lang.reflect.Method.invoke(Method.java:597)
	org.hibernate.context.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:344)
	$Proxy78.beginTransaction(Unknown Source)
	com.evento.filtros.ConexaoHibernateFilter.doFilter(ConexaoHibernateFilter.java:32)

root cause

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:The last packet successfully received from the server was 73.125.696 milliseconds ago.  The last packet sent successfully to the server was 73.125.696 milliseconds ago. is longer than the server configured value of 'wait_timeout'. You should consider either expiring and/or testing connection validity before use in your application, increasing the server configured values for client timeouts, or using the Connector/J connection property 'autoReconnect=true' to avoid this problem.
	sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
	sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
	java.lang.reflect.Constructor.newInstance(Constructor.java:513)
	com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
	com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1117)
	com.mysql.jdbc.MysqlIO.send(MysqlIO.java:3829)
	com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2449)
	com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2629)
	com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2713)
	com.mysql.jdbc.ConnectionImpl.setAutoCommit(ConnectionImpl.java:5060)
	org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:91)
	org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1463)
	sun.reflect.GeneratedMethodAccessor193.invoke(Unknown Source)
	sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	java.lang.reflect.Method.invoke(Method.java:597)
	org.hibernate.context.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:344)
	$Proxy78.beginTransaction(Unknown Source)
	com.evento.filtros.ConexaoHibernateFilter.doFilter(ConexaoHibernateFilter.java:32)

root cause

java.net.SocketException: Software caused connection abort: socket write error
	java.net.SocketOutputStream.socketWrite0(Native Method)
	java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
	java.net.SocketOutputStream.write(SocketOutputStream.java:136)
	java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65)
	java.io.BufferedOutputStream.flush(BufferedOutputStream.java:123)
	com.mysql.jdbc.MysqlIO.send(MysqlIO.java:3810)
	com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2449)
	com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2629)
	com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2713)
	com.mysql.jdbc.ConnectionImpl.setAutoCommit(ConnectionImpl.java:5060)
	org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:91)
	org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1463)
	sun.reflect.GeneratedMethodAccessor193.invoke(Unknown Source)
	sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	java.lang.reflect.Method.invoke(Method.java:597)
	org.hibernate.context.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:344)
	$Proxy78.beginTransaction(Unknown Source)
	com.evento.filtros.ConexaoHibernateFilter.doFilter(ConexaoHibernateFilter.java:32)

note The full stack trace of the root cause is available in the Apache Tomcat/7.0.40 logs.

em especial eu sublinhei uma parte no código que da uma dica para resolver o problema… mas ainda não consegui resolver…

The last packet successfully received from the server was 73.125.696 milliseconds ago. The last packet sent successfully to the server was 73.125.696 milliseconds ago. is longer than the server configured value of ‘wait_timeout’. You should consider either expiring and/or testing connection validity before use in your application, increasing the server configured values for client timeouts, or using the Connector/J connection property ‘autoReconnect=true’ to avoid this problem.

T

jpmpassos:
vou colocar em baixo o código de erro que aparece em meu navegador…

em especial eu sublinhei uma parte no código que da uma dica para resolver o problema… mas ainda não consegui resolver…

type Exception report

message org.hibernate.TransactionException: JDBC begin failed:

description The server encountered an internal error that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: org.hibernate.TransactionException: JDBC begin failed: 
	com.evento.filtros.ConexaoHibernateFilter.doFilter(ConexaoHibernateFilter.java:44)

root cause

org.hibernate.TransactionException: JDBC begin failed: 
	org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:96)
	org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1463)
	sun.reflect.GeneratedMethodAccessor193.invoke(Unknown Source)
	sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	java.lang.reflect.Method.invoke(Method.java:597)
	org.hibernate.context.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:344)
	$Proxy78.beginTransaction(Unknown Source)
	com.evento.filtros.ConexaoHibernateFilter.doFilter(ConexaoHibernateFilter.java:32)

root cause

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:The last packet successfully received from the server was 73.125.696 milliseconds ago.  The last packet sent successfully to the server was 73.125.696 milliseconds ago. is longer than the server configured value of 'wait_timeout'. You should consider either expiring and/or testing connection validity before use in your application, increasing the server configured values for client timeouts, or using the Connector/J connection property 'autoReconnect=true' to avoid this problem.
	sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
	sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
	java.lang.reflect.Constructor.newInstance(Constructor.java:513)
	com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
	com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1117)
	com.mysql.jdbc.MysqlIO.send(MysqlIO.java:3829)
	com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2449)
	com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2629)
	com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2713)
	com.mysql.jdbc.ConnectionImpl.setAutoCommit(ConnectionImpl.java:5060)
	org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:91)
	org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1463)
	sun.reflect.GeneratedMethodAccessor193.invoke(Unknown Source)
	sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	java.lang.reflect.Method.invoke(Method.java:597)
	org.hibernate.context.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:344)
	$Proxy78.beginTransaction(Unknown Source)
	com.evento.filtros.ConexaoHibernateFilter.doFilter(ConexaoHibernateFilter.java:32)

root cause

java.net.SocketException: Software caused connection abort: socket write error
	java.net.SocketOutputStream.socketWrite0(Native Method)
	java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
	java.net.SocketOutputStream.write(SocketOutputStream.java:136)
	java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65)
	java.io.BufferedOutputStream.flush(BufferedOutputStream.java:123)
	com.mysql.jdbc.MysqlIO.send(MysqlIO.java:3810)
	com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2449)
	com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2629)
	com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2713)
	com.mysql.jdbc.ConnectionImpl.setAutoCommit(ConnectionImpl.java:5060)
	org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:91)
	org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1463)
	sun.reflect.GeneratedMethodAccessor193.invoke(Unknown Source)
	sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	java.lang.reflect.Method.invoke(Method.java:597)
	org.hibernate.context.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:344)
	$Proxy78.beginTransaction(Unknown Source)
	com.evento.filtros.ConexaoHibernateFilter.doFilter(ConexaoHibernateFilter.java:32)

note The full stack trace of the root cause is available in the Apache Tomcat/7.0.40 logs.

em especial eu sublinhei uma parte no código que da uma dica para resolver o problema… mas ainda não consegui resolver…

The last packet successfully received from the server was 73.125.696 milliseconds ago. The last packet sent successfully to the server was 73.125.696 milliseconds ago. is longer than the server configured value of ‘wait_timeout’. You should consider either expiring and/or testing connection validity before use in your application, increasing the server configured values for client timeouts, or using the Connector/J connection property ‘autoReconnect=true’ to avoid this problem.

Interessante… Vou dar uma olhada. To na mesma tb : /

J

Aparentemente consegui resolver o meu problema…

Pelo que pude ver ele não conseguia efetuar o código this.sf.getCurrentSession().getTransaction().commit(); pois a sessão tinha espirado e não tinha fechado… ou alguma coisa assim…não sei ao certo… abaixo tem o que fiz que resolveu meu problema…

OBS: utilizo como base para minha aplicação o Livro Programação Java Para Web

Tinha este código no meu filtro ConexaoHibernateFilter

try {
    this.sf.getCurrentSession().beginTransaction();
    chain.doFilter(request, response);
    this.sf.getCurrentSession().getTransaction().commit();
    this.sf.getCurrentSession().close();
} catch (Throwable ex) {
    try {
        if (this.sf.getCurrentSession().getTransaction().isActive()) {
            this.sf.getCurrentSession().getTransaction().rollback();
        }
    } catch (Throwable t) {
        t.printStackTrace();
    }
    throw new ServletException(ex);
}

simplesmente criei um outro trycatch que se der erro nesse código acima ele manda fechar a sessão…

então o meu código ficou assim…

try {
    try {
        this.sf.getCurrentSession().beginTransaction();
        chain.doFilter(request, response);
        this.sf.getCurrentSession().getTransaction().commit();
        this.sf.getCurrentSession().close();
    } catch (Throwable ex) {
        try {
            if (this.sf.getCurrentSession().getTransaction().isActive()) {
                this.sf.getCurrentSession().getTransaction().rollback();
            }
        } catch (Throwable t) {
            t.printStackTrace();
        }
        throw new ServletException(ex);
    }
} catch (Exception e) {
    this.sf.getCurrentSession().close();
    this.sf.getCurrentSession().beginTransaction();
    chain.doFilter(request, response);
    this.sf.getCurrentSession().getTransaction().commit();
    this.sf.getCurrentSession().close();
}

Fiz a alteração na sexta feira a tarde… e cheguei hoje no meu estagio segunda feira e ainda está funcionando graças a Deus…

Referencia:

stackoverflow.com/questions/13971460/com-mysql-jdbc-exceptions-jdbc4-mysqlnontransientconnectionexception-too-many-c

T

jpmpassos:
Aparentemente consegui resolver o meu problema…

Pelo que pude ver ele não conseguia efetuar o código this.sf.getCurrentSession().getTransaction().commit(); pois a sessão tinha espirado e não tinha fechado… ou alguma coisa assim…não sei ao certo… abaixo tem o que fiz que resolveu meu problema…

OBS: utilizo como base para minha aplicação o Livro Programação Java Para Web

Tinha este código no meu filtro ConexaoHibernateFilter

try {
    this.sf.getCurrentSession().beginTransaction();
    chain.doFilter(request, response);
    this.sf.getCurrentSession().getTransaction().commit();
    this.sf.getCurrentSession().close();
} catch (Throwable ex) {
    try {
        if (this.sf.getCurrentSession().getTransaction().isActive()) {
            this.sf.getCurrentSession().getTransaction().rollback();
        }
    } catch (Throwable t) {
        t.printStackTrace();
    }
    throw new ServletException(ex);
}

simplesmente criei um outro trycatch que se der erro nesse código acima ele manda fechar a sessão…

então o meu código ficou assim…

try {
    try {
        this.sf.getCurrentSession().beginTransaction();
        chain.doFilter(request, response);
        this.sf.getCurrentSession().getTransaction().commit();
        this.sf.getCurrentSession().close();
    } catch (Throwable ex) {
        try {
            if (this.sf.getCurrentSession().getTransaction().isActive()) {
                this.sf.getCurrentSession().getTransaction().rollback();
            }
        } catch (Throwable t) {
            t.printStackTrace();
        }
        throw new ServletException(ex);
    }
} catch (Exception e) {
    this.sf.getCurrentSession().close();
}

Fiz a alteração na sexta feira a tarde… e cheguei hoje no meu estagio segunda feira e ainda está funcionando graças a Deus…

Referencia:

stackoverflow.com/questions/13971460/com-mysql-jdbc-exceptions-jdbc4-mysqlnontransientconnectionexception-too-many-c

Q bom q resolveu :smiley:
Vou testar essa semana, to voltando de ferias…Qualquer coisa posto aqui

J

Fiz uma correção na minha ultima resposta …
adicionei os codigos

this.sf.getCurrentSession().beginTransaction();
    chain.doFilter(request, response);
    this.sf.getCurrentSession().getTransaction().commit();
    this.sf.getCurrentSession().close();

após this.sf.getCurrentSession().close();

pois antes precisava atualizar duas vezes pra funcionar normalmente…
agora esta em perfeito estado…

T

jpmpassos:
Fiz uma correção na minha ultima resposta …
adicionei os codigos

this.sf.getCurrentSession().beginTransaction();
    chain.doFilter(request, response);
    this.sf.getCurrentSession().getTransaction().commit();
    this.sf.getCurrentSession().close();

após this.sf.getCurrentSession().close();

pois antes precisava atualizar duas vezes pra funcionar normalmente…
agora esta em perfeito estado…

Tem como vc colar a sua classe ConexaoHibernateFilter aqui ? Tem alguns pequenos detalhes q parece q nao ta batendo aqui !

[]'s

T

E ai ? Resolveu o problema ?

J

tiago__:
jpmpassos:
Fiz uma correção na minha ultima resposta …
adicionei os codigos

this.sf.getCurrentSession().beginTransaction();
    chain.doFilter(request, response);
    this.sf.getCurrentSession().getTransaction().commit();
    this.sf.getCurrentSession().close();

após this.sf.getCurrentSession().close();

pois antes precisava atualizar duas vezes pra funcionar normalmente…
agora esta em perfeito estado…

Tem como vc colar a sua classe ConexaoHibernateFilter aqui ? Tem alguns pequenos detalhes q parece q nao ta batendo aqui !
[]'s

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.evento.filtros;

import com.evento.util.HibernateUtil;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import org.hibernate.SessionFactory;

/**
 *
 * @author João Paulo
 */
public class ConexaoHibernateFilter implements Filter {

    private SessionFactory sf;

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        this.sf = HibernateUtil.getSessionFactory();
    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        try {
            try {
                this.sf.getCurrentSession().beginTransaction();
                chain.doFilter(request, response);
                this.sf.getCurrentSession().getTransaction().commit();
                this.sf.getCurrentSession().close();
            } catch (Throwable ex) {
                try {
                    if (this.sf.getCurrentSession().getTransaction().isActive()) {
                        this.sf.getCurrentSession().getTransaction().rollback();
                    }
                } catch (Throwable t) {
                    t.printStackTrace();
                }
                throw new ServletException(ex);
            }
        } catch (Exception e) {
            this.sf.getCurrentSession().close();
            this.sf.getCurrentSession().beginTransaction();
            chain.doFilter(request, response);
            this.sf.getCurrentSession().getTransaction().commit();
            this.sf.getCurrentSession().close();
            //FacesContext.getCurrentInstance().getExternalContext().redirect("index.jsf");
        }

    }

    @Override
    public void destroy() {
    }
}
T
jpmpassos:
tiago__:
jpmpassos:
Fiz uma correção na minha ultima resposta ... adicionei os codigos
this.sf.getCurrentSession().beginTransaction();
    chain.doFilter(request, response);
    this.sf.getCurrentSession().getTransaction().commit();
    this.sf.getCurrentSession().close();
após
this.sf.getCurrentSession().close();

pois antes precisava atualizar duas vezes pra funcionar normalmente...
agora esta em perfeito estado...

Tem como vc colar a sua classe ConexaoHibernateFilter aqui ? Tem alguns pequenos detalhes q parece q nao ta batendo aqui !
[]'s

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.evento.filtros;

import com.evento.util.HibernateUtil;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import org.hibernate.SessionFactory;

/**
 *
 * @author João Paulo
 */
public class ConexaoHibernateFilter implements Filter {

    private SessionFactory sf;

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        this.sf = HibernateUtil.getSessionFactory();
    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        try {
            try {
                this.sf.getCurrentSession().beginTransaction();
                chain.doFilter(request, response);
                this.sf.getCurrentSession().getTransaction().commit();
                this.sf.getCurrentSession().close();
            } catch (Throwable ex) {
                try {
                    if (this.sf.getCurrentSession().getTransaction().isActive()) {
                        this.sf.getCurrentSession().getTransaction().rollback();
                    }
                } catch (Throwable t) {
                    t.printStackTrace();
                }
                throw new ServletException(ex);
            }
        } catch (Exception e) {
            this.sf.getCurrentSession().close();
            this.sf.getCurrentSession().beginTransaction();
            chain.doFilter(request, response);
            this.sf.getCurrentSession().getTransaction().commit();
            this.sf.getCurrentSession().close();
            //FacesContext.getCurrentInstance().getExternalContext().redirect("index.jsf");
        }

    }

    @Override
    public void destroy() {
    }
}

Vou deixar minha classe = a sua, vamos ver se vai dar certo !

Vc ta usando o autoReconnect=true na classe hibernate.cfg.xml ? Nessa linha aqui:

<property name="connection.url">jdbc:mysql://javaserver:3306/requmaterial?autoReconnect=true</property>
J
tiago__:
jpmpassos:
tiago__:
jpmpassos:
Fiz uma correção na minha ultima resposta ... adicionei os codigos
this.sf.getCurrentSession().beginTransaction();
    chain.doFilter(request, response);
    this.sf.getCurrentSession().getTransaction().commit();
    this.sf.getCurrentSession().close();
após
this.sf.getCurrentSession().close();

pois antes precisava atualizar duas vezes pra funcionar normalmente...
agora esta em perfeito estado...

Tem como vc colar a sua classe ConexaoHibernateFilter aqui ? Tem alguns pequenos detalhes q parece q nao ta batendo aqui !
[]'s

Minhas configurações do hibernate.cfg.xml

<property name="current_session_context_class">thread</property>
        <property name="connection.relaxAutoCommit">true</property>  
        <property name="connection.autoReconnect">true</property>
        <property name="hibernate.connection.autocommit">true</property>
        <property name="hibernate.connection.release_mode">on_close</property>
        
    
        <!-- Usando as configurações do C3PO para pool de conexões -->
        <property name="c3po.min_size">5</property>
        <property name="c3po.max_size">20</property>
        <property name="c3po.timeout">300</property>
        <property name="c3po.max_statements">50</property>
        <property name="c3po.idle_test_period">3000</property>
        
        
        <!-- Configurações de debug -->
        <property name="show_sql">true</property>
        <property name="format_sql">true</property>
        <property name="generate_statistics">true</property>
        <property name="use_sql_comments">true</property>
        <!-- Mapeando classes -->
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.evento.filtros;

import com.evento.util.HibernateUtil;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import org.hibernate.SessionFactory;

/**
 *
 * @author João Paulo
 */
public class ConexaoHibernateFilter implements Filter {

    private SessionFactory sf;

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        this.sf = HibernateUtil.getSessionFactory();
    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        try {
            try {
                this.sf.getCurrentSession().beginTransaction();
                chain.doFilter(request, response);
                this.sf.getCurrentSession().getTransaction().commit();
                this.sf.getCurrentSession().close();
            } catch (Throwable ex) {
                try {
                    if (this.sf.getCurrentSession().getTransaction().isActive()) {
                        this.sf.getCurrentSession().getTransaction().rollback();
                    }
                } catch (Throwable t) {
                    t.printStackTrace();
                }
                throw new ServletException(ex);
            }
        } catch (Exception e) {
            this.sf.getCurrentSession().close();
            this.sf.getCurrentSession().beginTransaction();
            chain.doFilter(request, response);
            this.sf.getCurrentSession().getTransaction().commit();
            this.sf.getCurrentSession().close();
            //FacesContext.getCurrentInstance().getExternalContext().redirect("index.jsf");
        }

    }

    @Override
    public void destroy() {
    }
}

Vou deixar minha classe = a sua, vamos ver se vai dar certo !

Vc ta usando o autoReconnect=true na classe hibernate.cfg.xml ? Nessa linha aqui:

<property name="connection.url">jdbc:mysql://javaserver:3306/requmaterial?autoReconnect=true</property>
T

Entao, deixei a classe ConexaoHibernateFilter = a sua e o erro continua.

Fui no log do tomcat onde app ta rodando e achei isso aqui :

Jul 09, 2013 7:33:18 AM org.apache.coyote.http11.Http11Protocol pause
INFO: Pausing Coyote HTTP/1.1 on http-80
Jul 09, 2013 7:33:19 AM org.apache.catalina.core.StandardService stop
INFO: Stopping service Catalina
Jul 09, 2013 7:33:19 AM org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc
SEVERE: The web application [/rm] registered the JDBC driver [com.mysql.jdbc.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.
Jul 09, 2013 7:33:19 AM org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
SEVERE: The web application [/rm] appears to have started a thread named [MySQL Statement Cancellation Timer] but has failed to stop it. This is very likely to create a memory leak.
Jul 09, 2013 7:33:19 AM org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
SEVERE: The web application [/rm] appears to have started a thread named [MySQL Statement Cancellation Timer] but has failed to stop it. This is very likely to create a memory leak.
Jul 09, 2013 7:33:19 AM org.apache.catalina.loader.WebappClassLoader checkThreadLocalMapForLeaks
SEVERE: The web application [/rm] created a ThreadLocal with key of type [com.sun.faces.util.Util$1] (value [com.sun.faces.util.Util$1@21e0926d]) and a value of type [java.util.HashMap] (value [{com.sun.faces.patternCache={ = }}]) but failed to remove it when the web application was stopped. This is very likely to create a memory leak.
Jul 09, 2013 7:33:20 AM org.apache.coyote.http11.Http11Protocol destroy
INFO: Stopping Coyote HTTP/1.1 on http-80
Jul 09, 2013 7:33:26 AM org.apache.catalina.core.AprLifecycleListener init
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Apache Software Foundation\Tomcat 6.0\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0;;.
Jul 09, 2013 7:33:26 AM org.apache.coyote.http11.Http11Protocol init
INFO: Initializing Coyote HTTP/1.1 on http-80
Jul 09, 2013 7:33:26 AM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 449 ms
Jul 09, 2013 7:33:26 AM org.apache.catalina.core.StandardService start
INFO: Starting service Catalina
Jul 09, 2013 7:33:26 AM org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/6.0.36
Jul 09, 2013 7:33:26 AM org.apache.catalina.startup.HostConfig deployDescriptor
INFO: Deploying configuration descriptor manager.xml
Jul 09, 2013 7:33:27 AM org.apache.catalina.startup.HostConfig deployDescriptor
INFO: Deploying configuration descriptor rm.xml
Jul 09, 2013 7:33:27 AM org.apache.catalina.core.StandardContext addApplicationListener
INFO: The listener “com.sun.faces.config.ConfigureListener” is already configured for this context. The duplicate definition has been ignored.

[b]
ps:

O tomcat q ta instaldo no server q a app ta rodando eh versao 6. O server q ta insataldo na maquina q eu fiz
a app (localhost) eh a versao 7. Sera q eh por causa disso ? Vou deixar a classe ConexaoHibernateFilter como
estava antes ( =ao livro) pois nao tive sucesso com as modificacoes. Vou colocar o uma parte do log do tomcat aqui.
[/b]

J

Sobre meu Toncat
Em minha aplicação utilizo toncat mais atual, e sempre quando sai um novo eu passo a utiliza-lo…

Sobre o Erro
Se vc perceber o erro já mudou… pode ser q o problema anterior foi resolvido… porque as alterações na classe ConexaoHibernateFilter que fiz não causa erro pois simplesmente quando ele da um erro geral, como antes tava dando no JDBC commit failed ela entra na exceção, que fecha a sessão que não teve como fechar pois parou na linha do commit e tenta tudo novamente…

não vejo as alterações da minha classe podem casar esse erro…

try {
    try {
        this.sf.getCurrentSession().beginTransaction();
        chain.doFilter(request, response);
        this.sf.getCurrentSession().getTransaction().commit();
        this.sf.getCurrentSession().close();
    } catch (Throwable ex) {
        try {
            if (this.sf.getCurrentSession().getTransaction().isActive()) {
                this.sf.getCurrentSession().getTransaction().rollback();
            }
        } catch (Throwable t) {
            t.printStackTrace();
        }
        throw new ServletException(ex);
    }
} catch (Exception e) {
    this.sf.getCurrentSession().close();
    this.sf.getCurrentSession().beginTransaction();
    chain.doFilter(request, response);
    this.sf.getCurrentSession().getTransaction().commit();
    this.sf.getCurrentSession().close();
}

uma observação: em minha aplicação não utilizo esta classe HibernateRestoreViewPhaseListener e nem essa HibernateRenderResponsePhaseListener…

Criado 26 de fevereiro de 2013
Ultima resposta 13 de jul. de 2013
Respostas 30
Participantes 4