2009-05-01 1 views
2

Вот еще одна проблема, с которой мы сталкиваемся при переносе нашего приложения из текущей производственной среды в новую среду центра обработки данных (см. подробности ниже)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 со следующей структурой (проверьте изображение - пардон скрывая некоторые детали)
alt text http://i43.tinypic.com/fxdqo0.jpg


Этот класс имеет код для загрузки свойства базы данных из 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. Также мы попытались поместить его в вышеупомянутые места, но безрезультатно.

С уважением,
- Ашиша

+0

Я предполагаю, что вы имеете в виду JSF 1.2: http://java.sun.com/javaee/javaserverfaces/reference/api/index.html – McDowell

+0

Где db.properties находится в вашем приложении? – McDowell

+0

Пакеты ресурсов предназначены для сообщений и меток, относящихся к языку. Являются ли ваши базы данных конкретными? Я бы подумал, что для этого и предназначался JNDI. Мне кажется, что место для свойств базы данных мне не подходит. Путь невозможен. – duffymo

ответ

1

Попробуйте изменить загрузку classloader в настройках вашего устройства. приложение в консоли администратора (от PARENT_FIRST до PARENT_LAST) на уровнях EAR и WAR.

Мне кажется, что сторонний класс (com.myco.wo.vs.util.OrderLovUtilities) не загружен из вашего файла jar в WEB-INF/lib, но скорее он исходит из другого места на сервере. Тогда его загрузчик классов не видит файл свойств.

Если это проблема, изменение порядка загрузки класса должно приводить к загрузке ожидаемой копии класса.

Кроме того, просмотрщик загрузчика классов в консоли администратора может немного осветить это.

+0

Создал загрузчик классов PARENT_LAST и работал как шарм. Спасибо большое Дэвид ... – Vini

0

Вы пробовали положить ваши db.properties файл в директории WEB-INF/классы?

+0

Да, изначально файл находился под WEB-INF/classes, а также мы столкнулись с той же проблемой, поэтому мы помещаем файл под WEB-INF/classes и WEB -INF/lib (оба места) – Vini

Смежные вопросы