Tomcat - conexao encerrada - SOS!

Dae!
ajudo no desenvolvimento do portal Ecocentro.org, hospedado na locaweb, com java dedicado, e estamos com um puta problema… Vejam: nossa aplicação funciona durante um certo tempo e derrepente a conexão é fechada, voltando somente após inicialização do container Tomcat. Algumas configurações de pool de conexão para Hibernate (dbcp) são de acesso restrito da locaweb, ou seja, não podemos modificá-las para que haja uma disponibilidade de conexões maiores e tal. Mas nada explica um fechamento total da conexão e o hibernate não poder recuperá-la.

o portal está em www.ecocentro.org/inicio.do
(as imagens não abrem de primeira, problemas de sessao, de um refresh q rola - alias, outro problema q temos)

um abraço!!

[color=“red”]* Editado por Carneiro
Tópico criado em: JSP / Servlets
Movido para: Ferramentas Java
[/color]

A Locaweb acha que tem um ambiente Java, O ambiente deles é limitado, comaprtilhado com muitas pessoas, cheio de frescuras de segurança e te consome muito tmepo pra configarar.

Pega um VPS na Rose Hosting que acaba a tua dor de cabeça.

Concordo com o Franklin

A Locaweb tem um ambiente compartilhado muito limitado, no qual eles prezam muito por segurança. O que realmente é um ponto forte deles, mas no teu caso, quais são as mensagens que aparecem no log da tua aplicação ? Com elas dá pra ter um diagnóstico melhor do que tá acontecendo e passar pra uma solução.

Anderson.

SCJP 5.0

Rumo ao SCWCD em Setembro de 2007 !

Olá Anderson.

Eu e Felipe somos parceiros, veja só:

Nossa aplicação realmente está muito restrita na Locaweb, meu contexto e datasource ao máximo está conforme abaixo, e não podemos modificá-lo:

maxActive=8 e maxIdle=8 está baixo concorda?

…<maxActive=“8” maxIdle=“8” maxWait=“10000” removeAbandoned=“true” removeAbandonedTimeout=“15” logAbandoned=“true” />

<Service name=“Tomcat-Standalone”>
<Connector port=“8061” address="127.0.0.1"
maxThreads=“512” minSpareThreads=“15” maxSpareThreads="75"
enableLookups=“false” redirectPort=“443” debug=“0” maxKeepAliveRequests=“1” connectionTimeout="10000"
acceptCount=“100” protocol=“AJP/1.3” />

&lt;!-- An Engine represents the entry point (within Catalina) that processes
     every request.  The Engine implementation for Tomcat stand alone
     analyzes the HTTP headers included with the request, and passes them
     on to the appropriate Host (virtual host). --&gt;

&lt;!-- Define the top level container in our container hierarchy --&gt;
&lt;Engine name="Standalone" defaultHost="localhost" debug="0"&gt;

  &lt;Valve className="br.com.locaweb.tomcat.LocaWebValve" arquivo="/var/log/java/ecocentro2/ecocentro2.log" /&gt;

  &lt;!-- Realm className="org.apache.catalina.realm.UserDatabaseRealm"
             debug="0" resourceName="UserDatabase"/ --&gt;

  &lt;Host name="ecocentro2.tempsite.ws"&gt;
     &lt;Alias&gt;ecocentro.org&lt;/Alias&gt;
     &lt;Alias&gt;suacasasustentavel.com.br&lt;/Alias&gt;
 &lt;Alias&gt;www.suacasasustentavel.com.br&lt;/Alias&gt;
 &lt;Alias&gt;suacasasustentavel.com&lt;/Alias&gt;
     &lt;Alias&gt;www.suacasasustentavel.com&lt;/Alias&gt;
     &lt;Alias&gt;casasustentavel.com.br&lt;/Alias&gt;
     &lt;Alias&gt;www.casasustentavel.com.br&lt;/Alias&gt;
     &lt;Alias&gt;casasustentavel.com&lt;/Alias&gt;
     &lt;Alias&gt;www.casasustentavel.com&lt;/Alias&gt;
     &lt;Alias&gt;ecocentro2.locaweb.com.br&lt;/Alias&gt;
     &lt;Alias&gt;www.ecocentro.org&lt;/Alias&gt;
     &lt;Alias&gt;wap.ecocentro.org&lt;/Alias&gt;

     &lt;Context path="" docBase="/home/ecocentro2/public_html/" debug="0" crossContext="false" reloadable="false" workDir="/home/ecocentro2/tomcat/work/"&gt;
     &lt;Resource name="jdbc/ecocentro2" auth="Container" type="javax.sql.DataSource" factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory" username="ecocentro2" password="XXXXXX" driverClassName="org.postgresql.Driver" url="jdbc:postgresql://hm405.locaweb.com.br:5432/ecocentro2" maxActive="8" maxIdle="8" maxWait="10000" removeAbandoned="true" removeAbandonedTimeout="15" logAbandoned="true" /&gt;
     &lt;Realm className="org.apache.catalina.realm.DataSourceRealm" dataSourceName="jdbc/ecocentro2" localDataSource="true" userTable="ca_usuario_pessoa" userNameCol="nomelogin" userCredCol="senha" userRoleTable="ca_usuario_role" roleNameCol="roleid" debug="99"/&gt;
     &lt;/Context&gt;
     &lt;Context path="/teste" docBase="/home/ecocentro2/public_html/teste/" debug="0" crossContext="false" reloadable="false" workDir="/home/ecocentro2/tomcat/work/teste/"/&gt;
   &lt;/Host&gt;
