Загрузка пакета ресурсов вне папки WEB-INF / classes

По какой-то причине файл messages.properties находится где-то в папке WEB-INF, но за пределами папки WEB-INF/classes. В частности, путь к файлу /WEB-INF/messages/messages.properties. Как загрузить этот пакет ресурсов с помощью метода ResourceBundle.getBundle( ? )?


person supertonsky    schedule 30.11.2012    source источник
comment
Это может помочь: stackoverflow.com/questions/1172424/   -  person home    schedule 30.11.2012
comment
так как только папка классов находится в пути к классам, единственный возможный способ, который я вижу, - это каким-то образом переопределить загрузчик классов Tomcat. Простой способ - поместить папку сообщений в каталог классов.   -  person Subin Sebastian    schedule 30.11.2012


Ответы (2)


Вы можете получить путь с помощью контекста сервлета следующим образом;

getServletContext().getResource("/messages/messages.properties).getPath();

затем с помощью URLClassLoader () создайте загрузчик класса и передайте его методу getBundle ().

person dinukadev    schedule 30.11.2012

Я просто собрал расширение ResourceBundle.Control, которое обрабатывает именно эту ситуацию:

https://gist.github.com/Tzrlk/82d74c074e63955a8a35

использование:

ServletContext servletContext = //! get access to servlet context instance
Locale locale = //! get access to locale instance

try {
    ResourceBundle.Control control = new ServletContextBundleControl(servletContext);
    ResourceBundle bundle = ResourceBundle.getBundle("/WEB-INF/messages/messages", locale, control);
} catch (MissingResourceException error) {
    // handle exception 
}
person tzrlk    schedule 03.12.2014