2013-01-03 18 views
6

Sto scrivendo un'applicazione web e devo aggiungere ibernazione. Ho configurato Maven (pom.xml), ecc, ma ora sto ottenendo il seguente errore:applicazione web - dove posizionare il file hibernate.cfg.xml?

exception 
javax.servlet.ServletException: org.hibernate.HibernateException: /hibernate.cfg.xml not found 

sto utilizzando NetBeans. Ho provato a spostare questo file su WEB-INF, cartella di progetto root, directory src (pacchetto predefinito) ma non funziona ancora. Come posso fare? Non voglio impostare percorso di questo file di codice in questo modo:

Configuration cfg = new Configuration(); 
cfg.addResource("/some/path/to/this/file/Hibernate.cfg.xml"); 
+0

Dovrebbe essere nella radice del classpath. –

+0

Btw: come posso controllare classpath? – Quak

+0

Cosa intendi con "verifica percorso di classe"? –

risposta

8

Ho sempre messo in WEB-INF/classes directory (file compilati vengono memorizzati lì).

+0

Grazie, ho creato la directory delle classi in WEB-INF e sta funzionando bene. – Quak

+0

Prego;) –

+1

Strano che tu abbia dovuto -creare- quella directory. Hai almeno una classe che deve andare lì! Mi sembra che tu non stia usando correttamente Netbeans qui, ma posso solo immaginarlo. – Gimby

3

È necessario aggiungere hibernate.cfg.xml in una cartella nel classpath. In un'app webb, le classi WEB-INF/class si trovano nel classpath per impostazione predefinita. Puoi usare quella cartella o crearne una nuova per le tue risorse (supponendo che tu le voglia tenere separate) e quindi impostare la nuova cartella in classpath regolando le impostazioni del progetto.

1

È possibile caricare hibernate.cfg.xml da una directory diversa (non necessariamente il classpath) utilizzando il metodo configure (File configFile) che accetta l'argomento File hibernateConfig. (nota, sto usando ibernazione 4.3.7)

Il vantaggio è che è possibile posizionare il file di configurazione di sospensione in una directory separata a cui si ha l'obbligo di accedere (a scopo di manutenzione o modifica) oltre al raggruppamento con il file .war a cui potresti non avere accesso.

Esempio segue:


String hibernatePropsFilePath = "/etc/configs/hibernate.cfg.xml"; 
File hibernatePropsFile = new File(hibernatePropsFilePath); 

Configuration configuration = new Configuration(); 
configuration.configure(hibernatePropsFile); 

StandardServiceRegistryBuilder serviceRegistryBuilder = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()); 

ServiceRegistry serviceRegistry = serviceRegistryBuilder.build(); 

SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry); 

0

Questo file deve essere nella radice del classpath dell'applicazione. Questo è sotto WEB-INF/classes

+0

il file non deve necessariamente trovarsi nel classpath. vedere: http://stackoverflow.com/a/27666320/1547266 – Arthur

Problemi correlati