Implementing Batch Processing in Java EE 7 Ivar Grimstad

Implementing Batch Processing in Java EE 7 Ivar Grimstad

Implementing Batch Processing in Java EE 7 Ivar Grimstad Batch - JavaLand 2014 @ivar_grimstad About Ivar Grimstad @ivar_grimstad Batch - JavaLand 2014 @ivar_grimstad batch (plural batches) The quantity of bread or other baked goods baked at one time. We made a batch of cookies to take to the party. Source: http://en.wiktionary.org/wiki/batch Batch - JavaLand 2014 @ivar_grimstad Content • Batch Applications • Batch in Java EE 7 • Demo • Wrap-Up Batch - JavaLand 2014 @ivar_grimstad History Batch - JavaLand 2014 @ivar_grimstad Batch Applications Batch - JavaLand 2014 @ivar_grimstad Common Usages • Bulk database updates • Image processing • Conversions Batch - JavaLand 2014 @ivar_grimstad Advantages of Batch Processing • No User Interaction • Utilize Batch Windows • Repetitive Work Batch - JavaLand 2014 @ivar_grimstad Disadvantages of Batch Processing • Training • Difficult Debugging • Costly Batch - JavaLand 2014 @ivar_grimstad To The Rescue Batch Frameworks Batch - JavaLand 2014 @ivar_grimstad Batch Frameworks • Jobs, steps, decision elements, relationships • Parallel or sequential processing • State • Launch, pause and resume • Error handling Batch - JavaLand 2014 @ivar_grimstad Requirements of Batch Applications Large Data Volume Automation Robustness Reliability Performance Batch - JavaLand 2014 @ivar_grimstad Batch Processing in Java EE 7 Batch - JavaLand 2014 @ivar_grimstad The Batch Processing Framework • Batch Runtime • Job Specification • Java API – Runtime interaction – Implementation Batch - JavaLand 2014 @ivar_grimstad Batch Runtime • Start jobs • Check status of jobs Batch - JavaLand 2014 @ivar_grimstad Job Specification • Steps • Flows • Splits • Decision Elements Batch - JavaLand 2014 @ivar_grimstad Job Specification Language (JSL) <job> <listeners> <listener /> </listeners> <properties> <property /> </properties> <step ...> ... </step> <step ...> ... </step> <decision ...> ... </decision> <flow ...> ... </flow> <split ...> ... </split> </job> Batch - JavaLand 2014 @ivar_grimstad Java Batch API (task oriented) Package Interface Description Implements the business logic of a task-oriented javax.batch.api Batchlet step. Batch - JavaLand 2014 @ivar_grimstad Java Batch API (chunk oriented) Package Interface Description Reads items from an input source in a javax.batch.api.chunk ItemReader chunk step. Processes input items to obtain output javax.batch.api.chunk ItemProcessor items in chunk steps. javax.batch.api.chunk ItemWriter Writes output items in chunk steps. Batch - JavaLand 2014 @ivar_grimstad Chunk Oriented Steps ItemReaderItem ItemProcessor ItemWriter Batch - JavaLand 2014 @ivar_grimstad Dependency Injection @Dependent @Named("MyItemReader") public class MyItemReaderImpl implements ItemReader { } <step id="stepA" next="stepB"> <chunk> <reader ref="MyItemReader"></reader> ... </chunk> </step> Batch - JavaLand 2014 @ivar_grimstad Batch Runtime API @Dependent @Named("MyItemReader") public class MyItemReaderImpl implements ItemReader { @Inject JobContext jobCtx; @Inject StepContext stepCtx; } Batch - JavaLand 2014 @ivar_grimstad Invocation EJB, Servlet, ManagedBean etc. jobOperator = BatchRuntime.getJobOperator(); Properties props = new Properties(); props.setProperty("parameter1", "value1"); long execID = jobOperator.start("simplejob", props); Batch - JavaLand 2014 @ivar_grimstad Packaging • No separate packaging needed • Can be included in any Java EE application – META-INF/batch-jobs/ – WEB-INF/classes/META-INF/batch-jobs/ Batch - JavaLand 2014 @ivar_grimstad Monitoring Package Interface Description Provides methods to obtain information javax.batch.runtime JobExecution about submitted jobs. JobExecution jobExec = jobOperator.getJobExection(id); String status = jobExec.getBatchStatus().toString(); Batch - JavaLand 2014 @ivar_grimstad Creating a Java EE Batch Application • Design the application • Create batch artifacts • Define jobs, steps and execution flow • Launch batch application Batch - JavaLand 2014 @ivar_grimstad DEMO Batch - JavaLand 2014 @ivar_grimstad Demo Steps • Create a simple batchlet • Create a simple chunk oriented job • Package in a WAR • Start jobs from a Servlet • Schedule jobs from Timer EJB Batch - JavaLand 2014 @ivar_grimstad Simple Batchlet Batch - JavaLand 2014 @ivar_grimstad Simple Chunk Oriented Batch - JavaLand 2014 @ivar_grimstad Demo Steps (what we did) • Created a simple batchlet • Created a simple chunk oriented job • Packaged application in a WAR • Started jobs from a Servlet • Scheduled jobs from Timer EJB Batch - JavaLand 2014 @ivar_grimstad Summary Batch - JavaLand 2014 @ivar_grimstad …but isn’t it? Batch - JavaLand 2014 @ivar_grimstad Summary • Simple and Flexible • Clear and precise API • No separate packaging required • Is a part of Java EE Batch - JavaLand 2014 @ivar_grimstad Sources https://github.com/ivargrimstad/javaee-batch Batch - JavaLand 2014 @ivar_grimstad Batch - JavaLand 2014 @ivar_grimstad.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    36 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us