Wie konfiguriere ich einen EntityManager in einer Jersey / HK2-Anwendung richtig?

Ich habe eine Jersey-2 / HK2-Anwendung, die JPA-Persistenz verwendet. DasEntityManager wird beim Start so gebunden

public MyApplication() {
    // ...
    register(new AbstractBinder() {
        @Override
        public void configure() {
          bindFactory(EmFactory.class)
            .to(EntityManager.class)
            .in(RequestScoped.class);
        }
    });
}

mit der Fabrikklasse als

public class EmFactory implements Factory<EntityManager> {

    private static final String PERSISTENCE_UNIT = "unit";

    private EntityManagerFactory emf;
    private CloseableService closeableService;

    @Inject
    public EmFactory(@Named(PERSISTENCE_UNIT) String persistenceUnit,
            CloseableService closeableService) {
        emf = Persistence.createEntityManagerFactory(persistenceUnit);
        this.closeableService = closeableService;
    }

    @Override
    public EntityManager provide() {
        final EntityManager entityManager = emf.createEntityManager();
        closeableService.add(new Closeable() {

            @Override
            public void close() throws IOException {
                if(entityManager.isOpen()) {
                    entityManager.close();
                }
            }
        });
        return entityManager;
    }

    @Override
    public void dispose(EntityManager entityManager) {
        if(entityManager.isOpen()) {
            entityManager.close();
        }
    }
}

das funktioniert, aber dann bekomme ich bei jeder Anfrage eine Warnung in den Protokollen, dass ein EntityManager bereits registriert ist:

HHH000436: Entity manager factory name (unit) is already registered. \
  If entity manager will be clustered or passivated, specify a unique \
  value for property 'hibernate.ejb.entitymanager_factory_name'

Was mache ich falsch? Wie initialisiere ich einen EntityManager in einer jersey-2 / hk2-Anwendung?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage