SlideShare uma empresa 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

Mais conteúdo relacionado

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

Desenvolvimento baseado em componentes com JSF
Desenvolvimento baseado em componentes com JSFDesenvolvimento baseado em componentes com JSF
Desenvolvimento baseado em componentes com JSFEmmanuel Neri
 
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
 
Teste de Integração - Unidade III
Teste de Integração - Unidade IIITeste de Integração - Unidade III
Teste de Integração - Unidade IIIJoão Lourenço
 
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...tdc-globalcode
 
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 à noiteComunidade NetPonto
 
Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Rafael Benevides
 
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áticasKirmayr tomaz
 
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 segurosGustavo Concon
 
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çadoEduardo Bohrer
 
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 JSFBruno Borges
 
Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011Luís Cobucci
 
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 2011Luís Cobucci
 
Curso Intensivo de N8N
Curso Intensivo de N8NCurso Intensivo de N8N
Curso Intensivo de N8NAutotic
 
CakePHP workshop ifsul
CakePHP workshop ifsulCakePHP workshop ifsul
CakePHP workshop ifsulWaldemar Neto
 
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 EnterpriseOziel Moreira Neto
 

Semelhante 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
 

Mais de Danival Calegari

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 StreamDanival Calegari
 
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 2014Danival Calegari
 
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 nuvemDanival Calegari
 
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...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 EJBDanival Calegari
 
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 PlatformDanival Calegari
 

Mais 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
 

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>