我有一個運行在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