JSR-352: Rework how the retrieval of the EntityManagerFactory works

Description

See https://github.com/WASdev/standards.jsr352.jbatch/issues/50 for an explanation; in short, our whole approach to store the entity manager factory in the job context is invalid in the reference implementation for JSR-352, so we should rework it.

I think our best course of action would be to:

  • rely on injection in order to retrieve the EntityManagerFactoryRegistry instead of requiring users to override JobContextSetupListener. We would have, whenever we need to retrieve the entity manager factory, a property like `@Inject private EntityManagerFactoryRegistry emfRegistry`, plus the two batch properties `entityManagerFactoryScope` and `entityManagerFactoryReference`.

  • move the code currently in JobContextSetupListener to a static utility class, and reuse it wherever we know that the job context may not be set up yet (i.e. when the job starts and when a partition starts).

This implies one major change: remove support for `ActiveSessionFactoryRegistry` (useful in Java SE applications), because if we need injection anyway, there's no reason for such a hack.

Environment

None

Status

Assignee

Yoann Rodière

Reporter

Yoann Rodière

Labels

None

Suitable for new contributors

None

Feedback Requested

None

Components

Priority

Blocker