Aplicação apresentando erro intermitente

11 respostas
G

Caros Colegas

Temos uma aplicação desenvolvida com o struts, estamos usando o tomcat 5.0.25 e mysql.
A aplicação funciona normalmente, mas de um dia para o outro ela para de funcionar. mas se restartada funciona o o dia inteiro (mesmo acessando de tempos em tempos). alguem ja viu algo parecido?

11 Respostas

J

Oi

Gilson_Anselmo, eu, inclusive ja li sobre isso aqui no Forum do PJ mesmo… Se eu não me engano é alguma configuração do Tomcat que faz isso…

Vou pesquisar, se eu achar, posto aqui.

T+

G

Valeu,

Justamente éssa é minha dúvida, será algumas configuração no Tomcat ou a aplicação não esta configurada corretamente (por exemplo struts-config.xml incorreto) …

M

gilson, tu ta usando connection pool pra acesar o MySQL ou ta fazendo direto a conexão?

G

A conexão é direta, a aplicação esta em teste em duas maquinas. E o extranho é que mesmo que niguem acesse a aplicaçao ela para de funcionar, durante o dia, após restartada a aplicação funciona normalmente no dia seguinte a aplicação precisa ser restartarda. ai fica dificil achar o problema.

Vou postar em um outro momento o log do tomcat para voces darem uma olhada. mas desde ja agradeço.

abraço

G

Na realidade, estou usando o padrão do struts

no struts-config:
data-sources
data-source
set-property property=“autoCommit” value=“true”/set-property
set-property property=“description” value=“RCPE Data Source
Configuration”/set-property
set-property property=“driverClass"
value=“org.gjt.mm.mysql.Driver”/set-property
set-property property=“maxCount” value=“4”/set-property>
set-property property=“minCount” value=“2”/set-property>
set-property property=“password” value=”"/set-property>
set-property property="url"
value=“jdbc:mysql://192.168.0.212/rcpe”/set-property
set-property property=“user” value=“epeople”/set-property
set-property property=“password” value=“rCpe”/set-property
data-source
data-sources

no action:

DataSource ds = getDataSource(request);

Connection con = ds.getConnection();
M

ih cara… eu não sei oq pode ser, realmente ta chato de descobrir oq é… se todas as noites a aplicação para de funcionar… bem, só vendo os logs do horário mesmo… :roll:

G

estou mandando somente uma parte do log e tem alguns comentários.

02/07/2004 17:10:42 org.apache.struts.legacy.GenericDataSource getConnection

INFO:    Return allocated connection, activeCount=2, useCount=1

*** Etapa 2: após o try

*** Etapa 3: após criar o stmt

*** Etapa 4: após setar o stmt

*** Etapa 5: após executar o query

*** Etapa 5: antes do finally

*** Etapa 6: fechando o rs

*** Etapa 6: fechando o stmt    *******{ate aqui ok }

02/07/2004 17:10:42 org.apache.struts.legacy.GenericDataSource returnConnection

INFO:   releaseConnection(), activeCount=2, useCount=0

02/07/2004 17:10:42 org.apache.struts.legacy.GenericDataSource getConnection

INFO:   getConnection()

02/07/2004 17:10:42 org.apache.struts.legacy.GenericDataSource getConnection

INFO:    Check for timeout, activeCount=2, useCount=0

02/07/2004 17:10:42 org.apache.struts.legacy.GenericDataSource getConnection

INFO:    Found available connection

02/07/2004 17:10:42 org.apache.struts.legacy.GenericDataSource getConnection

INFO:    Return allocated connection, activeCount=2, useCount=1

02/07/2004 17:10:42 org.apache.struts.legacy.GenericDataSource returnConnection

INFO:   releaseConnection(), activeCount=2, useCount=0

02/07/2004 17:10:49 org.apache.struts.util.PropertyMessageResources <init>

INFO: Initializing, config=org.apache.struts.taglib.logic.LocalStrings, returnNull=true

*** Etapa 1: construtor

03/07/2004 10:31:55 org.apache.struts.legacy.GenericDataSource getConnection

INFO:   getConnection()

03/07/2004 10:31:55 org.apache.struts.legacy.GenericDataSource getConnection

INFO:    Check for timeout, activeCount=2, useCount=0