&lt;/Engine&gt;

</Service>

Este são os erros gerados:

2007-05-28 00:04:35,126 [TP-Processor9] ERROR org.hibernate.util.JDBCExceptionReporter - Connection is closed.
2007-05-28 00:04:35,164 [TP-Processor9] ERROR org.hibernate.util.JDBCExceptionReporter - Connection is closed.
2007-05-28 00:04:35,165 [TP-Processor9] ERROR org.hibernate.util.JDBCExceptionReporter - Connection is closed.
2007-05-28 00:04:35,165 [TP-Processor9] ERROR org.apache.catalina.core.ContainerBase.[Standalone].[ecocentro2.tempsite.ws].[/].[action] - Servlet.service() for servlet action threw exception
org.hibernate.exception.GenericJDBCException: could not inspect JDBC autocommit mode

Caused by: java.sql.SQLException: Connection is closed.
at org.apache.tomcat.dbcp.dbcp.DelegatingConnection.checkOpen(DelegatingConnection.java:291)
at org.apache.tomcat.dbcp.dbcp.DelegatingConnection.getAutoCommit(DelegatingConnection.java:241)
at org.apache.tomcat.dbcp.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.getAutoCommit(PoolingDataSource.java:221)
at org.hibernate.jdbc.ConnectionManager.isAutoCommit(ConnectionManager.java:128)
at org.hibernate.jdbc.JDBCContext.afterNontransactionalQuery(JDBCContext.java:328)
… 36 more

Olá, eu tive um problema parecido com uma aplicação, mas ela não estava hospedada na LocalWeb.
A minha situação era a seguinte, havia uma conexão única que era feita com o banco e compartilhada para toda a aplicação.
Acontece que quando o banco era parada nos tinhamos que fazer um reload na aplicação.
Nossa conexão também era perdida devido a inatividade.
A primeira solução que encontramos foi a de desenvolver uma maneira em que impedisse a conexão de ficar muito tempo inativa e fizemos isso em uma thread a parte.
O problema dessa abordagem é que ela pode levar a um consumo exagerado de memória do servidor.
O ideal é usar um pool de conexões, vcs podem fazer isso através do Spring, o único cuidado que vc deve tomar é o de fechar as conexões após utiliza-las.

[quote=Franklin]A Locaweb acha que tem um ambiente Java, O ambiente deles é limitado, comaprtilhado com muitas pessoas, cheio de frescuras de segurança e te consome muito tmepo pra configarar.

Pega um VPS na Rose Hosting que acaba a tua dor de cabeça.[/quote] CONCORDO PLENAMENTE!

Contratamos os serviços da Locaweb e só deu dor de cabeça. Assinamos o KingHost e voilá… tudo OK.

Estou com o mesmo problema de conexão encerrada… configurei o context.xml: &lt;Context&gt; &lt;Resource name="jdbc/sistema" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000" username="root" password="root" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/sistema?autoReconnect=true" /&gt; &lt;/Context&gt; mas recebo a seguinte exception: java.lang.UnsupportedOperationException: Not supported by BasicDataSource
Stacktrace: [quote]java.lang.UnsupportedOperationException: Not supported by BasicDataSource
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:899)
at org.hibernate.connection.DatasourceConnectionProvider.getConnection(DatasourceConnectionProvider.java:89)
at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:446)
at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:167)
at org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:142)
at org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:85)
at org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1353)
at br.com.sistema.filter.HibernateSessionFilter.doFilter(HibernateSessionFilter.java:20)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)[/quote]

Alguém sabe resolver?