Problema com aplicação Web -

5 respostas
A

Tenho uma aplicação Web desenvolvida com JSF 2.0, Primafaces e Hibernate 3.6.
Quando inicio o Tomcat e executo a aplicação tudo funciona normalmente. Paro de navegar no sistema e depois de algum tempo (mais ou menos 1 hora), quando vou acessar de novo a aplicação ocorre o seguinte erro:

07:44:12,109  WARN JDBCExceptionReporter:100 - SQL Error: 0, SQLState: 08003
  07:44:12,109 ERROR JDBCExceptionReporter:101 - No operations allowed after connection closed.
  org.hibernate.exception.JDBCConnectionException: could not execute query
07:44:12,109 ERROR JDBCTransaction:155 - JDBC commit failed
  com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No operations allowed after connection closed.
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
	at java.lang.reflect.Constructor.newInstance(Unknown Source)
	at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
	at com.mysql.jdbc.Util.getInstance(Util.java:386)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1013)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:987)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:982)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:927)
	at com.mysql.jdbc.ConnectionImpl.throwConnectionClosedException(ConnectionImpl.java:1206)
	at com.mysql.jdbc.ConnectionImpl.checkClosed(ConnectionImpl.java:1198)
	at com.mysql.jdbc.ConnectionImpl.commit(ConnectionImpl.java:1625)
	at org.hibernate.transaction.JDBCTransaction.commitAndResetAutoCommit(JDBCTransaction.java:170)
	at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:146)
	at br.com.frontfaces.mb.LoginBean.efetuaLogin(LoginBean.java:43)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.apache.el.parser.AstValue.invoke(AstValue.java:262)
	at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:278)
	at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
	at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
	at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
	at javax.faces.component.UICommand.broadcast(UICommand.java:315)
	at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794)
	at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259)
	at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:928)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:539)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:300)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

The last packet successfully received from the server was 39.993.928 milliseconds ago.  The last packet sent successfully to the server was 0 milliseconds ago.
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
	at java.lang.reflect.Constructor.newInstance(Unknown Source)
	at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
	at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1116)
	at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3090)
	at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2979)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3520)
	at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1990)
	at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2151)
	at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2625)
	at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2119)
	at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2281)
	at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:208)
	at org.hibernate.loader.Loader.getResultSet(Loader.java:1808)
	at org.hibernate.loader.Loader.doQuery(Loader.java:697)
	at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259)
	at org.hibernate.loader.Loader.doList(Loader.java:2228)
	at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2125)
	at org.hibernate.loader.Loader.list(Loader.java:2120)
	at org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:118)
	at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1596)
	at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:306)
	at org.hibernate.impl.CriteriaImpl.uniqueResult(CriteriaImpl.java:328)
	at br.com.frontfaces.DAO.UsuarioDAO.login(UsuarioDAO.java:52)
	at br.com.frontfaces.mb.LoginBean.efetuaLogin(LoginBean.java:42)
	... 32 more
Caused by: java.io.EOFException: Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost.
	at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:2540)
	at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2990)
	... 52 more
20/04/2012 07:44:12 com.sun.faces.lifecycle.InvokeApplicationPhase execute
WARNING: #{loginBean.efetuaLogin}: org.hibernate.TransactionException: JDBC commit failed
javax.faces.FacesException: #{loginBean.efetuaLogin}: org.hibernate.TransactionException: JDBC commit failed
	at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:118)
	at javax.faces.component.UICommand.broadcast(UICommand.java:315)
	at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794)
	at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259)
	at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:928)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:539)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:300)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
Caused by: javax.faces.el.EvaluationException: org.hibernate.TransactionException: JDBC commit failed
	at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:102)
	at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
	... 23 more
Caused by: org.hibernate.TransactionException: JDBC commit failed
	at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:161)
	at br.com.frontfaces.mb.LoginBean.efetuaLogin(LoginBean.java:43)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.apache.el.parser.AstValue.invoke(AstValue.java:262)
	at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:278)
	at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
	at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
	... 24 more
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No operations allowed after connection closed.
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
	at java.lang.reflect.Constructor.newInstance(Unknown Source)
	at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
	at com.mysql.jdbc.Util.getInstance(Util.java:386)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1013)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:987)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:982)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:927)
	at com.mysql.jdbc.ConnectionImpl.throwConnectionClosedException(ConnectionImpl.java:1206)
	at com.mysql.jdbc.ConnectionImpl.checkClosed(ConnectionImpl.java:1198)
	at com.mysql.jdbc.ConnectionImpl.commit(ConnectionImpl.java:1625)
	at org.hibernate.transaction.JDBCTransaction.commitAndResetAutoCommit(JDBCTransaction.java:170)
	at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:146)
	... 33 more
Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

