Konfigurieren Sie Persistenzeinheiten so, dass sie in mehreren Gläsern einer Ähre verfügbar sind

StackOverflow https://stackoverflow.com/questions/8370043

Frage

In einer .ear-Datei werden meine EJBs in mehrere JAR-Dateien kopiert und unterliegen einigen technischen Einschränkungen.Und nur eines dieser JARs enthält die Datei persistence.xml, in der ich mehrere Persistenzeinheiten konfiguriert habe.

myear.ear
|---- myjar1.jar
|-------- META-INF/persistence.xml
|---- myjar2.jar
|---- mywar.war

Das Problem besteht darin, dass Jboss die Persistenzkonfiguration für die Klassen im JAR „myjar2“ und im war nicht finden kann:

Die Klassenkonfiguration für ....EjbA.class konnte aufgrund der folgenden Fehler nicht abgerufen werden:Eine Bereitstellungseinheit mit dem Namen XXXXX in der Unterdrückung "Jar2.jar" der Bereitstellung "myear.ear" kann nicht nicht finden.

Um das zu beheben, habe ich versucht, ein neues JAR zu erstellen, das nur die Datei persistence.xml enthält, aber es funktioniert nicht.

Irgendeine Idee, wie ich meine Datei persistence.xml für jedes JAR freigeben könnte, ohne mein gesamtes Ear-Archiv neu zu organisieren?

War es hilfreich?

Lösung

Gemäß der JPA-Spezifikation sollte es Ihnen möglich sein, eine Persistenzeinheit auf EAR-Ebene zu definieren, die für alle Submodule sichtbar ist, die Sie in derselben .ear-Datei definieren:

8.2.2 Geltungsbereich der Persistenzeinheit

...

Eine Persistenzeinheit, die auf der Ebene des Ohrs definiert ist, ist für alle Komponenten in der Anwendung im Allgemeinen sichtbar.Wenn jedoch eine gleichnamige Persistenzeinheit durch eine EJB-JAR-, Kriegs- oder Anwendungs-JAR-Datei innerhalb des Ohrs definiert wird, ist die auf der Ohrstufe definierte Persistenzeinheit für die von dieser EJB- definierten Komponenten nicht sichtbar JAR-, Kriegs- oder Anwendungs ​​-JAR -Datei, es sei denn, die Persistenzeinheit Referenz verwendet den Namen der Persistenzeinheit Name # Syntax, um einen Pfadnamen anzugeben, um die Referenz zu disambiguieren.

In Abschnitt 8 heißt es jedoch:

NOTIZ:Java Persistenz 1.0 unterstützte die Verwendung einer JAR -Datei im Ohrstreifen als Wurzel einer Persistenzeinheit.Diese Verwendung wird nicht mehr unterstützt.Tragbare Anwendungen sollten stattdessen das Ohrbibliotheksverzeichnis für diesen Fall verwenden.Siehe [9].

Also würde ich versuchen, das JAR im lib-Ordner abzulegen.Wenn Sie benötigen, dass es sich bei diesem Modul um ein EJB-Modul handelt, muss es sich im Stammverzeichnis des Ears befinden, sodass Sie mit der Datei persistence.xml ein separates JAR erstellen können.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top