У меня есть веб-проект, основанный на Hibernate и Spring (программная конфигурация). Отображения Hibernate предоставляются в пакете, который архивируется в JAR.
Когда дело доходит до инициализации фабрики сеансов, которую я использовал для вызова:
sessionFactory.
setMappingDirectoryLocations(new Resource[]{
new ClassPathResource("org/all/theway/to/hibernatemappings")});
, чтобы сообщить Hibernate, где искать файлы сопоставления. «org / all / theway / to / hibernatemappings» - это пакет, содержащий файлы hbm.xml. Это хорошо работало в Eclipse (режим разработки GWT), так как проект, содержащий отображение, также извлечен и связан с моим веб-проектом. Однако, как только я создаю войну и развертываю ее в Tomcat, он не может получить ресурс пути к классам.
Javadoc Springpath ClasspathResource подразумевает следующее: " Поддерживает разрешение как java.io.File, если ресурс пути к классам находится в файловой системе, но не для ресурсов в JAR. Всегда поддерживает разрешение как URL. "
Но что делать вместо этого? Я мог бы также использовать setMappingJarLocation вместо этого, но я не люблю жестко кодировать имя файла jar в моем контексте Spring. Кроме того, когда я попробовал это, он также работал только в IDE, но внутри Tomcat тот же путь к файлу (WEB-INF / lib / file.jar) не работал. Это также заставляет меня поверить, что это было бы уродливым решением.
Есть ли обходной путь, который работает без использования файла jar?