java batch

44
Java Batch(JSR-352) M.Eray Koçak | Software Infrastructure

Upload: software-infrastructure

Post on 16-Apr-2017

108 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Java Batch

Java Batch(JSR-352)

M.Eray Koçak | Software Infrastructure

Page 2: Java Batch

1950’s-60’s Batch Processing Era

The era came to an end, but need for batch processing continues to exist.

Page 3: Java Batch

Evolution of Processing

Page 4: Java Batch

Common Requirements

Common Requirements Logging Checkpointing Parallelization Transaction Management Operational Control

• Start• Stop• Restart

Page 5: Java Batch

JSR-352

https://jcp.org/aboutJava/communityprocess/final/jsr352/index.html

Led by IBM The proposal intended to specify

• Batch job• Batch job step• Batch application• Batch executor• Batch job manager (Considered in a future revision of the

specification)• Final Release on 24 May, 2013

Page 6: Java Batch

JSR-352[Final Release]

Describes Job Specification Language Java Programming Model Runtime environment of Batch Applications

Targets both Java SE and Java EE platforms. Requires Java 6 or higher. Works with dependency Injection(DI)

containers

Page 7: Java Batch

Domain Language of Batch

Page 8: Java Batch

Domain Language of Batch

Page 9: Java Batch

Domain Language of Batch

Page 10: Java Batch

Domain Language of Batch

Page 11: Java Batch

Job Specification Language

Job Job Level Listeners Job Level Properties

Page 12: Java Batch

Step

Each step may be either a chunk type step or batchlet type step

Chunk Periodically Checkpointed ItemBased

Batchlet Task-oriented

Page 13: Java Batch

Chunk

Must have only one ItemReader and ItemWriter ItemProcessor is optional but only a single

processor element may be specified. Each Chunk is processed in a separate transaction ItemWriter is called once per chunk BatchRuntime writes checkpointinfo to

JobRepository

Page 14: Java Batch

Chunk Exception Handling

Page 15: Java Batch

Batchlet

Task-Oriented Batch Step Mutually exclusive with the chunk element. Closer analogy to CBBatchBase.prepare/finish

Page 16: Java Batch

Step Listeners

Chunk Step Step Listener Item Read Listener Item Process Listener Item Write Listener Chunk Listener Skip Listener Retry Listener

Batclet Step Step Listener

Page 17: Java Batch

Step Sequence

Page 18: Java Batch

Transition Elements

Transition Elements next - directs execution flow to the next execution

element. fail - causes a job to end with FAILED batch status. end - causes a job to end with COMPLETED batch

status. stop - causes a job to end with STOPPED batch

status.

Page 19: Java Batch

Transition Elements

Syntax

Page 20: Java Batch

Step Partitioning

Page 21: Java Batch

Step Partitioning

PartitionMapper partitionsOverride -> behaviour when Restart

PartitionReducer PartitionCollector PartitionAnalyzer

Page 22: Java Batch

Batch and Exit Status

Batch Status : Runtime Status Value STARTING STARTED STOPPING STOPPED FAILED COMPLETED ABANDONED

Exit Status: User-defined Any String

Page 23: Java Batch

Job XML Substituion

Job XML supports attribute value substitution Substitutions expressions may include a default

value using the "?:" operator Value is substituted with • Any resolvable Job Properties• Job Parameters• Partition Plan• System Properties

Page 24: Java Batch

Job XML Substitution

Page 25: Java Batch

Batch Programming Model

Described by interfaces, abstract classes, and field annotations.

Javax.batch package and subpackages

Page 26: Java Batch

Batch Property

Must be used with the standard @Inject annotation (javax.inject.Inject).

Used to assign batch artifact property values from Job XML to the batch artifact itself

Page 27: Java Batch

Batch Contexts

StepContext and JobContext are accessible via @Injection

Batch Runtime must ensure the correct context object is injected according to the job or step currently executing.

Page 28: Java Batch

Job Metrics

Chunk-type step metrics are avaliable through the StepExecution runtime object. READ_COUNT, WRITE_COUNT, COMMIT_COUNT, ROLLBACK_COUNT, READ_SKIP_COUNT, PROCESS_SKIP_COUNT, FILTER_COUNT, WRITE_SKIP_COUNT

Page 29: Java Batch

Job Runtime Identifiers

InstanceId ExecutionId StepExecutionId

Page 30: Java Batch

JobOperator

Provides a set of operations to start, stop, restart, and inspect jobs.

Page 31: Java Batch

Application Packaging Model

No unique packaging is required Jar War EJB Jar

Page 32: Java Batch

Batch Artifact Loading

Implementation-specific loader Archive loader

META-INF Thread Context Class Loader

Page 33: Java Batch

Job XML Loading

implementation-specific loader archive loader

Page 34: Java Batch

IBM Extensions

Built on Liberty Profile as the Java Runtime Server Liberty Profile 8.5.5.6 and above

Extensions: Rest interface to JobOperator Command line client for job submission Multi-JVM support: Jobs or partitions can be

executed in a distributed topology

Page 35: Java Batch

IBM JobRepository Implementation

In-memory File-Based Derby Relational database product

Page 36: Java Batch

REST Interface to JobOperator

Provides a way to integrate with Schedulers

Page 37: Java Batch

REST Submit

Page 38: Java Batch

GET Job Instance Information

Page 39: Java Batch

REST GET Job Execution Information

Page 40: Java Batch

REST GET Step Execution Information

Page 41: Java Batch

Multi-JVM Topology

Page 42: Java Batch

Message Selectors

Use to pick up messages by executor servers.

Page 43: Java Batch

Liberty Profile Server.xml

Page 44: Java Batch

Questions