Buenas, 
 
Si como dices en el titulo utilizas Java EE, lo correcto seria que utilices inyeccion de dependencias para no tener que gestionar y cerrar asi tu factory directamente.     
Código Java:
Ver original- @PersistenceUnit(unitName="PersistenceUnit") 
- private EntityManagerFactory emf; 
De esta forma sera el propio contenedor el que se encargue de hacer el close y liberar los recursos cuando proceda. 
Tambien puedes hacer lo mismo directamente con el entityManager:   
Código Java:
Ver original- @PersistenceContext(unitName="PersistenceUnit") 
- private EntityManager em; 
Un saludo