03/07/2004 10:31:55 org.apache.struts.legacy.GenericDataSource getConnection

INFO:    Found available connection

03/07/2004 10:31:55 org.apache.struts.legacy.GenericDataSource getConnection

INFO:    Return allocated connection, activeCount=2, useCount=1

*** Etapa 2: após o try

*** Etapa 3: após criar o stmt

*** Etapa 4: após setar o stmt

***java.lang.NullPointerException    ********{aqui ja deu pau}

at rcpe.db.LogonDAO.getUser(LogonDAO.java:46)

at rcpe.actions.LogonAction.execute(LogonAction.java:22)

at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)

at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)

at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)

at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)

at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)

at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)

at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)

at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)

at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)

at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)

at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)

at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)

at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:793)

at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:702)

at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:571)

at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:644)

at java.lang.Thread.run(Thread.java:534)

03/07/2004 10:31:55 org.apache.struts.legacy.GenericDataSource returnConnection

INFO:   releaseConnection(), activeCount=2, useCount=0

03/07/2004 10:48:27 org.apache.catalina.core.StandardContext reload

INFO: Reloading this Context has started                                       ******{aplicacao restartada}

03/07/2004 10:48:27 org.apache.struts.legacy.GenericDataSource getConnection

INFO:   getConnection()

03/07/2004 10:48:27 org.apache.struts.legacy.GenericDataSource getConnection

INFO:    Check for timeout, activeCount=2, useCount=0

03/07/2004 10:48:27 org.apache.struts.legacy.GenericDataSource getConnection

INFO:    Found available connection

03/07/2004 10:48:27 org.apache.struts.legacy.GenericDataSource getConnection

INFO:    Return allocated connection, activeCount=2, useCount=1

03/07/2004 10:48:27 org.apache.struts.legacy.GenericDataSource getConnection

INFO:   getConnection()

03/07/2004 10:48:27 org.apache.struts.legacy.GenericDataSource getConnection

INFO:    Check for timeout, activeCount=1, useCount=1

03/07/2004 10:48:27 org.apache.struts.legacy.GenericDataSource getConnection

INFO:    Found available connection

03/07/2004 10:48:27 org.apache.struts.legacy.GenericDataSource getConnection

INFO:    Return allocated connection, activeCount=1, useCount=2

03/07/2004 10:48:27 org.apache.struts.util.PropertyMessageResources <init>

INFO: Initializing, config=org.apache.struts.util.LocalStrings, returnNull=true

03/07/2004 10:48:27 org.apache.struts.util.PropertyMessageResources <init>

INFO: Initializing, config=org.apache.struts.action.ActionResources, returnNull=true

03/07/2004 10:48:27 org.apache.struts.util.PropertyMessageResources <init>

INFO: Initializing, config=resources.application, returnNull=true

03/07/2004 10:48:27 org.apache.struts.legacy.GenericDataSource createConnection

INFO:    createConnection()

03/07/2004 10:48:27 org.apache.struts.legacy.GenericDataSource createConnection

INFO:    createConnection()

03/07/2004 10:48:28 org.apache.struts.tiles.TilesPlugin init

INFO: Tiles definition factory loaded for module ‘’.

03/07/2004 10:48:28 org.apache.struts.validator.ValidatorPlugIn initResources

INFO: Loading validation rules file from '/WEB-INF/validator-rules.xml’

03/07/2004 10:48:28 org.apache.struts.validator.ValidatorPlugIn initResources

INFO: Loading validation rules file from '/WEB-INF/validation.xml’

03/07/2004 10:48:31 org.apache.struts.util.PropertyMessageResources <init>

INFO: Initializing, config=org.apache.struts.taglib.logic.LocalStrings, returnNull=true

03/07/2004 10:48:31 org.apache.struts.tiles.TilesRequestProcessor initDefinitionsMapping

INFO: Tiles definition factory found for request processor ‘’.

03/07/2004 10:48:31 org.apache.struts.util.PropertyMessageResources <init>

INFO: Initializing, config=org.apache.struts.actions.LocalStrings, returnNull=true

03/07/2004 10:48:31 org.apache.struts.util.PropertyMessageResources <init>

