| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/02/2009 17:39:53
|
Jedi_FeniX
Virtual Machine Man
![[Avatar]](/images/avatar/06ab8d9df63b836129099247301c038b.jpg)
Membro desde: 26/04/2007 14:32:30
Mensagens: 586
Offline
|
Alguém já usou o quartz integrado com o tomcat? Funciona legal?
Alguém teria algum material para recomendar?
|
www.bau-de-dev.com |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/02/2009 21:24:59
|
foxpv
JavaEvangelist
![[Avatar]](/images/avatar/b68c8d589e6268e7283cc8230ae8f908.jpg)
Membro desde: 11/04/2006 09:35:56
Mensagens: 343
Offline
|
Vc ta falando do quartz em alguma aplicação que roda no tomcat?
Se for é bem tranquilo, eu uso a integração do quartz com o spring, mas já usei ele sozinho também e funcionou legal .
Da uma olhada na documentação que ela é bem legal também.
[url]
http://www.opensymphony.com/quartz/
[/url]
|
SCJP 1.5 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 04/02/2009 10:20:48
|
lilikadias
Debugger
Membro desde: 01/02/2007 15:53:24
Mensagens: 52
Offline
|
Já fiz uma aplicação Web onde um servlet iniciava o Quartz. Então, quando subia o Tomcat, ele iniciava o Servlet que chamava o scheduller do quartz. Muito tranquilo. Deu super certo.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 04/03/2009 11:57:18
|
Jedi_FeniX
Virtual Machine Man
![[Avatar]](/images/avatar/06ab8d9df63b836129099247301c038b.jpg)
Membro desde: 26/04/2007 14:32:30
Mensagens: 586
Offline
|
lilikadias wrote:Já fiz uma aplicação Web onde um servlet iniciava o Quartz. Então, quando subia o Tomcat, ele iniciava o Servlet que chamava o scheduller do quartz. Muito tranquilo. Deu super certo.

