В нашем существующем приложении файл свойств встроен в файл jar, мы решили переместить файл свойств за пределы уха (приложения). Как лучше всего разместить файл свойств в IBM websphere 8.5? так что я могу получить путь с переменными среды WAS и файл должен быть доступен для всех узлов в кластере ..
лучшее место для размещения файла свойств в IBM websphere 8.5?
Ответы (6)
Для этого вы можете использовать каталоги загрузчика классов. Я бы использовал классы каталогов (которые вам может потребоваться создать) в $ WEBSPHERE_HOME / AppServer / classes и поместил туда ваши свойства. После этого вы сможете найти их в любом из ваших приложений / серверов.
Проверьте Страница загрузчиков классов.
WAS_HOME/classes
.
- person Isaac; 25.05.2014
Только мои 2 цента в обсуждении.
Для быстрого и простого решения я бы поместил файл свойств не в WAS_HOME / classes, а в PROFILE_ROOT / properties - эта папка находится в пути к классам и в любом случае используется для хранения свойств. Единственное преимущество перед / classes - это то, что он привязан к профилю, поэтому, если у вас разные профили, например, для тестирования или интеграции, они могут иметь разные настройки.
А для «чистого» решения WebSphere, которое позволяет управлять свойствами через консоль, вы можете проверить поставщиков среды ресурсов (но это довольно длинное и сложное решение): http://www.ibm.com/developerworks/websphere/library/techarticles/0611_totapally/0611_totapally.html
getResourceAsStream()
для получения входного потока? Как вы пытаетесь загрузить свойства?
- person Gas; 01.04.2015
getResourceAsStream()
из ServletContext или ClassLoader, в зависимости от ваших потребностей.
- person Gas; 01.04.2015
Вопреки (в настоящее время) принятому ответу, я утверждаю, что размещение чего-либо в WAS_HOME/classes
- обескураживающая практика. Этот каталог часто используется IBM для размещения классов / файлов JAR, которые считаются «внутренними» для WAS и связанных продуктов (например, определенные версии WebSphere Portal помещают файлы JAR в этот каталог).
Кроме того, размещение элементов в WAS_HOME/classes
делает их доступными для всех приложений, работающих в всех профилях WAS, созданных с помощью этой установки WAS. Вы не можете изменить это поведение; вот как устроен WAS. Это еще одна причина сделать вывод, что WAS_HOME/classes
следует зарезервировать для внутреннего использования WAS.
Этот аргумент можно обобщить практически на любое расположение в WAS_HOME
: пользовательские файлы (то есть файлы, не предоставленные поставщиком программного обеспечения) не должны находиться в местах, которые управляются программой установки / удаления продукта. Иерархией WAS_HOME
управляет IBM Installation Manager (или программа установки WAS, в зависимости от рассматриваемой версии WAS). Я бы не стал никуда складывать свои файлы.
А теперь вернемся к вашему вопросу. Если вам необходимо, чтобы ваши файлы свойств были «свободными» (то есть не включенными в какой-либо конкретный EAR), лучше всего сделать следующее:
- Создайте каталог вне дерева каталогов WAS и поместите туда свои файлы.
- В WAS создайте определение общей библиотеки.
- Добавьте созданный вами каталог в общую библиотеку.
Прикрепите общую библиотеку к серверу или к приложениям, которым вы хотите, чтобы ваши файлы свойств были доступны:
- To attach the Shared Library to the server, create a new Classloader element on the server and attach the shared library to it.
- Чтобы присоединить общую библиотеку к приложению, выполните вложение, отредактировав свойства EAR в консоли администрирования или с помощью параметров развертывания по сценарию.
другое решение, которое я использую, - добавить ссылку на ресурс URL в ваше приложение web.xml. Например "URL / свойства".
Затем определите URL-адреса в Websphere, используя консоль администратора, чтобы они указывали, например, на «file: ///dev.properties» или «file: ///test.properties».
Затем во время развертывания сопоставьте ссылку URL-адреса с соответствующим определением URL-адреса websphere.
Теперь ваш код может просто выполнять поиск URL-адреса jndi.
Это имеет то преимущество, что вы можете развернуть единую базу кода и настроить во время развертывания, чтобы она указывала на разные URL-адреса.
попробуй это
- Создайте каталог (по вашему выбору) для хранения файла свойств.
- Добавьте каталог в WebSphere CLASSPATH.
- Загрузите файл свойств из CLASSPATH.
База данных - лучшее место для размещения свойств, если значения свойств не относятся к одному узлу кластера или значение свойства является паролем. Для таких свойств, как пароли, я предлагаю вам установить значения свойств как свойства jndi в WAS. Используйте общую конфигурацию для чтения из обоих источников. Имейте в своей кодовой базе файл .property, который переопределит значения как из db, так и из jndi. Таким образом, ваши разработчики могут переопределить значения db / jndi при разработке.