Профиль Websphere Liberty Не удается найти пакет для базовой ошибки

У меня установлен EAR в eclipse на WLP 8.5.5.3.

Это запись EAR с прикрепленным загрузчиком классов:

<enterpriseApplication id="App4EAR" location="App4EAR-4.1.5-SNAPSHOT.ear" name="App4EAR">
    <classloader apiTypeVisibility="spec,ibm-api,api" delegation="parentFirst" commonLibraryRef="baseLibraries.app4">
    </classloader>
</enterpriseApplication>

Сервер запускается без проблем. Первая страница jsp в приложении пытается прочитать файл свойств, который находится в компоненте WAR. Вот где это не удается.

SRVE0777E: Exception thrown by application class 'java.util.ResourceBundle.throwMissingResourceException:1427' 
java.util.MissingResourceException: Can't find bundle for base name prop.appadmin, locale nl_BE

Объект, который считывает свойства, находится в веб-приложении вместе с файлом свойств. Служебный класс для чтения пакета ресурсов находится в отдельном банке и является частью общей библиотеки (baseLibraries.app4).

Это запись из определения развертывания App4EAR.ear.xml, которая указывает на папку, в которой находится файл свойств:

<dir sourceOnDisk="C:\svn\app4\App4Web\target\classes" targetInArchive="/WEB-INF/classes"/>

При использовании java.util.ResourceBundle() непосредственно в приложении он успешно находит файл свойств. Но не так, когда мы используем служебный класс из разделяемой библиотеки.

Почему общая библиотека не может получить доступ к ресурсам свойств в основном веб-приложении?


person Marc    schedule 21.10.2014    source источник


Ответы (2)


Ваша общая библиотека загружается в родительский загрузчик классов, а классы, а также свойства в вашем приложении не видны этому загрузчику классов, поэтому их невозможно найти. Добавьте файлы свойств в путь к классам библиотеки вместо веб-приложения.

person Gas    schedule 12.11.2014
comment
Файлы свойств содержат параметры конфигурации (тема по умолчанию, ...) для веб-приложения, и поэтому не могут быть упакованы с служебной библиотекой (ведение журнала, помощники по ресурсам,...). - person Marc; 17.11.2014
comment
Упаковка утилиты jar в войну вместо определения ее как общей библиотеки работает. Такое поведение делает общие библиотеки устаревшими. - person Marc; 24.03.2015

Упаковка утилиты jar, которая обращается к файлу ресурсов, в веб-приложении решает проблему.

Это решение как бы сводит на нет цель разделяемых библиотек. Также обратите внимание, что в WAS 8.5 это не было проблемой, поэтому что-то изменилось в способе предоставления/загрузки общих библиотек.

person Marc    schedule 24.03.2015