stumped quando si tratta della posizione del mio file persistence.xml. Sto usando eclipselink 2.4 come mia implementazione JPA 2.0 e ho il mio persistence.xml che si trova sotto src/main/resources/META-INF/persistence.xml come molti messaggi di stato.JPA persistence.xml META-INF non funziona correttamente
Il primo numero: Dopo la pubblicazione sul mio server all'interno di eclipse, viene visualizzato un errore che indica che il mio persistence.xml non è stato trovato.
Exception: : java.lang.IllegalArgumentException: No persistence unit named 'X'
is available in scope Webapp. Available persistence units: [] at
Ecco il codice per il mio persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="X" transaction-type="JTA">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<jta-data-source>localJTA</jta-data-source>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="eclipselink.target-server" value="WebLogic"/>
<property name="eclipselink.logging.level" value="FINEST"/>
</properties>
</persistence-unit>
</persistence>
Se mi muovo META-INF per webapp/WEB-INF/classes/META-INF allora funziona ! Non riesco a capire quale sia il problema.
Ho controllato i progetti di costruire il percorso e tutto sembra a posto lì.
La seconda questione che sto avendo è che la mia classe di entità annotato non viene prelevato automaticamente dal EclipseLink. Nella mia configurazione JPA ho selezionato automaticamente le classi annotate.
Ho anche il seguente nel mio xml
<exclude-unlisted-classes>false</exclude-unlisted-classes>
tecnologie utilizzate: WebLogic Server 12c, EJB 3.1, JPA 2.0, M2E-WTP, e JSF 2.1
Aggiornamento 1: Lasciando META-INF sul percorso src/main/resources/META-INF/persistence.xml e l'esecuzione di Maven installazione per creare il file di guerra, la cartella META-INF sia posizionato correttamente in WEB-INF/classes/META INF/persistenza. xml come dovrebbe essere (all'interno della guerra). Sembra che sia solo ed è un problema quando la webapp viene creata ed eseguita localmente in Eclipse. Qualcuno può spiegarlo?
Aggiornamento 2: Lasciando META-INF in src/main/risorse cioè src/main/resources/META-INF/persistence.xml e di seguito nel mio persistence.xml piuttosto che esplicitamente messa in vendita la classe di entità
<exclude-unlisted-classes>false</exclude-unlisted-classes>
funziona SE costruisco la guerra e la distribuisca tramite la console weblogic tramite Internet Explorer. Perché non funziona all'interno di Eclipse !?
Update 3:
hai ispezionare ciò che viene costruito -Sì, all'interno di Eclipse devo costruire insieme a automaticamente. Guardando nella cartella del progetto, vedo il pacchetto java com, la cartella META-INF contenente persistence.xml e la cartella delle risorse in Webapp/target/classes.
Se la guerra è lo stesso -Sei riferendosi al Webapp.cartella war trovata in C: \ workspace.metadata.plugins \ org.eclipse.wst.server.core \ tmp0 \ Weblogic12cDomain_auto_generated_ear_ \ Webapp.war? Se è così, l'unica cosa lì dentro è WEB-INF \ lib \ jsf-impl-2.1.7.jar
poi hai ispezionato il classpath usato per testare la tua app in Eclipse - Questa voce si trova nel mio classpath come previsto in Webapp/.classpath
se il persistence.xml nella directory delle risorse si trova sul classpath per primo, verrà prelevato al posto di quello in war o in quello nella directory corretta - La mia comprensione è Eclipse costruirà il progetto, quindi copierà il contenuto sul server senza generare un file di guerra.
Ecco ciò che è alla radice del Maven generato Webapp.war:
Ecco cosa è alla radice della cartella di progetto Webapp:
Ecco cosa c'è nella root di Webapp.war FOLDER in C: \ workspace.metadata.plugins \ org.eclipse.wst.server.core \ tmp0 \ Weblogic12cDomain_auto_generated_ear_ \ Webapp.war
se il persistence.xml nella directory risorsa è nel classpath in primo luogo, saranno raccolti al posto di quello in guerra o uno nella directory corretta. - Non sei sicuro di cosa intendi con questo. Il persistence.xml nella mia risorsa/META-INF è quello che voglio prelevare. Non sei sicuro di cosa ha a che fare un file di guerra? In entrambi i casi dovrebbero essere la stessa persistenza.xml, penserei.
Qualsiasi aiuto è MOLTO apprezzato !!
Thx Chris! questo ha senso, tuttavia non funziona in eclipse! =/Si prega di vedere i miei aggiornamenti. – Padawan
Chris puoi per favore cambiare la tua risposta ad un commento in modo che gli altri non pensino che la domanda abbia avuto risposta? – Padawan
Se non è quello che cerchi e vuoi più esposizione, metti una taglia su di essa, o fai quello che hai fatto - chiedi di nuovo con più o informazioni diverse. Hai detto che questo si verifica solo "quando si costruisce in Eclipse" - hai ispezionato ciò che viene costruito? Se la guerra è la stessa, hai ispezionato il classpath utilizzato per testare la tua app in Eclipse? se il persistence.xml nella directory delle risorse è prima sul classpath, verrà prelevato al posto di quello in war o di uno nella directory corretta. – Chris