Liquibase: как выполнить Servlet Listener перед созданием EntityManager - PullRequest
1 голос
/ 02 августа 2010

Мне удается выпустить Liquibase Update , как описано в Liquibase Servlet Listener .

<listener>
    <listener-class>liquibase.servlet.LiquibaseServletListener</listener-class>
</listener>

Это эффективно выполняет мой список изменений.

Однако, это происходит после настройки EntityManager. Очевидно, что уже слишком поздно, если я хочу, чтобы мой поставщик постоянства проверил схему базы данных:

   <property name="hibernate.hbm2ddl.auto" value="validate"/>

... таблицы просто еще не существуют.

Есть ли способ сделать Liquibase для обновления схемы базы данных, до инициализация EntityManager?

PS: AppServer - это JBoss6

========================= [ОБНОВЛЕНИЕ] ================ ===========

Исходя из краткого обсуждения с Натаном ниже, мне, возможно, придется перефразировать вопрос следующим образом:

Кто-нибудь знает хук кода в последовательности запуска JBoss до инициализация EntityManager?

Если это существует, я могу переместить логику обновления Liquibase в это место?

1 Ответ

0 голосов
/ 02 августа 2010

Ваш EntityManager также запущен в слушателе (например, в слушателе Spring)?

Обычно серверы приложений запускают прослушиватели в том порядке, в котором они перечислены в вашем файле web.xml, убедитесь, что ваш прослушиватель liquibase указан в списке перед тем, как начинается спящий режим.

...