SlideShare una empresa de Scribd logo
1 de 16
JSR 352 - Processamento Batch na Plataforma Java
Danival T. Calegari
Danival Taffarel Calegari
● Mestre em Ciência da Computação pela Unicamp
● Atua a mais de 10 anos em desenvolvimento de aplicações
Java EE
● Vários projetos com batch (billing para telecom e elétrica, aplicações
para mercado financeiro).
● Líder técnico na MATERA Systems
● Instrutor da Globalcode a mais de 8 anos
● Palestras em vários eventos: JavaOne, JustJava, TDC
● Certificações: SCJP, SCWCD, SCBCD
Agenda
● Motivação da JSR 352
● Conceitos
● Características da especificação
● Jobs e Steps
● Chunck
● Batchlet
● Referências
Motivação da JSR
● Processamento em batch é muito comum em aplicações.
● Várias soluções “personalizadas”.
● Produtos começaram a surgir
● Spring Batch
● WebSphere Compute Grid
● Objetivo
● Permitir a implementação de aplicações em batch usando um modelo de
programação padronizado
● Participantes
Conceitos
● Processamento em batch é definido por uma execução
orientada a massa de dados não interativa que executa em
background.
● Requisitos comuns
● Logging
● Estabelecimento de checkpoints
● Paralelização
● Controle de operações
Conceitos
http://static.springsource.org/spring-batch/reference/html/
JSR 352
Conceitos
http://static.springsource.org/spring-batch/reference/html/
Conceitos
http://static.springsource.org/spring-batch/reference/html/
Conceitos
http://static.springsource.org/spring-batch/reference/html/
Características da Especificação
● Java SE e Java EE
● Configuração orientada a XML
● Interfaces e classes abstratas para estabelecimento de
contratos
● Possui suporte próprio para injeção de dependências
● Parâmetros, contextos
● O mecanismo fica a cargo da implementação da especificação
● Comunicação entre os elementos através de contextos
● JobContext
● StepContext
● Configurações do mecanismo por XML
● META-INF/batch.xml
Jobs e Steps
● A configuração dos Jobs é feita em arquivos XML
● META-INF/batch-jobs
● WEB-INF/classes/META-INF/batch-jobs
● JSL – Job Specification Language
<job id="myJob" version="1.0" xmlns="http://xmlns.jcp.org/xml/ns/javaee">
<step id="myStep" >
<!-- chunck / batchlet -->
</step>
</job>
Chunck
● Processamento de um bloco de dados
● Periodicamente é feito um checkpoint dos dados processados
● Cada chunck é processado em uma transação separada
● É feita uma única chamada ao ItemWriter por chunck
● Permite reinínio a partir do último checkpoint em caso de falhas.
<job id="myJob" version="1.0"
xmlns="http://xmlns.jcp.org/xml/ns/javaee">
<step id="myStep" >
<chunk item-count="3">
<reader ref="myItemReader"></reader>
<processor ref="myItemProcessor"></processor>
<writer ref="myItemWriter"></writer>
</chunk>
</step>
</job>
Chunck
● Classes e interfaces envolvidas
● ItemReader
● AbstractItemReader
● ItemWriter
● AbstractItemWriter
● ItemProcessor
● Outras configurações
● Mecanismo de checkpoint
● Particionamento de processamento
● Tratamento de exceções
Batchlet
● Processamento orientado a tarefa
● É executado apenas uma vez pela tarefa
● Permite maior liberdade na forma como vai ser implementado
● javax.batch.api.Batchlet
<job id="myJob" version="1.0" xmlns="http://xmlns.jcp.org/xml/ns/javaee">
<step id="myStep" >
<batchlet ref="myBatchlet"/>
</step>
</job>
Referências
● https://java.net/projects/jbatch
● http://static.springsource.org/spring-batch/reference/html
● http://www.infoq.com/presentations/JSR-352-Java-Batch
Obrigado!
@danivaltc
danivaltc@gmail.com

Más contenido relacionado

Similar a JSR 352 - Processamento Batch na Plataforma Java - JustJava 2013

Uma implementação de suporte a
Uma implementação de suporte a Uma implementação de suporte a
Uma implementação de suporte a
Rômulo Jales
 

Similar a JSR 352 - Processamento Batch na Plataforma Java - JustJava 2013 (20)

