我有一個要求,我們創建一個Statelebean,它在EJB3環境中創建一個Container Managed EntityManager實例(使用@PersistenceContext)。 在這個創建的單個Stateless bean中,我們創建了在特定時間間隔內執行的線程。這個線程將運行數月。 我對從容器中獲取的單個EntityManager實例(使用CMP)是否可用於整個生命週期(> 1年)存在疑問。Entitymanager實例的生命週期
2
A
回答
1
EntityManager的生命週期:我認爲這更多的是DB連接生命週期的問題。在這種情況下,當JPA提供程序檢測到連接超時時,如果您配置了JDBC連接字符串wth autoReconnect=true
,則您會期望建立另一個連接。此外,你應該尋找設置超時的可能性。
另一方面,您可能會忽略在EJB中您不允許打開新線程。就你而言,當涉及到管理實體(在不同線程中進行更改)和交易問題時,你會遇到一些問題。相反,我會使用Timer Service。
1
一個EntityManager似乎意味着代表一個事務空間。對我來說,在一個長期存在的線程的整個生命週期中使用單個事務空間是沒有意義的,但這取決於你的設計和提供者實現的可行性。如果您要使用單個EM,請確保它不在線程之間共享,並監視其資源使用情況,因爲它們是JPA要求將通過它們讀取的每個實體都緩存爲受管實例;您可能需要偶爾調用em.clear()來分離託管實例,以便它們可以在邏輯點進行垃圾回收。
我不認爲注入會起作用,因爲容器應該將EntityManager綁定到注入到的bean的生命中,而不是線程的生命。您將需要獲取EntityManagerFactory,併爲您的線程獲取/管理您自己的EntityManager生命週期。
相關問題
- 1. 活動實例的生命週期
- 2. 監控ec2實例的生命週期
- 3. 實例生命週期管理
- 4. AWS AutoScaling - 實例生命週期
- 5. 實例化對象生命週期
- 6. 流星模板實例生命週期
- 7. Java外部實例生命週期
- 8. 方法論和生命週期的現實生活實例
- 9. StructureMap - 每個命名實例的不同生命週期
- 10. 帶有示例的JSF生命週期
- 11. ASP .NET應用程序生命週期+ Singleton實例壽命
- 12. Spring事務中的Hibernate實體生命週期和會話生命週期
- 13. WCF服務的實例的生命週期?
- 14. 生命週期單一實例的iOS的後從背景
- 15. EntityManager生命週期和持久客戶端 - 服務器通信
- 16. JPA EntityManager會話生命週期關閉事件
- 17. 單個實例活動的Android片段生命週期
- 18. 管理WCF客戶端的實例生命週期
- 19. EC2容器服務實例的生命週期
- 20. 如何獲取Mule實例的生命週期狀態?
- 21. 谷歌應用程序引擎實例的生命週期
- 22. ColdFusion CFC實例創建的生命週期是什麼?
- 23. servlet生命週期
- 24. JUnit生命週期
- 25. popToViewController生命週期
- 26. JSF2.0生命週期
- 27. ScheduledExecutorService生命週期?
- 28. BroadcastReceiver生命週期
- 29. BroadcastReceiver生命週期
- 30. UIControl生命週期