- 如果我將DataSource作爲OSGI中的服務公開,應該如何處理數據庫連接失敗?我應該配置一個DataSource服務的攔截器,它將捕獲數據庫連接失敗異常並取消註冊DataSource服務?或者OSGI容器會爲我處理異常?
- 我應該如何配置消費服務,以便它能夠在DataSource服務不可用的情況下生存下來,並允許用戶再次重新嘗試該事務?
1
A
回答
0
您應該像處理不使用OSGi時一樣處理意外的異常。
您應該使用連接池並將其註冊爲OSGi服務。它會爲你處理連接失敗。即使在使用該連接期間出現異常,您也必須始終關閉連接。 (在java 6之前的finally塊中,以及在java 7之後使用try-with-resources塊)。連接池通過實現DataSource接口來提供它們的功能。
有很多連接池。你可以爲他們谷歌。
我實現了兩個基於commons-dbcp的OSGi組件。一個用於彙集常規數據源,另一個用於彙集XADataSources。該組件選取原始DataSource/XADataSource OSGi服務,而不是註冊新的池化數據源OSGi服務。
您可以在這裏找到該模塊的源:https://github.com/everit-org/commons-dbcp-component
它可在Maven的中央位置:http://search.maven.org/#artifactdetails%7Corg.everit.osgi%7Corg.everit.osgi.jdbc.commons.dbcp%7C2.0.1%7Cbundle
下降罐子到您的OSGi容器後,你會看到的配置可能性WebConsole配置頁面上的組件(如果您有webconsole)。
相關問題
- 1. 處理雲數據庫連接失敗
- 2. 數據庫連接失敗
- 3. 數據庫連接失敗
- 4. 數據庫連接失敗
- 5. 如何處理失敗的Redis連接
- 6. 如何處理WCF連接失敗
- 7. 在PHP中處理和通知數據庫連接失敗
- 8. Oracle如何處理數據庫連接?
- 9. 如何處理Java EE上的Hibernate,C3P0數據庫連接失敗?
- 10. 如何正確處理與數據庫的Django連接丟失?
- 11. 與數據庫的連接失敗:java
- 12. Android數據庫連接失敗
- 13. 與SQL數據庫的連接失敗。
- 14. 連接到mysql數據庫失敗
- 15. MySQL :: connect()數據庫連接失敗?
- 16. 的MongoDB數據庫連接失敗
- 17. 連接到數據庫失敗的DNN
- 18. Jubula PostgreSQL數據庫連接失敗
- 19. PHP數據庫連接失敗
- 20. 連接數據庫失敗服務器
- 21. Php mysqli數據庫連接失敗?
- 22. 與Oracle數據庫連接失敗
- 23. 到mysql數據庫的連接失敗
- 24. pg_dump與數據庫的連接失敗
- 25. Rails postgresql數據庫連接失敗
- 26. 數據庫連接測試失敗
- 27. PDO數據庫連接失敗
- 28. 與MySQL數據庫連接失敗
- 29. STS數據庫連接Ping失敗
- 30. Moodle數據庫連接失敗
>>它會爲你處理連接失敗<<您是否在說OSGI容器將捕獲數據庫連接失敗異常並取消註冊DataSource服務? – isobretatel
否。池數據源將按照您的配置進行操作。例如:它可以在提供任何連接之前運行檢查SQL,並在數據庫不可用時等待超時。即使數據庫不可用,DataSource服務仍保持註冊狀態。 –