-
Bug
-
Resolution: Done
-
Major
-
1.2.Final, 1.1.Final
-
None
-
None
Section "3.5.2. Declaring a disposer method" has this example:
public class Resources { @PersistenceContext @Produces @UserDatabase private EntityManager em; public void close(@Disposes @UserDatabase EntityManager em) { em.close(); } }
The disposer method above call EntityManager.close() on a container-managed entity manager which result in an IllegalStateException being thrown and the entity manager remains open. This behavior is expected as the JPA specification forbids application code to close a container-managed entity manager. JPA 2.1, section "7.9.1 Container Responsibilities" says:
The container must throw the IllegalStateException if the application calls EntityManager.close on a container-managed entity manager.
This has been proved here and a theoretical walkthough surrounding entity managers combined with CDI scopes is available here.