implementing batch processing in java ee 7 2014...batch - javaland 2014 @ivar_grimstad implementing...

36
Batch - JavaLand 2014 @ivar_grimstad Implementing Batch Processing in Java EE 7 Ivar Grimstad

Upload: vodang

Post on 29-Mar-2018

228 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Implementing Batch Processing in Java EE 7 2014...Batch - JavaLand 2014 @ivar_grimstad Implementing Batch Processing in Java EE 7 Ivar Grimstad

Batch - JavaLand 2014 @ivar_grimstad

Implementing Batch Processing in Java EE 7Ivar Grimstad

Page 2: Implementing Batch Processing in Java EE 7 2014...Batch - JavaLand 2014 @ivar_grimstad Implementing Batch Processing in Java EE 7 Ivar Grimstad

Ivar Grimstad

About

Batch - JavaLand 2014 @ivar_grimstad

@ivar_grimstad

Page 3: Implementing Batch Processing in Java EE 7 2014...Batch - JavaLand 2014 @ivar_grimstad Implementing Batch Processing in Java EE 7 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.

Batch - JavaLand 2014 @ivar_grimstad

Source: http://en.wiktionary.org/wiki/batch

Page 4: Implementing Batch Processing in Java EE 7 2014...Batch - JavaLand 2014 @ivar_grimstad Implementing Batch Processing in Java EE 7 Ivar Grimstad

• Batch Applications

• Batch in Java EE 7

• Demo

• Wrap-Up

Content

Batch - JavaLand 2014 @ivar_grimstad

Page 5: Implementing Batch Processing in Java EE 7 2014...Batch - JavaLand 2014 @ivar_grimstad Implementing Batch Processing in Java EE 7 Ivar Grimstad

History

Batch - JavaLand 2014 @ivar_grimstad

Page 6: Implementing Batch Processing in Java EE 7 2014...Batch - JavaLand 2014 @ivar_grimstad Implementing Batch Processing in Java EE 7 Ivar Grimstad

Batch Applications

Batch - JavaLand 2014 @ivar_grimstad

Page 7: Implementing Batch Processing in Java EE 7 2014...Batch - JavaLand 2014 @ivar_grimstad Implementing Batch Processing in Java EE 7 Ivar Grimstad

• Bulk database updates

• Image processing

• Conversions

Common Usages

Batch - JavaLand 2014 @ivar_grimstad

Page 8: Implementing Batch Processing in Java EE 7 2014...Batch - JavaLand 2014 @ivar_grimstad Implementing Batch Processing in Java EE 7 Ivar Grimstad

• No User Interaction

• Utilize Batch Windows

• Repetitive Work

Advantages of Batch Processing

Batch - JavaLand 2014 @ivar_grimstad

Page 9: Implementing Batch Processing in Java EE 7 2014...Batch - JavaLand 2014 @ivar_grimstad Implementing Batch Processing in Java EE 7 Ivar Grimstad

• Training

• Difficult Debugging

• Costly

Disadvantages of Batch Processing

Batch - JavaLand 2014 @ivar_grimstad

Page 10: Implementing Batch Processing in Java EE 7 2014...Batch - JavaLand 2014 @ivar_grimstad Implementing Batch Processing in Java EE 7 Ivar Grimstad

Batch Frameworks

To The Rescue

Batch - JavaLand 2014 @ivar_grimstad

Page 11: Implementing Batch Processing in Java EE 7 2014...Batch - JavaLand 2014 @ivar_grimstad Implementing Batch Processing in Java EE 7 Ivar Grimstad

• Jobs, steps, decision elements, relationships

• Parallel or sequential processing

• State

• Launch, pause and resume

• Error handling

Batch Frameworks

Batch - JavaLand 2014 @ivar_grimstad

Page 12: Implementing Batch Processing in Java EE 7 2014...Batch - JavaLand 2014 @ivar_grimstad Implementing Batch Processing in Java EE 7 Ivar Grimstad

Large Data Volume

Automation

Robustness

Reliability

Performance

Requirements of Batch Applications

Batch - JavaLand 2014 @ivar_grimstad

Page 13: Implementing Batch Processing in Java EE 7 2014...Batch - JavaLand 2014 @ivar_grimstad Implementing Batch Processing in Java EE 7 Ivar Grimstad

Batch - JavaLand 2014 @ivar_grimstad

Batch Processing in Java EE 7

Page 14: Implementing Batch Processing in Java EE 7 2014...Batch - JavaLand 2014 @ivar_grimstad Implementing Batch Processing in Java EE 7 Ivar Grimstad

• Batch Runtime

• Job Specification

• Java API

–Runtime interaction

– Implementation

The Batch Processing Framework

Batch - JavaLand 2014 @ivar_grimstad

Page 15: Implementing Batch Processing in Java EE 7 2014...Batch - JavaLand 2014 @ivar_grimstad Implementing Batch Processing in Java EE 7 Ivar Grimstad

• Start jobs

• Check status of jobs

Batch Runtime

Batch - JavaLand 2014 @ivar_grimstad

Page 16: Implementing Batch Processing in Java EE 7 2014...Batch - JavaLand 2014 @ivar_grimstad Implementing Batch Processing in Java EE 7 Ivar Grimstad

• Steps

• Flows

• Splits

• Decision Elements

Job Specification

Batch - JavaLand 2014 @ivar_grimstad

Page 17: Implementing Batch Processing in Java EE 7 2014...Batch - JavaLand 2014 @ivar_grimstad Implementing Batch Processing in Java EE 7 Ivar Grimstad

Job Specification Language (JSL)

Batch - JavaLand 2014 @ivar_grimstad

<job>

<listeners>

<listener />

</listeners>

<properties>

<property />

</properties>

<step ...> ... </step>

<step ...> ... </step>

<decision ...> ... </decision>

<flow ...> ... </flow>

<split ...> ... </split>

</job>

Page 18: Implementing Batch Processing in Java EE 7 2014...Batch - JavaLand 2014 @ivar_grimstad Implementing Batch Processing in Java EE 7 Ivar Grimstad

Java Batch API (task oriented)

Batch - JavaLand 2014 @ivar_grimstad

Package Interface Description

javax.batch.api BatchletImplements the business logic of a task-oriented

step.

Page 19: Implementing Batch Processing in Java EE 7 2014...Batch - JavaLand 2014 @ivar_grimstad Implementing Batch Processing in Java EE 7 Ivar Grimstad

Java Batch API (chunk oriented)

Batch - JavaLand 2014 @ivar_grimstad

Package Interface Description

javax.batch.api.chunk ItemReaderReads items from an input source in a

chunk step.

javax.batch.api.chunk ItemProcessorProcesses input items to obtain output

items in chunk steps.

javax.batch.api.chunk ItemWriter Writes output items in chunk steps.

Page 20: Implementing Batch Processing in Java EE 7 2014...Batch - JavaLand 2014 @ivar_grimstad Implementing Batch Processing in Java EE 7 Ivar Grimstad

ItemReader ItemWriterItemProcessor

Chunk Oriented Steps

Batch - JavaLand 2014 @ivar_grimstad

Item

Page 21: Implementing Batch Processing in Java EE 7 2014...Batch - JavaLand 2014 @ivar_grimstad Implementing Batch Processing in Java EE 7 Ivar Grimstad

Dependency Injection

Batch - JavaLand 2014 @ivar_grimstad

@Dependent

@Named("MyItemReader")

public class MyItemReaderImpl implements ItemReader {

}

<step id="stepA" next="stepB">

<chunk>

<reader ref="MyItemReader"></reader>

...

</chunk>

</step>

Page 22: Implementing Batch Processing in Java EE 7 2014...Batch - JavaLand 2014 @ivar_grimstad Implementing Batch Processing in Java EE 7 Ivar Grimstad

Batch Runtime API

Batch - JavaLand 2014 @ivar_grimstad

@Dependent

@Named("MyItemReader")

public class MyItemReaderImpl implements ItemReader {

@Inject

JobContext jobCtx;

@Inject

StepContext stepCtx;

}

Page 23: Implementing Batch Processing in Java EE 7 2014...Batch - JavaLand 2014 @ivar_grimstad Implementing Batch Processing in Java EE 7 Ivar Grimstad

Invocation

Batch - JavaLand 2014 @ivar_grimstad

jobOperator = BatchRuntime.getJobOperator();

Properties props = new Properties();

props.setProperty("parameter1", "value1");

long execID = jobOperator.start("simplejob", props);

