Seam / Hibernate: Liquibase vor dem Start von JPA

8

Ich habe eine Java EE-Webanwendung (Hibernate3, Naht), die ich im Weblogic-Container verwende. Ich möchte Liquibase für Schema-Migrationen vorstellen. Derzeit verwenden wir

%Vor%

was wir löschen wollen, weil es gefährlich sein kann.

Ich möchte, dass die Migration automatisch in Bereitstellungen stattfindet, daher verwende ich die Servlet-Listener-Integration.

In web.xml ist der erste Listener:

%Vor%

Leider kommt dieser Listener nach der Hibernate-Initialisierung ins Spiel und löst fehlende Tabellenfehler aus (weil das Schema leer ist). Ich google-wie ein Chef für Stunden und ich bin jetzt ein bisschen verwirrt.

Vielen Dank im Voraus

AKTUALISIEREN

Wenn ich <property name="hibernate.hbm2ddl.auto" value="none" /> einstelle, beendet liquibase den Job erfolgreich und die App startet wie erwartet. Wenn ich validate einstelle, scheint es, als ob die Validierung des Hibernate-Schemas vor der liquibase stattfindet und wegen fehlender Tabellen schreit.

AKTUALISIEREN

Es scheint so, als ob Seam Hibernate initialisiert, aber Liquibase-Listener vor SeamListener aufgelistet ist, also habe ich keine Ahnung, wie man Schema-Validierung und Liquibase gleichzeitig aktivieren kann ...

    
gyorgyabraham 06.11.2013, 13:12
quelle

2 Antworten

1

Nach meinem Verständnis benötigt der LiquibaseServletListener den Pfad zum Ändern der Protokolldatei, der mit liquibase.changelog context param übergeben wird. Hast du schon ein Änderungsprotokoll erstellt oder fehle ich hier etwas?

Sie können sich die von Liquibase zur Verfügung gestellte Liquibase-Hibernate-Integration Bibliothek ansehen. Diese Bibliothek funktioniert sowohl mit der klassischen Hibernate-Konfiguration (über .cfg- und .xml-Dateien) als auch mit der JPA-Konfiguration über persistence.xml.

AFAIK, das Changelog generieren und das Änderungsprotokoll ausführen, sind zwei separate Prozesse. Die Liquibase-Hibernate-Integrationsbibliothek hilft beim Generieren des Änderungsprotokolls aus dem Unterschied des aktuellen Zustands der Entitäten in der Persistenzeinheit und dem aktuellen Datenbankzustand.

    
Shailendra 14.11.2013 13:28
quelle
1

Wie die Reihenfolge der Listener im Web festgelegt wird .xml

Sie sollten platzieren:

%Vor%

vor ORM oder Framework andere verwandte Listener.

Ich verwende die LiquiBase-Aktivierung von Spring Beans, um die DB-Authentifizierungsdatenduplizierung zu reduzieren, indem ich die bereits bereitgestellte Datenquellen-Bean verwende:

%Vor%

Um die Verwendung der Bestellung einzuschränken depends-on Attribut:

%Vor%     
gavenkoa 20.12.2015 12:08
quelle