WebSphere Liberty: доступ к файлу свойств из файла JAR библиотеки - PullRequest
0 голосов
/ 26 апреля 2018

Я работаю на WebSphere Liberty 17.0.0.4. Развернуто веб-приложение и пользовательский модуль аутентификации, который находится в каталоге {wlp_install_dir}/lib. И этот файл JAR помечен как library в файле server.xml. Вот как это выглядит в server.xml

<library id="CustomLoginModuleLib">
    <fileset dir="${wlp.lib.dir}" includes="custom_auth.jar"/>
</library>

Теперь дело в том, что я хочу использовать файл .properties, расположенный внутри файла custom_auth.jar, для веб-приложения.

Попробовал следующий фрагмент кода для доступа:

this.getClass().getResourceAsStream("location/of/package/file.properties");

ClassLoader.getSystemResourceAsStream("location/of/package/file.properties");

Но ни одна из них не работает.

Любая идея, как мы можем получить доступ к файлу свойств, расположенному в файле jar библиотеки.

1 Ответ

0 голосов
/ 26 апреля 2018

Пожалуйста, смотрите мой ответ на этот же вопрос на dwAnswers: https://developer.ibm.com/answers/questions/444708/how-to-access-properties-file-located-in-library-j.html

Подведем итоги ответа оттуда:

(1) Я бы никогда не рекомендовал помещать предоставленные пользователем файлы JAR в каталог {wlp_install_dir} / lib - этот каталог предназначен только для предоставленных IBM файлов JAR. Вместо этого я бы предложил поместить ваш custom_auth.jar в каталог вашего сервера или в общий каталог.

(2) Вам нужно будет связать разделяемую библиотеку с вашими приложениями следующим образом:

 <application location ="{appName}.war"> <!-- or {appName}.ear -->
    <classloader commonLibraryRef="CustomLoginModuleLib" />
 </application>

В зависимости от ваших потребностей, вы можете использовать commonLibraryRef (как показано) или privateLibraryRef. Более подробную информацию об общих библиотеках можно найти здесь: https://www.ibm.com/support/knowledgecenter/SSD28V_9.0.0/com.ibm.websphere.wlp.core.doc/ae/cwlp_sharedlibrary.html

(3) Что касается загрузки файла в коде Java, ваша первая строка будет работать - при условии, что это относится к экземпляру класса в вашем приложении. Я также предполагаю, что путь, который вы передаете методу getResourceAsStream, совпадает с путем к файлу внутри библиотеки JAR.

Надеюсь, это поможет, Энди

...