contents
foreword
preface
acknowledgments
about this book
about the cover illustration
Part 1 Background
- 1 Introducing Spring Batch
- 1.1 What are batch applications?
- 1.2 Meet Spring Batch
- 1.3 Introducing the case study
- 1.4 Reading and writing the product data
- 1.5 Decompressing the input file with a tasklet
- 1.6 Testing the batch process
- 1.7 Skipping incorrect lines instead of failing
- 1.8 Summary
- 2 Spring Batch concepts
- 2.1 The batch domain language
- 2.2 The Spring Batch infrastructure
- 2.3 Anatomy of a job
- 2.4 Summary
Part 2 Core Spring Batch
- 3 Batch configuration
- 3.1 The Spring Batch XML vocabulary
- 3.2 Configuring jobs and steps
- 3.3 Configuring the job repository
- 3.4 Advanced configuration topics
- 3.5 Summary
- 4 Running batch jobs
- 4.1 Launching concepts
- 4.2 Launching from the command line
- 4.3 Job schedulers
- 4.4 Launching from a web application
- 4.6 Stopping jobs gracefully
- 4.7 Summary
- 5 Reading data
- 5.1 Data reading concepts
- 5.2 Reading flat files
- 5.3 Reading XML files
- 5.4 Reading file sets
- 5.5 Reading from relational databases
- 5.6 Using other input sources
- 5.7 Implementing custom readers
- 5.8 Summary
- 6 Writing data
- 6.1 Data-writing concepts
- 6.2 Writing files
- 6.3 Writing to databases
- 6.4 Adapting existing services for reuse
- 6.5 Writing to JMS
- 6.6 Sending email messages
- 6.7 Implementing custom item writers
- 6.8 Advanced writing techniques
- 6.9 Summary
- 7 Processing data
- 7.1 Processing items
- 7.2 Transforming items
- 7.3 Filtering and validating items
- 7.4 Chaining item processors
- 7.5 Summary
- 8 Implementing bulletproof jobs
- 8.1 What is a bulletproof job?
- 8.2 Skipping instead of failing
- 8.3 Retrying on error
- 8.4 Restart on error
- 8.5 Summary
- 9 Transaction management
- 9.1 A transaction primer
- 9.2 Transaction management in Spring Batch components
- 9.3 Transaction configuration
- 9.4 Transaction management patterns
- 9.5 Summary
Part 3 Advanced Spring Batch
- 10 Controlling execution
- 10.1 A complex flow in the online store application
- 10.2 Driving the flow of a job
- 10.3 Sharing data between steps
- 10.4 Externalizing flow definitions
- 10.5 Stopping a job execution
- 10.6 Summary
- 11 Enterprise integration
- 11.1 What is enterprise integration?
- 11.2 Spring Batch and enterprise integration
- 11.3 Spring Integration, a toolbox for enterprise integration
- 11.4 RESTful job submission with Spring MVC
- 11.5 Triggering jobs from file system events
- 11.6 RESTful job monitoring with Spring MVC
- 11.7 Summary
- 12 Monitoring jobs
- 12.1 Introducing monitoring
- 12.2 Accessing batch execution data
- 12.3 Monitoring with listeners
- 12.4 Web monitoring with Spring Batch Admin
- 12.5 Monitoring with JMX
- 12.6 Summary
- 13 Scaling and parallel processing
- 13.1 Scaling concepts
- 13.2 Multithreaded steps
- 13.3 Parallelizing processing (single machine)
- 13.4 Remote chunking (multiple machines)
- 13.5 Fine-grained scaling with partitioning
- 13.6 Comparing patterns
- 13.7 Summary
- 14 Testing batch applications
- 14.1 The what and why of testing
- 14.2 Unit testing
- 14.3 Integration testing
- 14.4 Functional testing
- 14.5 Summary
 
appendix A Setting up the development environment
appendix B Managing Spring Batch Admin
index