inclui uma chamada ao m�todo cancel() do timer no destroy do servlet:
/**
* Este m�todo � invocado no momento em que a inst�ncia do servlet
* ir� se tornar eleg�vel para o GC
*/
public void destroy() {
try {
timer.cancel();
} catch(Exception error) {
System.err.println("Problem trying to cancel the timer: " +
error.getMessage());
}
}
-----Mensagem original-----
De: Fco. Deisimar Nobre Jr. [mailto:[EMAIL PROTECTED]]
Enviada em: sexta-feira, 3 de janeiro de 2003 15:12
Para: [EMAIL PROTECTED]
Assunto: RES: [cejug-discussao] Servlet em background
Realmente eu n�o tinha pensado nessa possibilidade.
Estudando mais um pouco e com a dica do Gaucho(Felipe) criei esse
servlet:
package meuPacote;
import javax.servlet.*;
import java.util.Timer;
import java.util.TimerTask;
public class servletBackground extends GenericServlet {
private static int id = 0;
private int myId;
private static int intervalo;
private Timer timer = new Timer();
public void init(ServletConfig config){
intervalo = Integer.parseInt(config.getInitParameter("intervalo"));
id = id + 1;
myId = id;
System.out.println("ServletConfig - " + myId + " - Iniciou");
System.out.println("Intervalo = " + intervalo + " segundos");
timer.schedule(new tarefa(), 0, intervalo * 1000);
}
public void finalize(){
System.out.println("ServletConfig - " + myId + " - Fim");
}
public void service(ServletRequest request, ServletResponse response){
}
class tarefa extends TimerTask {
private int count = 0;
public void run() {
count = count + 1;
System.out.println("ServletConfig - Executou pela " + count + "
vez.");
// timer.cancel(); //Terminate the timer thread
}
}
}
No arquivo web.xml eu adicionei o seguinte trecho?
<servlet>
<servlet-name>freteBackground</servlet-name>
<servlet-class>meuPacote.servletBackground</servlet-class>
<init-param>
<param-name>intervalo</param-name>
<param-value>60</param-value>
</init-param>
<load-on-startup>3</load-on-startup>
</servlet>
Agora vem a minha d�vida: Quando reinicio o servi�o(Tomcat 4.0.4) tenho
a seguinte saida no arquivo stdout.log:
ServletConfig - 1 - Iniciou
Intervalo = 60 segundos
ServletConfig - Executou pela 1 vez.
ServletConfig - 1 - Iniciou
Intervalo = 60 segundos
ServletConfig - Executou pela 1 vez.
ServletConfig - Executou pela 2 vez.
ServletConfig - Executou pela 2 vez.
ServletConfig - Executou pela 3 vez.
ServletConfig - Executou pela 3 vez.
ServletConfig - Executou pela 4 vez.
ServletConfig - Executou pela 4 vez.
Isso esta me fazendo concluir que esta sendo criada duas inst�ncias do
servlet, e o mais curioso � que n�o sei porque que o myId n�o mudou. Algu�m
pode me explicar o que de fato esta acontecendo??? e como resolver??
Obrigado!!
===========================================
Francisco Deisimar Nobre J�nior
Analista de Sistemas - CIT - M. Dias Branco
===========================================
-----Mensagem original-----
De: Marcelo de Paula Bezerra [mailto:[EMAIL PROTECTED]]
Enviada em: sexta-feira, 3 de janeiro de 2003 10:27
Para: [EMAIL PROTECTED]
Assunto: Re: [cejug-discussao] Servlet em background
Seu banco de dados n�o suporta triggers?
----------------------------------------------------------------------------
--------------- Ceara' Java User Group Para cancelar sua assinatura,
envie um e-mail para: [EMAIL PROTECTED] Para mais
informacoes, mande um e-mail para: [EMAIL PROTECTED] Falar com o
administrador? e-mail para: [EMAIL PROTECTED]
-------------------------------------------------------------------------------------------
Ceara' Java User Group
Para cancelar sua assinatura, envie um e-mail para: [EMAIL PROTECTED]
Para mais informacoes, mande um e-mail para: [EMAIL PROTECTED]
Falar com o administrador? e-mail para: [EMAIL PROTECTED]