java batch

16
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 1

Upload: reza-rahman

Post on 15-Jan-2015

9.173 views

Category:

Technology


0 download

DESCRIPTION

This fast-faced, code-centric lightning talk covers the new Java Batch (aka Batch Applications for the Java Platform) API. Java Batch is a long-requested IBM-led standard for batch processing in Java applications. The API synthesizes well-understood batching concepts such as jobs, steps, repositories, the reader-processor-writer pattern, chunking, parallel processing, flow, split, join, transactions, retries, sequencing, partitioning and much, much more.

TRANSCRIPT

Page 1: Java Batch

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.1

Page 2: Java Batch

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.2

Batch Applications for the Java PlatformReza RahmanGlassFish/Java EE [email protected]

Page 3: Java Batch

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.3

The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle’s products remains at the sole discretion of Oracle.

Page 4: Java Batch

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.4

Batch Applications for the Java Platform

Standardizes batch processing for Java– Non-interactive, bulk-oriented, long-running

– Computationally intensive

– Sequentially or in parallel

Led by IBM Spring Batch, WebSphere Compute Grid (WCG), z/OS Batch Part of Java EE 7, can be used in Java SE

Page 5: Java Batch

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.5

JBatch Architecture

Page 6: Java Batch

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.6

Batch Chunks

Page 7: Java Batch

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.7

Reader, Processor, Writerpublic interface ItemReader<T> { public void open(Externalizable checkpoint); public T readItem(); public Externalizable checkpointInfo(); public void close();}

public interface ItemProcessor<T, R> { public R processItem(T item);}

public interface ItemWriter<T> { public void open(Externalizable checkpoint); public void writeItems(List<T> items); public Externalizable checkpointInfo(); public void close();}

Page 8: Java Batch

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.8

<step id=”sendStatements”> <chunk reader=”accountReader” processor=”accountProcessor” writer=”emailWriter” item-count=”10” /></step>

Batch Applications for the Java Platform Step Example

@Named(“accountReader")...implements ItemReader... {public Account readItem() { // read account using JPA

@Named(“accountProcessor")...implements ItemProcessor... {Public Statement processItems(Account account) { // read Account, return Statement

@Named(“emailWriter")...implements ItemWriter... {public void writeItems(List<Statements> statements) { // use JavaMail to send email

Page 9: Java Batch

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.9

Checkpointing

For data intensive, long periods of time– Checkpoint/restart is a common design requirement

Basically saves Reader, Writer positions– Naturally fits Chunk oriented steps

– reader.checkpointInfo() and writer.checkpointInf() are called

– The resulting Externalizable data is persisted

– When the Chunk restarts, the reader and writer are initialized with the respective Externalizable data

Page 10: Java Batch

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.10

Reader, Processor, Writerpublic interface ItemReader<T> { public void open(Externalizable checkpoint); public T readItem(); public Externalizable checkpointInfo(); public void close();}

public interface ItemProcessor<T, R> { public R processItem(T item);}

public interface ItemWriter<T> { public void open(Externalizable checkpoint); public void writeItems(List<T> items); public Externalizable checkpointInfo(); public void close();}

Page 11: Java Batch

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.11

Handling Exceptions

<job id=...> <chunk reader...> <skippable-exception-classes> <include class="java.lang.Exception"/> <exclude class="java.io.FileNotFoundException"/> </skippable-exception-classes> <retryable-exception-classes> </retryable-exception-classes> <no-rollback-exception-classes> </no-rollback-exception-classes> </chunk></job>

Page 12: Java Batch

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.12

Partitioned Step

A batch step may run as a partitioned step– A partitioned step runs as multiple instances of the same step definition

across multiple threads, one partition per thread

<step id="step1" > <chunk ...> <partition> <plan partitions=“10" threads="2"/> <reducer .../> </partition> </chunk></step>

Page 13: Java Batch

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.13

Flow and Split

Flow defines a set of steps to be executed as a unit<flow id=”flow-1" next=“{flow, step, decision}-id” > <step id=“flow_1_step_1”> </step> <step id=“flow_1_step_2”> </step></flow>

Split defines a set of flows to be executed in parallel

<split …> <flow …./> <!– each flow runs on a separate thread --> <flow …./></split>

Page 14: Java Batch

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.14

Where to Find Out More

Read the draft spec and API docs at http://java.net/projects/jbatch/ Join [email protected] and send questions and comments GlassFish 4.0

– http://glassfish.java.net/

– http://dlc.sun.com.edgesuite.net/glassfish/4.0/promoted/

Slide Deck– http://www.slideshare.net/reza_rahman

Page 15: Java Batch

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.15

Graphic Section Divider

Page 16: Java Batch

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.16