Nasz projekt ma wiele modułów EJB i chcemy udostępnić pojedynczy plik persistence.xml
między nimi.Udostępnij ten sam plik JPA persistence.xml w wielu plikach JAR EJB wewnątrz EAR
Umieszczamy plik persistence.xml
w katalogu EARs META-INF, ale jednostka utrwalania nie jest dostępna w środowisku wykonawczym. Wygląda na to, że plik nigdy nie jest czytany, ponieważ wymusiliśmy niepoprawne klasy i pliki jar, ale nic się nie dzieje.
Dlaczego WebLogic nie czyta pliku persistence.xml
wewnątrz pliku EAR?
Otrzymujemy następujący błąd podczas uruchamiania kodu, nie znaleziono PU (Dostępne jednostki utrwalania: []).
Caused By: java.lang.IllegalArgumentException: No persistence unit named 'em' is available in scope ejb1-module.jar. Available persistence units: []
persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence">
<persistence-unit name="system-unit" transaction-type="JTA">
<jta-data-source>sysmtem-ds</jta-data-source>
<jar-file>../ejb1-module.jar</jar-file>
<class>...</class>
<class>...</class>
<class>...</class>
</persistence-unit>
</persistence>
Struktura (jednostka Trwałość jest umieszczony wewnątrz ucha)
EAR +
|- META-INF +
| - persistence.xml
|- ejb1-module.jar
|- ejb2-module.jar
|- ejb3-module.jar
Jesteśmy przy WebLogic 10.3.6 który wykorzystuje JPA 1.0 i TopLink/EclipseLink że wysyła z nim.
Dlaczego nie umieścić go w dedykowanym pliku jar i wszystkie moduły ejb są zależne od dodatkowego słoika? – mp911de
Musimy spakować nasze moduły EJB do dwóch zestawów EAR, które korzystają z różnych baz danych. Najlepszym sposobem byłoby dla nas umieszczenie pliku persistence.xml w pliku EAR. – BonanzaOne