J'ai une servlet fonctionnant sur un serveur Oracle OCCAS. Actuellement, je mappe certaines données dans une base de données à une classe d'entité dans mon application en utilisant @Entity annotaion. Cependant, je ne parviens pas à injecter l'EntityManager (@PersistenceContext), et à ma connaissance c'est parce qu'il s'exécute dans mon contexte de servlet et non comme un EJB Entity séparé. La création du gestionnaire via EntityManagerFactory fonctionne, cependant, c'est ce que j'utilise pour le moment.Comment fermer EnityManager lorsqu'il n'est pas injecté?
Maintenant, après un certain nombre de redémarrages de l'application, je reçois une erreur d'espace PermGen. Je pense que c'est lié à la persistance en quelque sorte. Il y a un appel à EntityManager.close() dans ma méthode finalize, mais il n'apparaît jamais dans le journal.
Est-ce une mauvaise manière de faire les choses - suis-je "obligé" d'avoir un Entity Bean séparé, ou comment dois-je nettoyer l'EntityManager?
Merci! Je vais essayer, ou peut-être aller sur la route EJB. Après tout, il y a là un conteneur qui peut faire le travail. Je me suis dit qu'après un redéploiement, l'ancien objet de l'application devrait être prêt pour le nettoyage du GC - et surtout quand PermGen est faible. Tant pis... –