Your SlideShare is downloading. ×
Batch Applications for the Java Platform
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Batch Applications for the Java Platform

958

Published on

Presentation on the Batch JSR (JSR-352) in JavaOne India, Hyderabad 2013. …

Presentation on the Batch JSR (JSR-352) in JavaOne India, Hyderabad 2013.
Thanks to http://www.slideshare.net/reza_rahman and http://www.slideshare.net/arungupta1 for the source slides.

Published in: Technology
1 Comment
2 Likes
Statistics
Notes
  • very interesting! many slides could be reused for JEM, the BEE because it implements many concepts explained in these slides! ;)
    http://www.pepstock.org
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total Views
958
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
35
Comments
1
Likes
2
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.1
  • 2. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.2Batch Applications for theJava PlatformSivakumar ThyagarajanOracle Indiasivakumar.thyagarajan@oracle.com
  • 3. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.3The following is intended to outline our general product direction. It is intendedfor information purposes only, and may not be incorporated into any contract.It is not a commitment to deliver any material, code, or functionality, and shouldnot be relied upon in making purchasing decisions. The development, release,and timing of any features or functionality described for Oracle’s productsremains at the sole discretion of Oracle.
  • 4. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.4Batch Applications for the Java Platform Standardizes batch processing for Java– Non-interactive, bulk-oriented, long-running– Data pr computationally intensive– Sequentially or in parallel– Ad-hoc, scheduled or on-demand execution Led by IBM Spring Batch, WebSphere Compute Grid (WCG), z/OS Batch Part of Java EE 7, can be used in Java SE
  • 5. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.5JBatch Domain Language
  • 6. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.6JBatch Domain Language
  • 7. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.7JBatch Domain Language
  • 8. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.8Reader, 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();}
  • 9. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.9//For a job<step id=”sendStatements”><chunk reader=”accountReader”processor=”accountProcessor”writer=”emailWriter”item-count=”10” /></step>Batch Applications for the Java PlatformStep Example using Job Specification Language (JSL)@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
  • 10. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.10Batch Chunks
  • 11. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.11Checkpointing For data intensive tasks, long periods of time– Checkpoint/restart is a common design requirement Basically saves Reader, Writer positions– Naturally fits into Chunk oriented steps– reader.checkpointInfo() and writer.checkpointInfo() are called– The resulting Externalizable data is persisted– When the Chunk restarts, the reader and writer are initialized with therespective Externalizable data
  • 12. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.12Reader, 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();}
  • 13. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.13Handling Exceptions<job id=...>...<chunk skip-limit=”5” retry-limit=”5”><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>
  • 14. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.14Partitioned Step A batch step may run as a partitioned step– A partitioned step runs as multiple instances of the same step definitionacross multiple threads, one partition per thread<step id="step1" ><chunk ...><partition><plan partitions=“10" threads="2"/><reducer .../></partition></chunk></step>
  • 15. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.15Partitioning – Advanced Scenarios Partition Mapper– Dynamically decide number of partitions (partition plan) Partition Reducer– Demarcate logical unit of work around partition processing Partition Collector– Sends interim results from individual partition to steps partitionanalyzer Partition Analyzer– Collection point of interim results, single point of control and analysis
  • 16. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.16Flow 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>
  • 17. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.17Batchlet Task oriented unit of work Doesnt support resume Not item-oriented Simple Batchlet interface – process(), stop() In job xml:<batchlet ref=”{name}”/>
  • 18. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.18Programming Model – Advanced Scenarios CheckpointAlgorithm Decider Listeners – Job, Step, Chunk Listeners … @BatchPropertyString fname = “/tmp/default.txt” @BatchContextJobContext jctxt;
  • 19. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.19Batch Runtime Specification JobOperator interface – for programmatic lifecycle control of jobs Step level Metrics through the StepExecution object Batch Artifact loading through META-INF/batch.xml Job XML loading through META-INF/batch-jobs/my-job.xml Packaging – jar, war, ejb-jar
  • 20. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.20Example: Programmatic Invocation of JobsIn a Servlet/EJB:import javax.batch.runtime.BatchRuntime;...JobOperator jo = BatchRuntime.getJobOperator();jo.start("myJob", new Properties());...
  • 21. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.21Example: META-INF/batch-jobs/my-job.xml<job id="myJob" xmlns="http://batch.jsr352/jsl"><step id="myStep"><chunk item-count="3"><reader ref="myItemReader"/><processor ref="myItemProcessor"/><writer ref="myItemWriter"/></chunk></step></job>If in a WAR, this would be WEB-INF/classes/META-INF/batch-jobs/my-job.xml
  • 22. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.22Example: META-INF/batch.xml<batch-artifacts xmlns="http://jcp.org.batch/jsl"><ref id="myItemReader" class="org.acme.MyItemReader"/><ref id="myItemProcessor"class="org.acme.MyItemProcessor"/><ref id="myItemWriter" class="org.acme.MyItemWriter"/></batch-artifacts>If in a WAR, this would be WEB-INF/classes/META-INF/batch.xml
  • 23. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.23Where to Find Out More Read the final spec and API docs at http://java.net/projects/jbatch/ Join public@jbatch.java.net and send questions and comments RI integrated in GlassFish 4.0– http://glassfish.java.net/– http://dlc.sun.com.edgesuite.net/glassfish/4.0/promoted/
  • 24. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.24Graphic Section Divider
  • 25. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.25

×