Java 1.5, Java EE 5, WAS 6.1:Исключение при загрузке пакета ресурсов с помощью ResourceBundle.getBundle(…)
Вопрос
Вот еще одна проблема, с которой мы сталкиваемся при переносе нашего приложения из текущей производственной среды в новую среду центра обработки данных (подробности см. ниже).
- Текущая производственная среда:Java 1.4, Java EE 3, WAS 5.1, JSF 2.1
- Новая среда:Java 1.5, Java EE 5, WAS 6.1, JSF 2.1
Здесь у нас есть сторонний jar-файл со следующей структурой (проверьте изображение — извините, что я скрываю некоторые детали)
В этом классе есть код для загрузки свойств базы данных из ResourceBundle (db.properties).Вот код, созданный Cavaj:
private static ResourceBundle getDBProperties() { if(dbProperties == null) { dbProperties = ResourceBundle.getBundle("db"); } return dbProperties; }
Это приложение отлично работает в текущей среде.Но каким-то образом, когда мы перемещаем приложение в новую среду, мы получаем исключение «MissingResourceException» (см. ниже):
Caused by: java.util.MissingResourceException: Can't find bundle for base name db, locale en_US at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:863) at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:832) at java.util.ResourceBundle.getBundle(ResourceBundle.java:576) at com.myco.wo.vs.util.OrderLovUtilities.getDBProperties(OrderLovUtilities.java:195)
Мы попробовали следующие обходные пути, но ни один из них не помог:
- Переименован db.properties в db_en_US.properties.
- Помещение файла свойств в банку
- перемещение файла jar на уровне EAR.
Подскажите пожалуйста, что здесь может быть не так.И что можно сделать, чтобы это заработало :)
Примечание: Файл db.properties находится в каталоге WEB-INF/classes.Также мы пытались разместить его в вышеупомянутых местах, но безуспешно.
С уважением,
- Ашиш
Решение
Попробуйте изменить порядок загрузчика классов в настройках вашего ENT.приложение в консоли администратора (из PARENT_FIRST
к PARENT_LAST
) на уровнях EAR и WAR.
Мне кажется, что сторонний класс(com.myco.wo.vs.util.OrderLovUtilities
) не загружается из вашего jar-файла в WEB-INF/lib, а скорее поступает из другого места на сервере.Его загрузчик классов тогда не видит файл свойств.
Если это проблема, изменение порядка загрузчика классов должно привести к загрузке ожидаемой копии класса.
Кроме того, средство просмотра загрузчика классов в консоли администратора может пролить свет на этот вопрос.
Другие советы
Вы пытались поместить файл db.properties в каталог WEB-INF/classes?