2013-01-03 14 views
6

Piszę aplikację internetową i muszę dodać hibernację. I skonfigurowany maven (pom.xml) itd ale teraz otrzymuję następujący błąd:aplikacja internetowa - gdzie umieścić plik hibernate.cfg.xml?

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

używam NetBeans. Próbowałem przenieść ten plik do WEB-INF, głównego katalogu projektu, katalogu src (domyślny pakiet), ale nadal nie działa. Jak mogę zrobić? Nie chcę, aby ustawić ścieżkę dostępu do tego pliku programowo tak:

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

Powinien być w katalogu głównym ścieżki klasy. –

+0

Btw: jak mogę sprawdzić ścieżkę klas? – Quak

+0

Co masz na myśli przez "check classpath"? –

Odpowiedz

8

zawsze umieścić go w katalogu WEB-INF/classes (skompilowane pliki są przechowywane tam).

+0

Dzięki, stworzyłem katalog klas w WEB-INF i działa dobrze. – Quak

+0

Nie ma za co;) –

+1

Dziwne, że musiałeś utworzyć - ten katalog. Masz co najmniej jedną klasę, która musi tam iść! Sądzę, że nie używasz tutaj właściwie Netbeans, ale mogę tylko zgadywać. – Gimby

3

Musisz dodać plik hibernate.cfg.xml do folderu w ścieżce klas. W aplikacji internetowej WEB-INF/classes jest domyślnie w ścieżce klas. Możesz użyć tego folderu lub utworzyć nowy dla swoich zasobów (zakładając, że chcesz je zachować oddzielnie), a następnie ustawić nowy folder w ścieżce klas, dostosowując ustawienia projektu.

1

Możesz załadować plik hibernate.cfg.xml z innego katalogu (niekoniecznie ścieżki klas), używając metody configure (File configFile), która przyjmuje argument pliku hibernateConfig. (uwaga: korzystam z trybu hibernacji 4.3.7)

Zaletą jest to, że możesz umieścić plik konfiguracji hibernacji w oddzielnym katalogu, do którego masz dostęp (do celów konserwacji lub zmiany), inny niż łączenie go razem z plikiem .war, do którego możesz nie mieć dostępu.

przykład następująco:


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

to plik musi być w głównym ścieżki klasy aplikacji. To jest pod WEB-INF/classes

+0

plik niekoniecznie musi znajdować się w ścieżce klas. patrz: http://stackoverflow.com/a/27666320/1547266 – Arthur

Powiązane problemy