INFO: Initializing, config=org.apache.struts.taglib.html.LocalStrings, returnNull=true

03/07/2004 10:48:31 org.apache.struts.util.PropertyMessageResources <init>

INFO: Initializing, config=org.apache.struts.taglib.html.LocalStrings, returnNull=true

03/07/2004 10:48:31 org.apache.struts.util.PropertyMessageResources <init>

INFO: Initializing, config=org.apache.struts.taglib.html.LocalStrings, returnNull=true

03/07/2004 10:48:31 org.apache.struts.util.PropertyMessageResources <init>

INFO: Initializing, config=org.apache.struts.taglib.html.LocalStrings, returnNull=true

03/07/2004 10:48:31 org.apache.struts.util.PropertyMessageResources <init>

INFO: Initializing, config=org.apache.struts.util.LocalStrings, returnNull=true

03/07/2004 10:48:31 org.apache.struts.util.PropertyMessageResources <init>

INFO: Initializing, config=org.apache.struts.taglib.html.LocalStrings, returnNull=true

03/07/2004 10:48:31 org.apache.struts.util.PropertyMessageResources <init>

INFO: Initializing, config=org.apache.struts.taglib.html.LocalStrings, returnNull=true

03/07/2004 10:48:31 org.apache.struts.util.PropertyMessageResources <init>

INFO: Initializing, config=org.apache.struts.taglib.html.LocalStrings, returnNull=true

03/07/2004 10:48:31 org.apache.struts.util.PropertyMessageResources <init>

INFO: Initializing, config=org.apache.struts.taglib.html.LocalStrings, returnNull=true

*** Etapa 1: construtor

03/07/2004 10:48:41 org.apache.struts.legacy.GenericDataSource getConnection

INFO:   getConnection()

03/07/2004 10:48:41 org.apache.struts.legacy.GenericDataSource getConnection

INFO:    Check for timeout, activeCount=2, useCount=0

03/07/2004 10:48:41 org.apache.struts.legacy.GenericDataSource getConnection

INFO:    Found available connection

03/07/2004 10:48:41 org.apache.struts.legacy.GenericDataSource getConnection

INFO:    Return allocated connection, activeCount=2, useCount=1

*** Etapa 2: após o try

*** Etapa 3: após criar o stmt

*** Etapa 4: após setar o stmt

*** Etapa 5: após executar o query

*** Etapa 5: antes do finally

*** Etapa 6: fechando o rs

*** Etapa 6: fechando o stmt                        ***** {ai conecta normalmente}

03/07/2004 10:48:41 org.apache.struts.legacy.GenericDataSource returnConnection

INFO:   releaseConnection(), activeCount=2, useCount=0

03/07/2004 10:48:41 org.apache.struts.legacy.GenericDataSource getConnection

INFO:   getConnection()

03/07/2004 10:48:41 org.apache.struts.legacy.GenericDataSource getConnection

INFO:    Check for timeout, activeCount=2, useCount=0

03/07/2004 10:48:41 org.apache.struts.legacy.GenericDataSource getConnection

INFO:    Found available connection

03/07/2004 10:48:41 org.apache.struts.legacy.GenericDataSource getConnection

INFO:    Return allocated connection, activeCount=2, useCount=1

03/07/2004 10:48:41 org.apache.struts.legacy.GenericDataSource returnConnection

INFO:   releaseConnection(), activeCount=2, useCount=0

03/07/2004 10:48:41 org.apache.struts.util.PropertyMessageResources <init>

INFO: Initializing, config=org.apache.struts.taglib.bean.LocalStrings, returnNull=true

03/07/2004 10:48:41 org.apache.struts.util.PropertyMessageResources <init>

INFO: Initializing, config=org.apache.struts.taglib.html.LocalStrings, returnNull=true

03/07/2004 10:48:41 org.apache.struts.util.PropertyMessageResources <init>

INFO: Initializing, config=org.apache.struts.taglib.html.LocalStrings, returnNull=true

03/07/2004 10:48:41 org.apache.struts.util.PropertyMessageResources <init>

INFO: Initializing, config=org.apache.struts.taglib.html.LocalStrings, returnNull=true

03/07/2004 10:48:41 org.apache.struts.util.PropertyMessageResources <init>