EJB, Servlet, ManagedBean etc.

Page 24: Implementing Batch Processing in Java EE 7 2014...Batch - JavaLand 2014 @ivar_grimstad Implementing Batch Processing in Java EE 7 Ivar Grimstad

• No separate packaging needed

• Can be included in any Java EE application

–META-INF/batch-jobs/

–WEB-INF/classes/META-INF/batch-jobs/

Packaging

Batch - JavaLand 2014 @ivar_grimstad

Page 25: Implementing Batch Processing in Java EE 7 2014...Batch - JavaLand 2014 @ivar_grimstad Implementing Batch Processing in Java EE 7 Ivar Grimstad

Monitoring

Batch - JavaLand 2014 @ivar_grimstad

Package Interface Description

javax.batch.runtime JobExecutionProvides methods to obtain information

about submitted jobs.

JobExecution jobExec = jobOperator.getJobExection(id);

String status = jobExec.getBatchStatus().toString();

Page 26: Implementing Batch Processing in Java EE 7 2014...Batch - JavaLand 2014 @ivar_grimstad Implementing Batch Processing in Java EE 7 Ivar Grimstad

• Design the application

• Create batch artifacts

• Define jobs, steps and execution flow

• Launch batch application

Creating a Java EE Batch Application

Batch - JavaLand 2014 @ivar_grimstad

Page 27: Implementing Batch Processing in Java EE 7 2014...Batch - JavaLand 2014 @ivar_grimstad Implementing Batch Processing in Java EE 7 Ivar Grimstad

Batch - JavaLand 2014 @ivar_grimstad

DEMO

Page 28: Implementing Batch Processing in Java EE 7 2014...Batch - JavaLand 2014 @ivar_grimstad Implementing Batch Processing in Java EE 7 Ivar Grimstad

• Create a simple batchlet

• Create a simple chunk oriented job

• Package in a WAR

• Start jobs from a Servlet

• Schedule jobs from Timer EJB

Demo Steps

Batch - JavaLand 2014 @ivar_grimstad

Page 29: Implementing Batch Processing in Java EE 7 2014...Batch - JavaLand 2014 @ivar_grimstad Implementing Batch Processing in Java EE 7 Ivar Grimstad

Simple Batchlet

Batch - JavaLand 2014 @ivar_grimstad

Page 30: Implementing Batch Processing in Java EE 7 2014...Batch - JavaLand 2014 @ivar_grimstad Implementing Batch Processing in Java EE 7 Ivar Grimstad

Simple Chunk Oriented

Batch - JavaLand 2014 @ivar_grimstad

Page 31: Implementing Batch Processing in Java EE 7 2014...Batch - JavaLand 2014 @ivar_grimstad Implementing Batch Processing in Java EE 7 Ivar Grimstad

• 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

Demo Steps (what we did)

Batch - JavaLand 2014 @ivar_grimstad

Page 32: Implementing Batch Processing in Java EE 7 2014...Batch - JavaLand 2014 @ivar_grimstad Implementing Batch Processing in Java EE 7 Ivar Grimstad

Batch - JavaLand 2014 @ivar_grimstad

Summary

Page 33: Implementing Batch Processing in Java EE 7 2014...Batch - JavaLand 2014 @ivar_grimstad Implementing Batch Processing in Java EE 7 Ivar Grimstad

…but isn’t it?

Batch - JavaLand 2014 @ivar_grimstad

Page 34: Implementing Batch Processing in Java EE 7 2014...Batch - JavaLand 2014 @ivar_grimstad Implementing Batch Processing in Java EE 7 Ivar Grimstad

• Simple and Flexible

• Clear and precise API

• No separate packaging required

• Is a part of Java EE

Summary

Batch - JavaLand 2014 @ivar_grimstad

Page 35: Implementing Batch Processing in Java EE 7 2014...Batch - JavaLand 2014 @ivar_grimstad Implementing Batch Processing in Java EE 7 Ivar Grimstad

https://github.com/ivargrimstad/javaee-batch

Sources

Batch - JavaLand 2014 @ivar_grimstad

Page 36: Implementing Batch Processing in Java EE 7 2014...Batch - JavaLand 2014 @ivar_grimstad Implementing Batch Processing in Java EE 7 Ivar Grimstad

Batch - JavaLand 2014 @ivar_grimstad