有沒有一種方法可以創建一個在整個應用程序生命週期中保持活動狀態的持久jcr會話?背景是,我想使用此會話的JCR EventListener更新我的觀看任何傳入的事件。因此,這個聽衆必須始終與我認爲的一個會話連接。創建持久的jcr會話
0
A
回答
1
是的,您確實可以創建一個常規會話,使用它來註冊您的事件偵聽器,並根據需要保持活動狀態。
實際上,事件監聽器只會在用於註冊監聽器的會話仍然存在的情況下被通知事件。當然,這個長時間的會話可能會阻止存儲庫關閉,所以當您的應用程序或服務關閉時,請務必註銷會話。
一個常見的最佳實踐是讓聽衆儘可能少地完成工作。監聽器是異步調用的(意味着存儲庫不會等到完成監聽器才完成更改),這意味着這可能是在單獨的線程上完成的,如果完成需要很長時間,監聽器可能會導致資源問題。因此,如果工作不是微不足道的,可以通過(例如)將工作提交到隊列並單獨處理隊列來儘快離線。
另一個最佳做法是讓聽衆而不是使用與用於註冊它們的會話相同的內容來讀取或寫入內容。 JCR會話不需要是線程安全的,大多數實現do not implement concurrency。這意味着它們不能被多個線程安全地使用,即使這隻需要閱讀內容。 (有些實現可以保證Sessions are thread safe,但是最好避免依賴這個特性,除非你想或者需要鎖定那個實現。)
總之,如果一個監聽器需要做任何工作,下車調用線程並使用單獨的會話來讀取或更新內容。
相關問題
- 1. 會話持久性
- 2. JBoss6不會持久會話
- 3. Rails會話不會持久
- 4. PHP中的持久會話
- 5. 創建持久的php登錄cookie會話
- 6. Laravel會話不持久
- 7. LDAP會話持久性
- 8. 比會話更持久?
- 9. 會話Cookie與持久Cookie
- 10. Ruby(Savon)持久SSL會話?
- 11. 會話不持久[PASSPORT]
- 12. Drupal HTTP/HTTPS持久會話?
- 13. Android保持會話永久
- 14. Java EE/Struts持久會話
- 15. XMPP會話持續多久?
- 16. 如何在PHP中創建持久會話?
- 17. VBA:在Excel中創建會話持久對象(散列)
- 18. 我的Laravel 5.2.10會話不會持久
- 19. 通過表單提交創建的PHP會話變量不會持久
- 20. Django會話值偶爾不會持久
- 21. Wicket會話不會持久GAE
- 22. Symfony 1.4會話不會持久
- 23. ASP.NET EC2上的ASP.NET會話持久性
- 24. 流星中的持久會話
- 25. 忽略會話中的持久性Cookie
- 26. 會話持久性的變量包裝
- 27. ASP.NET MVC中會話cookie的持久性
- 28. ssh與node.js的持久會話
- 29. 定義Cookie的會話持久性
- 30. 我的會話將持續多久