Escalonamento dentro so sistema web

Boa tarde caros amigos do GUJ…

Preciso de colocar dentro de uma aplicação web em java com estrutura de código baseada em servlets e jsp
um procedimento que todos os dias em um determinado horário, por exemplo as 00:00 hrs ele realize umas transações
na base de dados.

Estou usando PostgreSQL e não conheço uma forma de fazer isso usando esse SGBD.

Dentro do código java eu precisava que quando a minha aplicação web estiver rodando, o objeto que ainda não descobrí, imaginei uma Thread mas preciso da ajuda de vocês para confirmar isso, realizasse esse procedimento.

Obrigado pela atenção de todos…

Que tipo de transações no banco são essa q você quer fazer.

Na empresa q trabalho utilizamos o postgresql em várias aplicações, e certos procedimento que queremos que ele faça, tipo backup, vacumm, etc, usamos o agendador de tarefas do windows.

Mas dá pra você fazer por thread também, sem problemas, também temos esse tipo de situação, em alguns sistemas utilizamos alguns agentes que coletam determinados dados e processam utilizando threads.

[quote=tarssajava]Boa tarde caros amigos do GUJ…

Preciso de colocar dentro de uma aplicação web em java com estrutura de código baseada em servlets e jsp
um procedimento que todos os dias em um determinado horário, por exemplo as 00:00 hrs ele realize umas transações
na base de dados.

Estou usando PostgreSQL e não conheço uma forma de fazer isso usando esse SGBD.

Dentro do código java eu precisava que quando a minha aplicação web estiver rodando, o objeto que ainda não descobrí, imaginei uma Thread mas preciso da ajuda de vocês para confirmar isso, realizasse esse procedimento.

Obrigado pela atenção de todos…
[/quote]

Dá uma olhada no Quartz Framework, através dele vc pode deixar Triggers agendadas para serem rodadas no horário que vc determinar. Veja o link: http://hotwork.sourceforge.net/hotwork/manual/quartz/quartz-user-guide.html e http://www.roseindia.net/quartz/index.shtml

Outra forma simples de fazer isso é usando as classes Timer e TimerTask do pacote java.util.

Dê uma olhada nos docs:

http://java.sun.com/j2se/1.5.0/docs/api/java/util/Timer.html

[]'s

[quote=wchevreuil]Outra forma simples de fazer isso é usando as classes Timer e TimerTask do pacote java.util.

Dê uma olhada nos docs:

http://java.sun.com/j2se/1.5.0/docs/api/java/util/Timer.html

[]'s[/quote]

Se usar as classes Timer ou TimerTask chmando classe que executa uma Procedure ou Trigger certo?

é só implementar o o método Run e por as chamadas aos metodos de negocio (que executam o que ele precisar no BD), como se faz com Threads…

Pessoal, estou muito grato pela atenção de todos vocês.
Isto favorece muito ao crescimento da nossa comunidade e é também uma atitude
de ajudar ao próximo… e desesperado… hehehe ( é a pressão do meu chefe )
Vou testar as opções que vocês me deram e postarei a que usei.
Um abraço a todos.

Estou querendo usar Timer ou TimerTask, olhei a especificação dessas classes e notei as tarefas de
scheduler. Meu grande problema é:
Tenho uma aplicação web baseada em servlets e jsp’s.
Em que ponto dela irei instanciar as classes anteriores? Preciso de acessar um ponto de código que o container da aplicação
mantém instanciado desde o momento que a aplicação está rodando e só parará em caso de falha ou quando a aplicação parar
de funcionar.

Ou seja, esse objeto deve estar ativo na aplicação independente se o cliente logou ou cumpriu tal regra.
Isso é possível?

Dei uma olhada no qurtz framework mas não identifiquei se ele é iniciado como escreví na mensagem anterior, ou seja,
desde o inico que a aplicação " vai pro ar ".

Lendo melhor sobre o quartz: …

O principal processo do Quartz pode ser iniciado e executado dentro da sua aplicação, como uma aplicação stand-alone (com uma user interface),

ISSO QUE EU QUERIA…
ou dentro de servidor de aplicações J2EE para ser utilizado como recurso para os componentes de sua aplicação.

Queria saber se TimerTask cumpre isso ou se o quartz seria a melhor opção.

Vou ver como fazê-la no quartz…

Estou pensando em usar o quartz fora da aplicação web, pois ele é independente dela e contempla
as minhas regras, mas se TimerTask pudesse ser usado seria mais rápido para eu chegar na solução.
Estou me convencendo de usar o schedule… mas por favor, se souberem se TimerTask ou Task podem
ser usadas dentro da aplicação e instanciados desde o momento que a aplicação " vai pro ar ".

Olá tarssajava. A API do J2EE possui algumas interfaces Listener para notificação de eventos. O cenário que vc me descreveu, parece-me que vc poderia resolver usando um ServletContextListener. É só vc implementar essa interface e colocar as chamadas ao seu TimerTask dentro do método contextInitialized.

Pesquise sobre o javax.servlet.ServletContextListener, eu acho que ele serve para o seu problema.

[]'s

Ví uma solução onde eu usaria um Listener e um ejb onde estaria a implementação do TimerTask.
Mas a sua solução parece ser mais simples ainda. Vou estudá-la para o meu caso. Muito obrigado
pela atenção.

Perfeito, nem precisei de EJB, pois era uma tarefa muito particular e dependente da aplicaçãoWeb.
Valeu a atenção de todos.