我有一个运行在Oracle OCCAS服务器上的servlet。目前我使用@Entity annotaion将数据库中的一些数据映射到应用程序中的实体类。 虽然我无法注入EntityManager(@PersistenceContext),并且我的理解是因为它在我的servlet上下文中运行,而不是作为单独的实体EJB运行。 但是,通过EntityManagerFactory创建管理器的工作原理正是我现在使用的。如何在未注入时关闭EnityManager?
现在,在重新启动应用程序后,我得到了PermGen空间错误。我认为这与某种程度上的持久性有关。在我的finalize方法中调用了EntityManager.close(),但它从不在日志中显示。
这是一种糟糕的做事方式 - 我需要“有一个单独的实体Bean,或者我该如何清理EntityManager?
谢谢!我会尝试,或者可能去EJB路线。毕竟,那里有一个容器可以完成这项工作。 我认为在重新部署后,旧的应用程序对象应该准备好用于GC清理 - 特别是当PermGen运行不足时。好吧... – 2008-11-20 17:08:30