Как распределить конфигурацию websphere server (источники данных,jms,...) по нескольким экземплярам?


Для команды разработчиков очень важно, чтобы все настроили и настроили сервер приложений. В нашем случае мы используем websphere 8.5.

Я ищу простой способ сделать это. Обычно вы делаете это с помощью инструмента управления профилями, расположенного в каталоге WAS_HOME/bin/ProfileManagement, и этот инструмент работает очень хорошо. Но после установки websphere server все равно нужно настроить профиль сервера - создать источники данных, очереди JMS, шины, переменные и так далее. Так Что Я я подумал, что было бы неплохо, если бы существовал способ применить эти конфигурации к существующему профилю.

Моей первой попыткой было просто настроить один профиль, а затем сделать резервную копию конфигурации с помощью

 %WAS_HOME%/bin/backupConfig.bat

Но конфигурация содержит, например, имя хоста и другие конфигурации, зависящие от хоста. Итак, backupConfig.летучая мышь инструмент не то, что я ищу.

Следующая мысль, пришедшая мне в голову, заключается в том, что я мог бы создать специальную профильную табличку. Так что другие могут использовать инструмент управления профилем и используйте этот шаблон. Но структура шаблона, похоже, не предназначена для настройки. Множество файлов и почти никакой документации не может быть найдено о том, как создать собственный шаблон профиля.

Итак, я наткнулся на шаблоны аугментов. Эти шаблоны используются (как следует из названия) для добавления определенной конфигурации к существующему профилю. Я нашел много документации о том, как применить увеличение к существующему профилю, но нет документации о том, как создать прирост.

Наконец, я думаю, что должен быть какой-то способ экспорта websphere datasource, шины, jms и т. д. конфигурирование и применение их к другим профилям, потому что в очень больших установках оперативная группа должна иметь такую возможность.

Я знаю, что могу добавить в ухо специфичные для контейнера дескрипторы. Например, META-INF/ibmconfig/cells/defaultCell/applications/defaultApp/resources.xml. Но я не хочу создавать файлы EAR для конкретной среды, потому что это связывает наши сборки с инфраструктурой, и поэтому мы должны создавать и повторно развертывать, когда когда-либо операции изменяют инфраструктуру, например имена хостов, IP-адреса, пароли.

Кто-нибудь знает, как управлять распределением источников данных, шин, jms и т. д. несколько экземпляров WebSphere?

3 5

3 ответа:

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

Конфигурация на основе файла свойств позволяет:

  • извлеките данные из хранилища конфигурации, чтобы создание свойств файлы.
  • обновите файл свойств, чтобы управлять конфигурацией, как необходимый.
  • применить обновленные данные в файле свойств к целевому объекту хранилище конфигураций.

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

Я предлагаю вам использоватьwsadmin shell scripting и создать скрипт для создания ресурса. Бонус заключается в том, что вы можете запустить его непосредственно из RAD (щелкните правой кнопкой мыши Run As->Administrative Script).

Вот полный пример, написанный на Jython для создания ресурса JDBC вместе с регистрационной информацией JAAS (примечание: Я использую Oracle Database, ваша настройка может отличаться в зависимости от используемой базы данных):

cell=AdminConfig.showAttribute(AdminConfig.list("Cell"), "name")
node=AdminConfig.showAttribute(AdminConfig.list("Node"), "name")

#Add JAAS credentials 
print "Adding JAAS credentials"
security = AdminConfig.getid('/Cell:'+cell+'/Security:/') 
alias = ['alias', node+'/dbUser'] 
userid = ['userId', 'DBUSER'] 
password = ['password', 'PASSWORD'] 
jaasAttrs = [alias, userid, password] 
AdminConfig.create('JAASAuthData', security, jaasAttrs) 
AdminConfig.save()  

#Add JDBC jar path 
print "Adding JDBC jar path"
AdminTask.setVariable('[-variableName ORACLE_JDBC_DRIVER_PATH -variableValue ${WAS_INSTALL_ROOT}/lib/ext -scope Cell='+cell+',Node='+node+']') 
AdminConfig.save()

#JDBC Provider print "Adding JDBC Provider"
AdminTask.createJDBCProvider('[-scope Node='+node+',Server=server1  -databaseType Oracle -providerType "Oracle JDBC Driver" -implementationType "Connection pool data source" -name "Oracle JDBC Driver" -description "Oracle JDBC Driver-compliant Provider." -classpath ${ORACLE_JDBC_DRIVER_PATH}/ojdbc6.jar]') 
AdminConfig.save()

#JDBC Datasources print "Creating Datasource"
AdminJDBC.createDataSourceAtScope("Node="+node+",Server=server1", "Oracle JDBC Driver", "test", "jdbc/test", "com.ibm.websphere.rsadapter.Oracle11gDataStoreHelper", "jdbc:oracle:thin:@10.0.0.1:1521:TEST",  [['componentManagedAuthenticationAlias', node+'/test'], ['containerManagedPersistence', 'true']])   
AdminConfig.save()

Я только что вспомнил инструмент wsadmin и думаю, что это лучший способ реализовать мои требования.

К счастью, IBM предоставляетпримеры сценариев , которые показывают, как создавать источники данных или изменять их с помощью сценариев jython или jacl.

Пример создания источников данных можно найти, например, в скриптах администрирования (1-12) -- Jython version (file ex7.py в ЗИПе)

Надеюсь, что это поможет другим, у кого есть такой же или подобный вопрос.