Desenvolvimento baseado em componentes com JSF
Desenvolvimento baseado em componentes com JSFDesenvolvimento baseado em componentes com JSF
Desenvolvimento baseado em componentes com JSF
 
Uma implementação de suporte a
Uma implementação de suporte a Uma implementação de suporte a
Uma implementação de suporte a
 
Teste de Integração - Unidade III
Teste de Integração - Unidade IIITeste de Integração - Unidade III
Teste de Integração - Unidade III
 
TDC2018FLN | Trilha Arquitetura - Elixir Umbrella - Aplicacoes desacopladas s...
TDC2018FLN | Trilha Arquitetura - Elixir Umbrella - Aplicacoes desacopladas s...TDC2018FLN | Trilha Arquitetura - Elixir Umbrella - Aplicacoes desacopladas s...
TDC2018FLN | Trilha Arquitetura - Elixir Umbrella - Aplicacoes desacopladas s...
 
Como ser programador durante o dia e mesmo assim dormir bem à noite
Como ser programador durante o dia e mesmo assim dormir bem à noiteComo ser programador durante o dia e mesmo assim dormir bem à noite
Como ser programador durante o dia e mesmo assim dormir bem à noite
 
Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007
 
Funcionamento interno do node.js e boas práticas
Funcionamento interno do node.js e boas práticasFuncionamento interno do node.js e boas práticas
Funcionamento interno do node.js e boas práticas
 
Google AppEngine: Desafios da adoção de cloud no mercado de seguros
Google AppEngine: Desafios da adoção de cloud no mercado de segurosGoogle AppEngine: Desafios da adoção de cloud no mercado de seguros
Google AppEngine: Desafios da adoção de cloud no mercado de seguros
 
Node.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançadoNode.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançado
 
Apache Wicket derruba o padrão JSF
Apache Wicket derruba o padrão JSFApache Wicket derruba o padrão JSF
Apache Wicket derruba o padrão JSF
 
Aula parte 1 de JSF 2.2
Aula parte 1 de JSF 2.2Aula parte 1 de JSF 2.2
Aula parte 1 de JSF 2.2
 
Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011
 
Django
DjangoDjango
Django
 
Mpu 2012 ppt
Mpu 2012 pptMpu 2012 ppt
Mpu 2012 ppt
 
Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011
 
Overview de QA
Overview de QA Overview de QA
Overview de QA
 
Curso Intensivo de N8N
Curso Intensivo de N8NCurso Intensivo de N8N
Curso Intensivo de N8N
 
Palestra parse
Palestra parsePalestra parse
Palestra parse
 
CakePHP workshop ifsul
CakePHP workshop ifsulCakePHP workshop ifsul
CakePHP workshop ifsul
 
Boa Práticas no Desenvolvimento Java Enterprise
Boa Práticas no Desenvolvimento Java EnterpriseBoa Práticas no Desenvolvimento Java Enterprise
Boa Práticas no Desenvolvimento Java Enterprise
 

Más de Danival Calegari

Polis Hyperlink Dicas e truques de Performance para JPA e EJB
Polis Hyperlink Dicas e truques de Performance para JPA e EJBPolis Hyperlink Dicas e truques de Performance para JPA e EJB
Polis Hyperlink Dicas e truques de Performance para JPA e EJB
Danival Calegari
 

Más de Danival Calegari (7)

Tecnologias Netflix OSS
Tecnologias Netflix OSSTecnologias Netflix OSS
Tecnologias Netflix OSS
 
TDC 2014 - Java 8: Expressões Lambda e API de Stream
TDC 2014 - Java 8: Expressões Lambda e API de StreamTDC 2014 - Java 8: Expressões Lambda e API de Stream
TDC 2014 - Java 8: Expressões Lambda e API de Stream
 
Java 8 - Expressões Lambda e Stream API - DevCamp 2014
Java 8 - Expressões Lambda e Stream API - DevCamp 2014Java 8 - Expressões Lambda e Stream API - DevCamp 2014
Java 8 - Expressões Lambda e Stream API - DevCamp 2014
 
Evitando as armadilhas no projeto de aplicações Java EE para uso eficaz da nuvem
Evitando as armadilhas no projeto de aplicações Java EE para uso eficaz da nuvemEvitando as armadilhas no projeto de aplicações Java EE para uso eficaz da nuvem
Evitando as armadilhas no projeto de aplicações Java EE para uso eficaz da nuvem
 