INFO: Initializing, config=org.apache.struts.taglib.bean.LocalStrings, returnNull=true

03/07/2004 10:48:41 org.apache.struts.util.PropertyMessageResources <init>

INFO: Initializing, config=org.apache.struts.taglib.logic.LocalStrings, returnNull=true

03/07/2004 10:48:45 org.apache.struts.legacy.GenericDataSource getConnection

INFO:   getConnection()

03/07/2004 10:48:45 org.apache.struts.legacy.GenericDataSource getConnection

INFO:    Check for timeout, activeCount=2, useCount=0

03/07/2004 10:48:45 org.apache.struts.legacy.GenericDataSource getConnection

INFO:    Found available connection

03/07/2004 10:48:45 org.apache.struts.legacy.GenericDataSource getConnection

INFO:    Return allocated connection, activeCount=2, useCount=1

03/07/2004 10:48:45 org.apache.struts.legacy.GenericDataSource returnConnection

INFO:   releaseConnection(), activeCount=2, useCount=0
M

esse erro ta relacionado a conexão com o banco… ta usando DataSource né? …pode postar pra gente teu código de conexão referente ao DAO? é Tomcat ou JBoss?

G

Sim estou usando Datasource e o servidor é o tomcat 5

segue

import java.util.*;
import java.sql.*;
import rcpe.forms.*;

public class LogonDAO extends DAO&#123;

	private final String SQL_PATH = &quot;resources/sql_logon.properties&quot;;
	private Properties sql;
	
	public LogonDAO&#40;&#41;&#123;
		try&#123;
			sql = new Properties&#40;&#41;;
			sql.load&#40;this.getClass&#40;&#41;.getClassLoader&#40;&#41;.getResourceAsStream&#40;SQL_PATH&#41;&#41;;
		&#125;catch &#40;Exception e&#41;&#123;
			System.out.println&#40;&quot;Err&#58;&quot; + e.toString&#40;&#41;&#41;;
		&#125;
	&#125;
	
	public UserForm getUser&#40;String username&#41;&#123;
		UserForm user = null;
		PreparedStatement stmt = null;
		ResultSet rs = null;
		try&#123;
			stmt = con.prepareStatement&#40;sql.getProperty&#40;&quot;select.authentication&quot;&#41;&#41;;
			stmt.setString&#40;1,username&#41;;
			rs = stmt.executeQuery&#40;&#41;;

			if &#40;rs.next&#40;&#41;&#41;&#123;
				user = new UserForm&#40;&#41;;
				user.setId_contato&#40;rs.getString&#40;sql.getProperty&#40;&quot;field.id_contato&quot;&#41;&#41;&#41;;
				user.setNm_contato&#40;rs.getString&#40;sql.getProperty&#40;&quot;field.nm_contato&quot;&#41;&#41;&#41;;
				user.setEmail&#40;rs.getString&#40;sql.getProperty&#40;&quot;field.email&quot;&#41;&#41;&#41;;
				user.setNm_senha&#40;rs.getString&#40;sql.getProperty&#40;&quot;field.nm_senha&quot;&#41;&#41;&#41;;				
				user.setId_tipo&#40;rs.getString&#40;sql.getProperty&#40;&quot;field.id_tipo&quot;&#41;&#41;&#41;;
			&#125;
			
		&#125;catch &#40;Exception e&#41;&#123;
			System.out.println&#40;&quot;Err&#58;&quot; + e.toString&#40;&#41;&#41;;
		&#125;finally&#123;
			try&#123;
				stmt.close&#40;&#41;;
				rs.close&#40;&#41;;
				//con.close&#40;&#41;;
			&#125;catch &#40;SQLException e&#41;&#123;
				System.out.println&#40;&quot;Err&#58;&quot; + e.toString&#40;&#41;&#41;;
			&#125;
		&#125;
		
		return user;
	&#125;
	
	public static LogonDAO getInstance&#40;&#41;&#123;
		if &#40;instance == null&#41;&#123;
			instance = new LogonDAO&#40;&#41;;
		&#125;
		return &#40;LogonDAO&#41;instance;
	&#125;


***********************

classe DAO

import java.sql.*;
/**
 * @author Administrator
 *
 * To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Generation - Code and Comments
 */
