[英]Using Liquibase with OSGI and Hibernate
我想將一個Liquibase集成到我的項目中。 我的第一個想法是使用一個藍圖bean,它通過onInit方法啟動Liquibase更新。 但是休眠狀態存在問題,因為我們將“ hbm2ddl.auto”設置為“ validate”,並且在我的bean的onInit之前執行了驗證。 (我們在META-INF中將容器管理的持久性與persistence.xml一起使用)。 因此,我的第二個嘗試是使用BundleTracker,並且在清單中存在某些條目時,liquibase會執行db update。 它運行良好,但是如果數據庫更新失敗,我將強制執行該捆綁包。 但是我不知道如何從BundleTracker方法addBundle中做到這一點。 有什么方法可以防止從BundleTracker事件啟動捆綁包?
我有另一個可能的想法,可以執行此操作來創建執行更新的附加捆綁包,而其他具有persistence.xml的捆綁包將依賴於此捆綁包。 但是我們有很多與persistence.xml捆綁在一起的東西,這就是為什么BundleTracker解決方案對我來說似乎更好的原因。
在幾乎所有情況下,此類依賴項都應建模為服務。 啟動/停止捆綁包聽起來很容易,但隨着時間的流逝,它會讓您陷入可怕的可吸入泥潭。
一旦動態依賴項成為服務,OSGi中的所有部分(尤其是聲明性服務)就使其在動態處理方面變得微不足道。 不僅在“快樂”的情況下,而且在很多方面,這些事情都可能導致錯誤。
因此,在您的情況下,您將創建一個LiquibaseHappy服務或其他東西,並且使用db的捆綁軟件應依賴於它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.