我看到在每一個EJB教程這說明,但我看不出他們是有用的。什麼是我需要這些的場景?何時@PrePassivate和@PostActivate註釋有用?
2
A
回答
4
大多數時候當你使用有狀態的會話豆(這是不推薦真的,除了一些很少需要的條件),這可能是有用的容器管理和重用一些非活動的連接在某個點的時間,以幫助保持從您的數據庫的連接數在一定的最佳數量。
例如你的DBMS可以管理1000連接。因此,您可以在容器中創建一個大小爲1000的連接池(Application Server,例如GlassFish,Weblogic,...)。
然後,當你的應用程序達到1000屆例如數量,如果其他用戶希望成爲進入到應用程序時,他/她應該等到1000個連接中的一個被釋放。
在這種形勢下,Passivate/Activate
的機制可能是有用的。因爲很明顯Passivate/Activate
在小應用程序中不會發生。但對於一些高度使用的併發用戶數量很大的應用程序,這可能由於池大小,非活動超時以及其他一些參數而發生。
例場景:
也許至少200出1000個連接採取了很多領域的一些大單的一些數據項。所以用戶至少需要2或3分鐘才能完成數據輸入。在這3分鐘內,專用於有狀態會話Bean的連接處於非活動狀態,可用於其他用戶(其他會話Bean)。
因此,在指定的超時後容器將passivate
會話bean的當前狀態(將它們序列化到特定的數據庫或文件或內存)並釋放其連接到要使用的連接池。
當用戶完成表單並單擊提交按鈕時,容器將重新分配池中的連接(如果可用),並且該會話bean的先前鈍化狀態將繼續從鈍化。
因此@PrePassivate
和@PostActivate
對您有用,如果您需要在該事件中進行一些手動操作。
希望這將是有益的。
相關問題
- 1. 如何在註釋中使用註釋?
- 2. 禁用所有Resharper警告和註釋
- 3. Hibernate註釋。如何註釋?
- 4. ByteBuddy和註釋
- 5. 何時處理Java註釋?
- 6. 註釋模型:沒有註釋!
- 7. DecisionTaskTimedOut使用@Asynchronous註釋時
- 8. 有用的Java註釋
- 9. CDI注入和@Model註釋
- 10. 彈簧注射和註釋
- 11. 註釋在PHP中如何有用?
- 12. 註釋在SQL查詢中包含註釋時性能如何?
- 13. 多態註釋,當註釋驗證失敗時如何渲染?
- 14. 如何註釋掉已有多行註釋的代碼塊?
- 15. liquibase和hibernate註釋
- 16. Scala和@Inject註釋
- 17. Katharsis和JPA註釋
- 18. 3D註釋和PdfLayer
- 19. GetMapping和PostMapping註釋
- 20. JAX-WS和註釋
- 21. 鈦 - Mapview和註釋
- 22. robotium和android註釋
- 23. 枚舉和註釋
- 24. 常量和註釋
- 25. JPA註釋和ConstraintViolationException
- 26. @Model註釋和MVC
- 27. PoEdit和PHP註釋
- 28. EasyMock和@Value註釋
- 29. 區分用戶註釋和其他註釋
- 30. 用註解註釋的方法的方面,用另一個註釋註釋