Il nostro progetto ha più moduli EJB e vogliamo condividere un singolo file persistence.xml
tra di loro.Condividi lo stesso JPA persistence.xml su più JAR EJB all'interno di EAR
Inseriamo il file persistence.xml
nella directory EARs META-INF, ma l'unità di persistenza non è disponibile in fase di esecuzione. Sembra che il file non venga mai letto poiché abbiamo forzato classi errate e file jar, ma non succede nulla.
Perché WebLogic non legge il file persistence.xml
all'interno di EAR?
Viene visualizzato il seguente errore durante l'esecuzione del codice, non viene trovato alcun PU (unità di persistenza disponibili: []).
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>
Struttura (unità di persistenza è posto all'interno dell'orecchio)
EAR +
|- META-INF +
| - persistence.xml
|- ejb1-module.jar
|- ejb2-module.jar
|- ejb3-module.jar
Usiamo WebLogic 10.3.6 che utilizza JPA 1.0 e TopLink/EclipseLink che navi con esso.
Perché non lo metti in un file jar dedicato e tutti i tuoi moduli ejb dipendono dal vaso aggiuntivo? – mp911de
Abbiamo bisogno di impacchettare i nostri moduli EJB in due EAR che utilizzano database diversi. Il modo migliore per noi sarebbe quello di mettere persistence.xml in EAR. – BonanzaOne