Я хотел бы интегрировать Liquibase в свой проект. Моей первой идеей было использовать bean-компонент blueprint, который запускает обновление Liquibase из метода onInit. Но была проблема со спящим режимом, потому что у нас для «hbm2ddl.auto» установлено значение «validate», и проверка была выполнена до того, как мой bean-компонент onInit. (мы используем персистентность, управляемую контейнером, с persistence.xml в META-INF). Итак, моя вторая попытка состояла в том, чтобы использовать BundleTracker, и когда какая-то запись в манифесте существует, liquibase выполняет обновление базы данных. Он работает хорошо, но я хотел бы, чтобы пакет не запускался, если обновление базы данных не будет успешным. Но я понятия не имею, как это сделать из метода BundleTracker addBundle. Есть ли способ предотвратить запуск пакета из события BundleTracker?
У меня есть еще одна возможная идея сделать это, чтобы создать дополнительный пакет, который выполняет обновление, а другой пакет с persistence.xml будет зависеть от этого пакета. Но у нас много бандлов с persistence.xml, поэтому решение с BundleTracker мне кажется лучше.