public abstract class DAO &#123;
	protected Connection con;
	protected static DAO instance;
	
	/**
	 * @return Returns the con.
	 */
	public Connection getConnection&#40;&#41; &#123;
		return con;
	&#125;

	/**
	 * @param con The con to set.
	 */
	public void setConnection&#40;Connection con&#41; &#123;
		this.con = con;
	&#125;

&#125;

[color="green"][size="11"]Mantenha seu código mais claro para os outros usuários usando a tag CODE - matheus[/size][/color]

M

o exemplo de datasource q trabalho com Tomcat 5 é diferente, bem.. primeiro eu edito o server.xml do Tomcat, colocando o seguinte conteúdo dentro de <GlobalNamingResources>:

&lt;Resource name=&quot;jdbc/PostgresDS&quot;  auth=&quot;Container&quot; type=&quot;javax.sql.DataSource&quot; /&gt;
	&lt;ResourceParams name=&quot;jdbc/PostgresDS&quot;&gt;
	
		&lt;parameter&gt;&lt;name&gt;factory&lt;/name&gt;&lt;value&gt;org.apache.commons.dbcp.BasicDataSourceFactory&lt;/value&gt;&lt;/parameter&gt;		
		&lt;parameter&gt;&lt;name&gt;driverClassName&lt;/name&gt;&lt;value&gt;org.postgresql.Driver&lt;/value&gt;&lt;/parameter&gt;
		&lt;parameter&gt;&lt;name&gt;url&lt;/name&gt;&lt;value&gt;jdbc&#58;postgresql&#58;//192.168.17.5&#58;5432/bancoDeDados&lt;/value&gt;&lt;/parameter&gt;
		
		&lt;parameter&gt;&lt;name&gt;username&lt;/name&gt;&lt;value&gt;postgres&lt;/value&gt;&lt;/parameter&gt;
		&lt;parameter&gt;&lt;name&gt;password&lt;/name&gt;&lt;value&gt;postgres&lt;/value&gt;&lt;/parameter&gt;		
		&lt;parameter&gt;&lt;name&gt;maxActive&lt;/name&gt;&lt;value&gt;20&lt;/value&gt;&lt;/parameter&gt;		
		&lt;parameter&gt;&lt;name&gt;maxIdle&lt;/name&gt;&lt;value&gt;10&lt;/value&gt;&lt;/parameter&gt;				
		&lt;parameter&gt;&lt;name&gt;maxWait&lt;/name&gt;&lt;value&gt;100&lt;/value&gt;&lt;/parameter&gt;				
		
	&lt;/ResourceParams&gt;

q é a configuração do DS, ai dentro da tag <Host> do mesmo arquivo eu coloco o contexto da app:

&lt;Context path=&quot;/Postgres&quot; docBase=&quot;C&#58;\eclipse\workspace\testeDao&quot; debug=&quot;1&quot;&gt;

  &lt;!-- Link to the user database we will get roles from --&gt;
  &lt;ResourceLink name=&quot;jdbc/PostgresDS&quot; global=&quot;jdbc/PostgresDS&quot; /&gt;

&lt;/Context&gt;

e no código do DAO eu acho o DataSource assim:

InitialContext context = new InitialContext&#40;&#41;;
Context ctx = &#40;Context&#41; context.lookup&#40;&quot;java&#58;comp/env/&quot;&#41;;
DataSource dataSource = &#40;javax.sql.DataSource&#41;ctx.lookup&#40;&quot;jdbc/PostgresDS&quot;&#41;;

ai a cada q a camada cliente usa um método do DAO, ele chama uma conexão com o banco do DataSource... executa o método, e devolve a conexão pro pool, bem, nao respondi tua duvida né.. é q não reconheci teu código... eu uso bem diferente... :roll:

G

Colegas

depois de tanto bater a cabeça, optamos por substituir o banco mysql pelo postgresql, pois encontramos em alguns foruns de discussão varios usuários relatando o mesmo problema com o mysql. Como nós ja haviá-mos atualizado a versao do mysql e o problema continuou, decidimos substituir o banco, o que de cara resolveu nosso problema.

valeu

Criado 29 de junho de 2004
Ultima resposta 28 de jul. de 2004
Respostas 11
Participantes 3