Rodando Servlet automaticamente

Ola pessoal,
estou desenvolvendo um aplicação em OC4J (Oracle) e banco de dados tbm Oracle.

Preciso fazer um servlet (ou classe normal) que de tempos em tempos rode e veja se existe algum registro vencido no banco de dados, monte um email e envie para o responsável.

minha duvida, como faço essa thread em ambiente web? o que eu configuro no servidor para disparar ela ?

obs.: o cliente nao quer que eu use o banco de dados para isso, nem o OS (linux) o sistema deve funcionar por si so!

Procure algum exemplo sobre a interface ServletContextListener, pode ser útil no seu problema!!!

Fala Max,

Tô fazendo um exemplo simples e já jogo aqui!!!

bah, valeu!

Fiz um exemplo bem simples mostrando uma forma utilização. Da uma analizada e utiliza da forma mais apropriada para sua aplicação.

Essa é a classe listener:

import javax.servlet.;
import java.util.
;

public class TestarContexto extends Thread implements ServletContextListener{

int contador = 0;
long tempoEspera = 10000; //10s

public void contextInitialized(ServletContextEvent evt){

start();

}

public void run(){
	while(true){
		if(contador  == 100){
		contador = 0;
				//Aqui você pode chamar o metodo de negócios
				conectar();
				System.out.println("Coloca pra dormir um minuto 10s");
				try{
				sleep(tempoEspera);
				}catch(InterruptedException interx){}
		}
	contador++;
	
	}	
}

public void conectar(){
System.out.println("Hello World com contagem 100 em 100");
}


public void contextDestroyed(ServletContextEvent evt){}

}

No arquivo web.xml inclua a seguinte taq:

<listener>
	<listener-class>TestarContexto</listener-class>
</listener>

Acho que é só!!!

Gostaria de algumas opiniões sobre essa esse exemplo. Existe algum design pattern para esse tipo de evento?

max, dders:

Acho que um jeito melhor de fazer isso seria, ao inves de disparar uma thread num listener, usar um scheduler. Alguns application servers já vem com um serviço do gênero, só não sei se o OC4J tem um.

Isso eu desconheço!!!

Scheduler é algum tipo de monitor do próprio app?

Mais ou menos… eh tipo um cron (ou agendador de tarefas, pra vcs windowzers :)) do próprio appserver.

Na ultima versao da J2EE, isso jah tah na especificacao ateh :smiley:

Entendido!!!