The last packet successfully received from the server was 39.993.928 milliseconds ago.  The last packet sent successfully to the server was 0 milliseconds ago.
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
	at java.lang.reflect.Constructor.newInstance(Unknown Source)
	at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
	at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1116)
	at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3090)
	at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2979)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3520)
	at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1990)
	at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2151)
	at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2625)
	at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2119)
	at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2281)
	at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:208)
	at org.hibernate.loader.Loader.getResultSet(Loader.java:1808)
	at org.hibernate.loader.Loader.doQuery(Loader.java:697)
	at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259)
	at org.hibernate.loader.Loader.doList(Loader.java:2228)
	at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2125)
	at org.hibernate.loader.Loader.list(Loader.java:2120)
	at org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:118)
	at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1596)
	at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:306)
	at org.hibernate.impl.CriteriaImpl.uniqueResult(CriteriaImpl.java:328)
	at br.com.frontfaces.DAO.UsuarioDAO.login(UsuarioDAO.java:52)
	at br.com.frontfaces.mb.LoginBean.efetuaLogin(LoginBean.java:42)
	... 32 more
Caused by: java.io.EOFException: Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost.
	at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:2540)
	at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2990)
	... 52 more
Depois da fase ...INVOKE_APPLICATION 5

Se eu reiniciar o TomCat, tudo volta a funcionar, e novamente se ficar 1 hora parado, a aplicação pára novamente...
Me parece que há algo de errado na configuração do Hibernate..... O arquivo de config. é o seguinte....

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC  
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"  
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">  
<hibernate-configuration>  
	<session-factory>  
		<property name="connection.url">jdbc:mysql://localhost:3306/bd</property>
		<property name="connection.username">root</property>
		<property name="connection.password">yy</property>
		<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
		<property name="transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property>
		<property name="hibernate.c3p0.min_size">5</property>		
		<property name="hibernate.c3p0.max_size">20</property>
		<property name="hibernate.c3p0.timeout">1800</property>
		<property name="hibernate.c3p0.max_statements">0</property>
		<property name="hibernate.show_sql">true</property>
		<property name="hibernate.format_sql">true</property>		
		<mapping class="br.com.frontfaces.modelo.Grupo"/>
		<mapping class="br.com.frontfaces.modelo.Usuario"/>
		<mapping class="br.com.frontfaces.modelo.GrupoUsuario"/>
		<mapping class="br.com.frontfaces.modelo.Proprietario"/>
		<mapping class="br.com.frontfaces.modelo.Propriedade"/>
		<mapping class="br.com.frontfaces.modelo.ProprietarioPropriedade"/>
	</session-factory>  
</hibernate-configuration>

Alguém sabe o que pode ser esta instabilidade do sistema??

5 Respostas

P

fala ae krust,

Paro de navegar no sistema

pf defini um pouco melhor o q seria essa pausa, esta no meio de uma operação com o bd?

pela exception a conexão esta sendo fechada ou perdeu comunicação com o bd…existe alguma instabilidade?

com jsf, a sessão chega a expirar?

att,

V

Sua conexão está sendo fechada.

07:44:12,109 ERROR JDBCExceptionReporter:101 - No operations allowed after connection closed.   
  org.hibernate.exception.JDBCConnectionException: could not execute query

Pode ser alguma configuração do parametro abaixo timeout, tenta altera-los para gente ver.

em &lt;property name="hibernate.c3p0.timeout"&gt;144.000&lt;/property&gt; &lt;property name="hibernate.c3p0.max_size"&gt;100&lt;/property&gt;

A

eae pedruhenrik,
É mais ou menos o seguinte…
Eu carrego o TomCat, eu entro no sistema (executa o query do método efetuaLogin do ManagedBean) e tudo OK. Navego por todas as telas, realizo inclusões, alterações, tudo certo…
Depois eu efetuo logout, fecho o browser e não faço mais nada… O TomCat ja esta ativo…
Depois de um tempo, abro novamente o browser, e a tela a index.xhtml carrega normalmente… Completo os campos login e senha e clico em OK, e… nada…
dá o erro… É na execução da query no mesmo método efetuaLogin, que desta vez não funciona… A session não abre…
Ai entro no TomCat, faço um “reload” da aplicação, e tudo volta a funcionar normalmente…
O Banco de dados permanece no ar o tempo todo… Testei reiniciar o BD e a aplicação não funcionou, mas reiniciando o aplicativo no TomCat, tudo volta a funcionar…
Detalhes importante: estou abrindo a session dentro do ManagedBean, mas faço isso em todo o sistema, e não no Listener (de acordo com a recomendação da Caelum)…
e o para o deploy, estou simplesmente gerando o arquivo “war” e colocando no root do TomCat… (como ainda sou novo em Java, não sei se é a melhor opção)…
Também não sei se devo desabilitar os Listeners (Ciclo de Vida, por exemplo, que me ajuda no debug) antes de colocar o sistema na produção…

oi vinicius8891,
vou testar com estas configurações passadas e verificar se resolve…

Obrigado pelas respostas…

A

Para resolver o problema tive que acrescentar uma configuração no hibernate.cfg.xml…

<property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>

e criar o arquivo c3p0.properties com o seguinte parâmetro…

c3p0.idleConnectionTestPeriod=1000

ai tudo funciona normalmente…

Abs

J

Estou com o mesmo problema.

Você teve que add algum jat na aplicação?

Aonde criou o arquivo c3p0.properties?

Criado 20 de abril de 2012
Ultima resposta 24 de ago. de 2013
Respostas 5
Participantes 4