Poderia colocar um exemplo? Como você configurou o quartz e o tomcat?
|
www.bau-de-dev.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 04/03/2009 12:16:16
|
lilikadias
Debugger
Membro desde: 01/02/2007 15:53:24
Mensagens: 52
Offline
|
No meu caso eu tinha uma aplicação Web, só coloquei um .jar dentro da pasta lib com as classes que o quartz utliza para fazer meu agendamento, por exemplo, fiz uma classe DisparaJobScheduler com os dados do agendamento e uma classe DisparaJob que tem o método execute com a lógica a ser executada.
No web.xml configurei o Servlet normalmente:
Isso faz com que, assim que o Tomcat seja iniciado, ele leia essa classe Scheduler faça o agendamento. Depois do agendamento, é disparado o Job no intervalo e horário que vc configurou no Scheduler.
Não precisa de nenhuma configuração no Tomcat. Só colocar a lib dentro de uma webapp. =)
Abraços!
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/03/2009 12:35:43
|
Jedi_FeniX
Virtual Machine Man
![[Avatar]](/images/avatar/06ab8d9df63b836129099247301c038b.jpg)
Membro desde: 26/04/2007 14:32:30
Mensagens: 586
Offline
|
Muito obrigado pela dica, vou fazer isso...
Agora uma ooutra dúvida se o tomcat cair todos os processos que estavam agendados são perdidos? E se ficar agendando muitos processos, a aplicação corre o risco de ficar mais lenta e fica consumindo mais memória?
|
www.bau-de-dev.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/03/2009 17:18:47
|
lilikadias
Debugger
Membro desde: 01/02/2007 15:53:24
Mensagens: 52
Offline
|
Sim, se o tomcat cair pára todos os processos e quando ele subir novamente ele reagenda tudo. Isso é ruim porque se vc tem um processo rodando de hora em hora e o tomcat cair, ele só vai subir no horário configurado pra depois continuar de hora em hora. Com isso seu processo pode ficar 23 horas sem rodar.
Quanto a consumir mais memória eu não tenho certeza, mas acredito que sim.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/03/2009 17:22:23
|
Jedi_FeniX
Virtual Machine Man
![[Avatar]](/images/avatar/06ab8d9df63b836129099247301c038b.jpg)
Membro desde: 26/04/2007 14:32:30
Mensagens: 586
Offline
|
E é preciso configurar alguma coisa? Ou já agendando o processo o tomcat já "salva" o agendamento?
|
www.bau-de-dev.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/03/2009 17:34:31
|
lilikadias
Debugger
Membro desde: 01/02/2007 15:53:24
Mensagens: 52
Offline
|
Não precisa configurar, o Tomcat vai ler os dados de agendamento na classe Scheduler e vai executando o Job de acordo com as informações setadas nessa classe. Por exemplo:
Vc pode deixar essas informações de hora de disparo, intervalo, etc configuráveis no web.xml.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/03/2009 17:43:46
|
Jedi_FeniX
Virtual Machine Man
![[Avatar]](/images/avatar/06ab8d9df63b836129099247301c038b.jpg)
Membro desde: 26/04/2007 14:32:30
Mensagens: 586
Offline
|
O problema é que o usuário pode setar o horário que o processo vai rodar.
Eu pego as informações do banco e agendo.
|
www.bau-de-dev.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/03/2009 09:50:12
|
lilikadias
Debugger
Membro desde: 01/02/2007 15:53:24
Mensagens: 52
Offline
|
Entendi, então na classe Scheduler vc pega as informações do banco toda vez que o Tomcat for iniciado para fazer o agendamento.
Quanto ao usuário setar o horário, terá uma aplicação Web onde ele irá setar isso?
Se sim, vc pode gravar no bd os novos dados do agendamento e chamar o método: sched.rescheduleJob(...).
Isso vai reagendar as triggers do quartz.
Att.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/03/2009 09:58:24
|
Jedi_FeniX
Virtual Machine Man
![[Avatar]](/images/avatar/06ab8d9df63b836129099247301c038b.jpg)
Membro desde: 26/04/2007 14:32:30
Mensagens: 586
Offline
|
Entendi, vou fazer isso...... só mais uma coisa o BD aonde ficam guardados as informações dos agendamentos, veio com o quartz.
Os agendamentos dos usuários ficam em outro BD, toda vez que um usuário insere um agendamento no banco eu agendo um processo relacionando com as configurações do usuário. Ai se alguém parar o tomcat ou a aplicação os agendamentos são gravados no BD do quartz(uma funcionalidade do quartz).
Se sim, vc pode gravar no bd os novos dados do agendamento e chamar o método: sched.rescheduleJob(...).
Chamando este método ele acessa o BD do quartz e reagenda tudo?
E mais uma dúvida como eu coloco uma trigger para rodar diariamente começando em um determinado horário e sendo finalizada em um outro horário ou no próximo dia?
Dei uma olhada na CronTrigger, mas acho que ela não resolve o meu problema, ou eu que não soube fazer a expressão......
This message was edited 2 times. Last update was at 11/03/2009 09:59:49
|
www.bau-de-dev.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/03/2009 10:27:36
|
lilikadias
Debugger
Membro desde: 01/02/2007 15:53:24
Mensagens: 52
Offline
|
Chamando este método ele acessa o BD do quartz e reagenda tudo?
Chamando esse método ele atualiza a memória do quartz e reagenda sim... Na verdade, com esse método vc informa uma nova trigger que será utitlizada no lugar da trigger com o agendamento anterior. Olha a API:
rescheduleJob(String triggerName, String groupName, Trigger newTrigger)
Remove (delete) the Trigger with the given name, and store the new given one - which must be associated with the same job (the new trigger must have the job name & group specified) - however, the new trigger need not have the same name as the old trigger.
E mais uma dúvida como eu coloco uma trigger para rodar diariamente começando em um determinado horário e sendo finalizada em um outro horário ou no próximo dia?
Nunca fiz isso. Se eu descobrir algo te aviso.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/03/2009 15:28:17
|
Jedi_FeniX
Virtual Machine Man
![[Avatar]](/images/avatar/06ab8d9df63b836129099247301c038b.jpg)
Membro desde: 26/04/2007 14:32:30
Mensagens: 586
Offline
|
Bom tentei de tudo quanto é maneira fazer o meu Job para de rodar através da trigger, a única solução que eu pensei para solucionar isso é o meu próprio job ficar verificando o tempo se chegar no tempo determinado ele mesmo se mata.
Agora alguém saberia como matar o Job? hehehhhe
|
www.bau-de-dev.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/03/2009 12:15:50
|
lilikadias
Debugger
Membro desde: 01/02/2007 15:53:24
Mensagens: 52
Offline
|
Pra matar é só dar um sched.shutdown();
|
|
|
 |
|
|