2013-01-03 6 views
6

Ich schreibe eine Webanwendung und ich muss Hibernate hinzufügen. Ich konfigurierte Maven (pom.xml) usw., aber jetzt erhalte ich folgende Fehlermeldung:Web-Anwendung - wo Hibernate.cfg.xml-Datei?

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

ich NetBeans verwende. Ich habe versucht, diese Datei zu WEB-INF, Root-Projektordner, src-Verzeichnis (Standardpaket) zu verschieben, aber es funktioniert immer noch nicht. Wie kann ich? Ich will nicht Pfad programmatisch auf diese Datei festgelegt wie folgt aus:

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

Es sollte im Stammverzeichnis des Klassenpfads sein. –

+0

BTW: Wie kann ich Classpath überprüfen? – Quak

+0

Was meinen Sie mit "Klassenpfad prüfen"? –

Antwort

8

ich immer steckte es in WEB-INF/classes Verzeichnis (dort kompilierten Dateien gespeichert).

+0

Danke, Ich habe Klassenverzeichnis in WEB-INF erstellt und es funktioniert gut. – Quak

+0

Gern geschehen;) –

+1

Seltsam, dass du dieses Verzeichnis erstellt haben musst. Sie haben mindestens eine Klasse, die dorthin gehen muss! Ich denke, Sie verwenden Netbeans hier nicht richtig, aber ich kann nur raten. – Gimby

3

Sie müssen die Datei hibernate.cfg.xml einem Ordner im Klassenpfad hinzufügen. In einer Web-App befindet sich WEB-INF/classes standardmäßig im Klassenpfad. Sie können diesen Ordner entweder verwenden oder einen neuen Ordner für Ihre Ressourcen erstellen (vorausgesetzt, Sie möchten sie getrennt halten) und dann den neuen Ordner im Klassenpfad festlegen, indem Sie Ihre Projekteinstellungen anpassen.

1

Sie können hibernate.cfg.xml aus einem anderen Verzeichnis (nicht unbedingt dem Klassenpfad) laden, indem Sie die Methode configure (File configFile) verwenden, die das Argument hibernateConfig File übernimmt. (beachten Sie, verwenden Hibernate 4.3.7)

Der Vorteil ist, können Sie Ihre Hibernate Configs-Datei in einem separaten Verzeichnis, das Sie zugreifen müssen (zu Wartungs-oder Änderungszwecken) haben andere als Bündelung zusammen mit der WAR-Datei, auf die Sie möglicherweise keinen Zugriff haben.

Beispiel folgt:


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

Diese Datei in der Wurzel der Klassenpfad der Anwendung sein muß. Das ist unter WEB-INF/Klassen

+0

die Datei muss nicht unbedingt in Ihrem Klassenpfad sein. siehe: http://stackoverflow.com/a/27666320/1547266 – Arthur