веб-приложение — где разместить файл hibernate.cfg.xml?

Я пишу веб-приложение, и мне нужно добавить спящий режим. Я настроил maven (pom.xml) и т. д., но теперь получаю следующую ошибку:

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

Я использую NetBeans. Я попытался переместить этот файл в WEB-INF, корневую папку проекта, каталог src (пакет по умолчанию), но он все еще не работает. Как я могу сделать? Я не хочу программно устанавливать путь к этому файлу следующим образом:

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

person Quak    schedule 03.01.2013    source источник
comment
Он должен быть в корне пути к классам.   -  person Dave Newton    schedule 03.01.2013
comment
Кстати: как я могу проверить путь к классам?   -  person Quak    schedule 03.01.2013
comment
Что вы подразумеваете под проверкой пути к классам?   -  person Dave Newton    schedule 03.01.2013
comment
О, моя ошибка, должно быть, как я могу проверить, что является корнем пути к классам?   -  person Quak    schedule 03.01.2013
comment
Для веб-приложения это не обязательно, оно определяется спецификацией сервлета и равно WEB-INF/classes.   -  person Dave Newton    schedule 03.01.2013


Ответы (4)


Я всегда помещаю его в каталог WEB-INF/classes (там хранятся скомпилированные файлы).

person Adam Sznajder    schedule 03.01.2013
comment
Спасибо, я создал каталог классов в WEB-INF, и он отлично работает. - person Quak; 03.01.2013
comment
Странно, что вам пришлось создать этот каталог. У вас есть по крайней мере один класс, который должен пойти туда! Мне кажется, вы неправильно используете Netbeans, но я могу только догадываться. - person Gimby; 03.01.2013
comment
@user1946059 user1946059 Похоже, этот ответ — то, что вы искали — вы должны его принять. - person ach; 03.01.2013

Вам нужно добавить hibernate.cfg.xml в папку в пути к классам. В веб-приложении WEB-INF/classes по умолчанию находится в пути к классам. Вы можете либо использовать эту папку, либо создать новую для своих ресурсов (при условии, что вы хотите сохранить их отдельно), а затем установить новую папку в пути к классам, изменив настройки проекта.

person Anurag Kapur    schedule 03.01.2013

Вы можете загрузить hibernate.cfg.xml из другого каталога (не обязательно из пути к классам), используя метод configure(File configFile), который принимает аргумент файла hibernateConfig. (обратите внимание, я использую спящий режим 4.3.7)

Преимущество заключается в том, что вы можете поместить файл конфигурации гибернации в отдельный каталог, к которому вы обязаны иметь доступ (для целей обслуживания или изменения), кроме как связывать его вместе с файлом .war, к которому у вас может не быть доступа.

Пример следующий:


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);

person Arthur    schedule 27.12.2014

Этот файл должен находиться в корне пути к классам приложения. Это в разделе WEB-INF/classes

person Krishna    schedule 23.03.2015
comment
файл не обязательно должен находиться в вашем пути к классам. см.: stackoverflow.com/a/27666320/1547266 - person Arthur; 24.10.2015