JavaOne 2012 - BOF7955 ­ Avoiding Java EE Application Design Traps to Achieve...
JavaOne 2012 - BOF7955 ­ Avoiding Java EE Application Design Traps to Achieve...JavaOne 2012 - BOF7955 ­ Avoiding Java EE Application Design Traps to Achieve...
JavaOne 2012 - BOF7955 ­ Avoiding Java EE Application Design Traps to Achieve...
 
Polis Hyperlink Dicas e truques de Performance para JPA e EJB
Polis Hyperlink Dicas e truques de Performance para JPA e EJBPolis Hyperlink Dicas e truques de Performance para JPA e EJB
Polis Hyperlink Dicas e truques de Performance para JPA e EJB
 
JSR 352 Batch Applications for the Java Platform
JSR 352 Batch Applications for the Java PlatformJSR 352 Batch Applications for the Java Platform
JSR 352 Batch Applications for the Java Platform
 

Último

Último (6)

ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 

JSR 352 - Processamento Batch na Plataforma Java - JustJava 2013

  • 1. JSR 352 - Processamento Batch na Plataforma Java Danival T. Calegari
  • 2. Danival Taffarel Calegari ● Mestre em Ciência da Computação pela Unicamp ● Atua a mais de 10 anos em desenvolvimento de aplicações Java EE ● Vários projetos com batch (billing para telecom e elétrica, aplicações para mercado financeiro). ● Líder técnico na MATERA Systems ● Instrutor da Globalcode a mais de 8 anos ● Palestras em vários eventos: JavaOne, JustJava, TDC ● Certificações: SCJP, SCWCD, SCBCD
  • 3. Agenda ● Motivação da JSR 352 ● Conceitos ● Características da especificação ● Jobs e Steps ● Chunck ● Batchlet ● Referências
  • 4. Motivação da JSR ● Processamento em batch é muito comum em aplicações. ● Várias soluções “personalizadas”. ● Produtos começaram a surgir ● Spring Batch ● WebSphere Compute Grid ● Objetivo ● Permitir a implementação de aplicações em batch usando um modelo de programação padronizado ● Participantes
  • 5. Conceitos ● Processamento em batch é definido por uma execução orientada a massa de dados não interativa que executa em background. ● Requisitos comuns ● Logging ● Estabelecimento de checkpoints ● Paralelização ● Controle de operações
  • 10. Características da Especificação ● Java SE e Java EE ● Configuração orientada a XML ● Interfaces e classes abstratas para estabelecimento de contratos ● Possui suporte próprio para injeção de dependências ● Parâmetros, contextos ● O mecanismo fica a cargo da implementação da especificação ● Comunicação entre os elementos através de contextos ● JobContext ● StepContext ● Configurações do mecanismo por XML ● META-INF/batch.xml
  • 11. Jobs e Steps ● A configuração dos Jobs é feita em arquivos XML ● META-INF/batch-jobs ● WEB-INF/classes/META-INF/batch-jobs ● JSL – Job Specification Language <job id="myJob" version="1.0" xmlns="http://xmlns.jcp.org/xml/ns/javaee"> <step id="myStep" > <!-- chunck / batchlet --> </step> </job>
  • 12. Chunck ● Processamento de um bloco de dados ● Periodicamente é feito um checkpoint dos dados processados ● Cada chunck é processado em uma transação separada ● É feita uma única chamada ao ItemWriter por chunck ● Permite reinínio a partir do último checkpoint em caso de falhas. <job id="myJob" version="1.0" xmlns="http://xmlns.jcp.org/xml/ns/javaee"> <step id="myStep" > <chunk item-count="3"> <reader ref="myItemReader"></reader> <processor ref="myItemProcessor"></processor> <writer ref="myItemWriter"></writer> </chunk> </step> </job>
  • 13. Chunck ● Classes e interfaces envolvidas ● ItemReader ● AbstractItemReader ● ItemWriter ● AbstractItemWriter ● ItemProcessor ● Outras configurações ● Mecanismo de checkpoint ● Particionamento de processamento ● Tratamento de exceções
  • 14. Batchlet ● Processamento orientado a tarefa ● É executado apenas uma vez pela tarefa ● Permite maior liberdade na forma como vai ser implementado ● javax.batch.api.Batchlet <job id="myJob" version="1.0" xmlns="http://xmlns.jcp.org/xml/ns/javaee"> <step id="myStep" > <batchlet ref="myBatchlet"/> </step> </job>