Java 1.5, Java EE 5, WAS 6.1:Исключение при загрузке пакета ресурсов с помощью ResourceBundle.getBundle(…)

StackOverflow https://stackoverflow.com/questions/812802

  •  03-07-2019
  •  | 
  •  

Вопрос

Вот еще одна проблема, с которой мы сталкиваемся при переносе нашего приложения из текущей производственной среды в новую среду центра обработки данных (подробности см. ниже).

  • Текущая производственная среда: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-файл со следующей структурой (проверьте изображение — извините, что я скрываю некоторые детали)
alt text


В этом классе есть код для загрузки свойств базы данных из 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)

Мы попробовали следующие обходные пути, но ни один из них не помог:

  1. Переименован db.properties в db_en_US.properties.
  2. Помещение файла свойств в банку
  3. перемещение файла 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?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top