2012-04-19 19 views
5

Ho un'applicazione che utilizza JPA/Hibernate e Google Guice. Guice viene avviato in uno ServletContextListener e imposta lo stesso EntityManagerFactory.JBoss AS7 Caricamento automatico JPA

L'applicazione funziona correttamente su Tomcat 7, ma quando si esegue la distribuzione su JBoss AS7 non riesce perché JBoss decide di configurare automaticamente JPA prima di richiamare il mio ServletContextListener.

Come posso evitare che JBoss inizializzi JPA automaticamente e invece attenda il mio ServletContextListener per farlo?

Aggiorna

Secondo il legame che James disponibile sotto:

Durante la distribuzione dell'applicazione, viene rilevata uso JPA (es persistence.xml o @PersistenceContext/annotazioni Unit) e inietta dipendenze Hibernate nella distribuzione dell'applicazione.

https://docs.jboss.org/author/display/AS71/JPA+Reference+Guide#JPAReferenceGuide-Introduction

Ho bisogno di capire come disattivare questa funzionalità "auto-detect".

Aggiornamento # 2

gestione Contenitore di JPA può essere disabilitata aggiungendo la seguente struttura al persistence.xml:

<property name="jboss.as.jpa.managed" value="false" /> 

Secondo this topic, come di febbraio 2012 questa funzionalità è solo disponibile in una build notturna.

+0

Questo è abbastanza vecchio, ma ho incontrato lo stesso problema. Il mio ulteriore problema è che non sto usando persistence.xml ma piuttosto dichiarando il factory manager di entità con il codice java e sembra che l'aggiunta della proprietà venga ignorata e non faccia alcuna differenza. Qualche idea se può essere risolto con questo approccio? – andreadi

+0

@andreadi Nessuna idea. Stavo solo testando un'applicazione su AS7, ma non l'ho mai utilizzata per quel progetto. La soluzione migliore è probabilmente quella di fare una nuova domanda con le tue specifiche. –

risposta

2

JBoss AS7 è un server Java EE completo. Ciò significa che un'implementazione JPA viene inclusa in esso. In Tomcat devi fornire la tua implementazione JPA e in pratica esegui JPA come faresti in Java SE.

Si consiglia di leggere la documentazione JPA reference per AS7.

Hai anche CDI quindi non c'è bisogno di Guice. Probabilmente si può usare al posto di Guice CDI, ma sinceramente non si poteva dire come :-)

+0

Ho già utilizzato Oracle WebLogic 11g e non carica in modo forzato JPA per impostazione predefinita, quindi sembra strano che JBoss lo faccia. Controllerò il link però. –

+0

Probabilmente vedrà il tuo persistence.xml e il caricamento di Hibernate e dell'API JPA. Sono quasi certo che la maggior parte dei server EE lo fa, ma non posso garantirlo.Ho fatto un po 'di ricerche e non mi è venuto in mente nulla su come disabilitarlo. Potrebbe essere possibile disabilitare il sottosistema JPA e raggruppare Hibernate con l'applicazione. –

+0

Non ho trovato alcun modo per disabilitare questa funzione. Ho svalutato la tua risposta e la accetterò all'inizio della prossima settimana quando torno in ufficio se nessun altro fornisce informazioni su come disabilitare l'auto-rilevamento di JPA. Apprezzo la tua assistenza su questo, il tuo collegamento ha almeno spiegato cosa stava succedendo. –

Problemi correlati