agendamento de tarefas com java se e ee

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    1 Favorite

    agendamento de tarefas com java se e ee - Presentation Transcript

    1. Iniciativa Globalcode Agendamento de Tarefas com Java SE e EE Open-source Education
    2. Palestrante
      • Vinicius M. Senger
        • Trabalha com desenvolvimento de softwares a mais de 12 anos;
        • Foi instrutor e consultor Java da: Sun do Brasil, Oracle e Microsoft;
        • Palestrante em diversos eventos nacionais e no JavaOne (maior evento Java dos Estados Unidos);
        • Certificações: Java Programmer 1.4, Sun Certified Enterprise Architect P1, Sun Official Instructor, Oracle Instructor, Microsoft Certified Professional, Microsoft Certified Trainner;
        • Diretor Técnico e fundador da Globalcode;
    3. Palestrante
      • Kleber Xavier
        • Formado em Engenharia Mecatrônica pela POLI-USP e Mestrando em Engenharia de Software pelo IME-USP
        • Experiência Internacional em projetos em Cingapura e Equador
        • Certificações :Java Programmer(SJCP), Web Component Developer(SCWCD), Business Component Developer(SCBCD) e Enterprise Architect(SCEA-I).
        • Instrutor Globalcode;
    4. Agenda
        • Conceitos Gerais
        • Estudo de Caso
        • Agendamento com Java SE
        • Agendamento com Java EE
        • Comparativo entre os modelos
        • Framework Quartz
    5. Agenda
        • Conceitos Gerais
        • Estudo de Caso
        • Agendamento com Java SE
        • Agendamento com Java EE
        • Comparativo entre os modelos
        • Framework Quartz
    6. Conceitos Gerais
      • O agendamento permite a programação de tarefas para serem executadas em um determinado horário.
      • Tipos de agendamento:
        • Periódico: a tarefa é executada diversas vezes de acordo com um intervalo pré-determinado.
        • Execução única (one-shot): a tarefa é executada uma única vez no horário programado.
    7. Conceitos Gerais
      • Exemplos de utilização de agendamento:
        • Realizar backups periódicos;
        • Gerar relatórios diários de vendas;
        • Enviar e-mails de expiração de senha para usuários;
        • Monitorar a criação de novos arquivos em determinados diretórios.
    8. Agenda
        • Conceitos Gerais
        • Estudo de Caso
        • Agendamento com Java SE
        • Agendamento com Java EE
        • Comparativo entre os modelos
        • Framework Quartz
    9. Estudo de Caso
      • Para ilustrar o agendamento de tarefas em Java iremos trabalhar com um sistema de verificação de expiração de reservas.
      • As reservas podem corresponder a qualquer tipo de reserva (restaurante, hotel, passagens aéreas, etc.)
      • O usuário pode cadastrar ou cancelar agendamentos para verificação de expiração de reservas através de uma tela Swing.
    10. Estudo de Caso
    11. Agenda
        • Conceitos Gerais
        • Estudo de Caso
        • Agendamento com Java SE
        • Agendamento com Java EE
        • Comparativo entre os modelos
        • Framework Quartz
    12. Agendamento com Java SE
      • Desde a versão 1.3 estão disponíveis duas classes para agendamento de tarefas em Java:
        • java.util.TimerTask: representa a tarefa a ser agendada.
        • java.util.Timer: representa o coordenador ou agendador de tarefas.
    13. java.util.TimerTask
      • Classe abstrata que implementa a interface java.lang.Runnable.
      • Para utilizá-la cria-se uma sub-classe que implemente o método run( ).
      • Ex:
      • public class TarefaAgendada extends TimerTask {
      • public void run() {
      • // Tarefa a ser agendada
      • }
      • }
    14. java.util.TimerTask
      • Podemos cancelar a tarefa agendada através do método cancel().
      • Permite também a obtenção da data de sua última execução através do método long scheduledExecutionTime().
    15. java.util.Timer
      • Classe que representa a Thread que irá executar a tarefa agendada (TimerTask).
      • Possui métodos para agendamentos periódicos e de execução única (one-shot).
      • Podemos especificar o horário de agendamento através de um objeto java.util.Date ou um tempo em milissegundos.
    16. java.util.Timer
      • Para o agendamento periódico temos duas situações:
        • Atraso fixo (fixed-delay): o período é considerado a partir da última execução da tarefa.
        • Taxa fixa (fixed-rate): o período é considerado a partir da primeira execução da tarefa.
    17. java.util.Timer
      • Métodos para agendamento de execução única:
        • schedule (TimerTask tarefa, Date inicio)
        • schedule (TimerTask tarefa, long atrasoAteInicio)
      • Métodos para agendamento de execução periódica:
        • schedule (TimerTask tarefa, Date inicio, long periodo)
        • schedule (TimerTask tarefa, long atrasoAteInicio, long periodo)
        • scheduleAtFixedRate (TimerTask tarefa, Date inicio, long periodo)
        • scheduleAtFixedRate (TimerTask tarefa, long atrasoAteInicio, long periodo)
    18. Agendamento com Java SE Ex: import java.util.Timer; public class Main { public static void main(String[] args) { TarefaAgendada tarefa = new TarefaAgendada(); Timer agendador = new Timer(); agendador.schedule(tarefa,5000,5000); } }
    19. Agendamento com Java SE
      • DEMO
    20. Agenda
        • Conceitos Gerais
        • Estudo de Caso
        • Agendamento com Java SE
        • Agendamento com Java EE
        • Comparativo entre os modelos
        • Framework Quartz
    21. Agendamento com Java EE
      • Desde a versão 1.4 foi criado o serviço de timer para os componentes EJB.
      • Gerenciado pelo container EJB.
      • Baseado em três elementos:
        • javax.ejb.Timer: representa o agendamento de uma tarefa.
        • javax.ejb.TimerService: representa o coordenador ou agendador de tarefas.
        • EJB: componente que deve implementar a tarefa agendada.
    22. Agendamento com Java EE
    23. Agendamento com Java EE
      • Criando uma tarefa agendada com EJB 2.1:
        • Implementamos a interface javax.ejb.TimedObject e implementamos o método ejbTimeout(Timer timer).
        • Ex:
        • public class TarefaAgendadaBean implements SessionBean, TimedObject {
        • public void ejbTimeout(Timer timer) {
        • //tarefa agendada
        • }
        • //outros métodos de EJB
        • }
    24. Agendamento com Java EE
      • Criando uma tarefa agendada com EJB 3.0:
        • Usar a anotação @timeout no método desejado.
        • Ex:
        • @Stateless
        • public class TarefaAgendadaBean {
        • @timeout
        • public void tarefa(Timer timer) {
        • //tarefa agendada
        • }
        • }
    25. Agendamento com Java EE
      • Com EJB 3.0, o método agendado pode ter qualquer nome, mas deve receber como parâmetro um objeto Timer.
      • Também podemos utilizar a mesma estratégia de EJB 2.1 (implementar a interface TimedObject), ou configurar o método agendado no deployment descriptor com a tag <timeout-method>.
      • Cada EJB pode ter apenas um método agendado.
    26. javax.ejb.TimerService
      • Para criar o agendamento, o EJB deve se registrar no serviço de timer.
      • Isto é feito chamando-se um dos métodos de agendamento de TimerService.
      • Os agendamentos suportados são:
        • Agendamento de tarefa para execução única (one-shot)
        • Agendamento de tarefa periódica com taxa fixa (fixed-rate)
    27. javax.ejb.TimerService
      • Utilizamos um dos seguintes métodos para criar um agendamento:
        • createTimer (Date inicio, Serializable info)
        • createTimer (long atrasoAteInicio, Serializable info)
        • createTimer (Date inicio, long periodo, Serializable info)
        • createTimer (long atrasoAteInicio, long periodo, Serializable info)
    28. javax.ejb.TimerService
      • O acesso ao serviço de Timer é feito através do EJBContext do componente.
      • O agendamento em si é feito de maneira programática, não declarativa.
      • Também podemos listar todos os agendamentos criados através do método getTimers().
    29. Agendamento com Java EE Exemplo para EJB 2.1 public class TarefaAgendadaBean implements SessionBean, TimedObject { SessionContext ctx; public void setSessionContext(Context ctx) { this.ctx = ctx; } public void agendarTarefa() { TimerService agendador = ctx.getTimerService(); agendador.createTimer(5000,5000,null); } //demais métodos }
    30. Agendamento com Java EE Exemplo para EJB 3.0 @Stateless public class TarefaAgendadaBean { @Resource SessionContext ctx; public void agendarTarefa() { TimerService agendador = ctx.getTimerService(); agendador.createTimer(5000,5000,null); } //demais métodos }
    31. javax.ejb.Timer
      • Os métodos chamados para executar a tarefa agendada recebem como parâmetro um objeto Timer, que representa o agendamento.
      • Um mesmo componente pode receber mais de um agendamento.
      • Através do objeto Timer é possível chamar os seguintes métodos:
        • cancel() : cancela o agendamento.
        • getInfo() :retorna o parâmetro do tipo Serializable passado para o TimerService na criação do Timer.
    32. Agendamento com Java EE
      • DEMO
    33. Agenda
        • Conceitos Gerais
        • Estudo de Caso
        • Agendamento com Java SE
        • Agendamento com Java EE
        • Comparativo entre os modelos
        • Framework Quartz
    34. Agendamento com Java SE
      • Vantagens:
        • Simplicidade
        • Não é necessário nada além do Java SE
      • Desvantagens:
        • Perda do agendamento com queda da JVM
        • Somente dois tipos de agendamento
        • Não permite configuração declarativa
    35. Agendamento com Java EE
      • Vantagens:
        • Reaproveitamento de componentes existentes
        • Utilização de serviços do container
        • Recuperação automática do agendamento em caso de queda do servidor
      • Desvantagens:
        • Exige um container EJB
        • Somente dois tipos de agendamento
        • Não permite configuração declarativa
    36. Agenda
        • Conceitos Gerais
        • Estudo de Caso
        • Agendamento com Java SE
        • Agendamento com Java EE
        • Comparativo entre os modelos
        • Framework Quartz
    37. Framework Quartz
      • Framework para agendamento de tarefas criado por James House.
      • Disponível em http://www.opensymphony.com/ quartz
      • Apresenta recursos não disponíveis no agendamento tradicional com Java SE e Java EE:
        • Configuração declarativa
        • Agendamentos com regras de horário mais complexas
    38. Framework Quartz
      • Com o Quartz a tarefa a ser executada é representada por uma classe que implementa a interface org.quartz.Job e implementa o método execute(JobExecutionContext ctx).
      • Ex:
      • public class TarefaAgendada implements Job {
      • public void execute(JobExecutionContext ctx) throws JobExecutionException {
      • //tarefa a ser executada
      • }
      • }
    39. Framework Quartz
      • O agendador é representado por um objeto da classe org.quartz.Scheduler e é obtido através de uma classe Factory.
      • Ex:
      • Scheduler agendador = StdSchedulerFactory.getDefaultScheduler();
      • Após a criação de um agendamento que pode ser feita via programação ou arquivo de configuração (declarativa), iniciamos o processamento através do método start().
      • Ex: agendador.start();
    40. Framework Quartz
      • Criação de agendamento via programação:
        • Construímos um objeto JobDetail que contém os detalhes do agendamento, utilizando o construtor JobDetail ( String nome, String grupo, Class tarefa)
        • Construímos um objeto Trigger que representa a periodicidade do agendamento.
        • Cadastramos o agendamento no objeto Scheduler através do método scheduleJob(JobDetail detalhes, Trigger acionador)
    41. Framework Quartz public class Main { public static void main(String[] args) { Scheduler agendador = StdSchedulerFactory.getDefaultScheduler(); JobDetail detalhe = new JobDetail(“job1”,”grupo1” ,TarefaAgendada.class); Trigger acionador = TriggerUtils.makeHourlyTrigger(1); acionador.setName(“Trigger1”); acionador.setStartTime(new Date()); agendador.scheduleJob(detalhe,acionador); agendador.start(); } }
    42. Framework Quartz
      • Criação de agendamento declarativo:
        • Configuramos o carregamento automático de tarefas no arquivo quartz.properties.
        • org.quartz.plugin.jobInitializer.class = org.quartz.plugins.xml.JobInitializationPlugin
        • Criamos um arquivo quartz_jobs.xml com a configuração dos agendamentos desejados.
    43. Framework Quartz Exemplo de quartz_jobs.xml: <quartz> <job> <job-detail> <name>job1</name> <group>grupo1</group> <job-class> br.com.globalcode.TarefaAgendada </job-class> </job-detail>
    44. Framework Quartz <trigger> <simple> <name>testeTrigger</name> <group>DEFAULT</group> <start-time>2006-12-01 16:09:00 PM</start-time> <repeat-count>5</repeat-count> <repeat-interval>10000</repeat-interval> </simple> </trigger> </job> </quartz>
    45. Framework Quartz Exemplo de classe que utiliza o agendamento declarativo: public class Main { public static void main(String[] args) { Scheduler agendador = StdSchedulerFactory.getDefaultScheduler(); agendador.start(); } }
    46. Framework Quartz
      • DEMO

    + elliando diaselliando dias, 2 years ago

    custom

    505 views, 1 favs, 0 embeds more stats

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 505
      • 505 on SlideShare
      • 0 from embeds
    • Comments 0
    • Favorites 1
    • Downloads 3
    Most viewed embeds

    more

    All embeds

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories