Как перенести JDBC Data Sources из одной среды WAS в другую

В этой заметке мы рассмотрим возможность переноса JDBC источников данных (DataSources) из одной среды WebSphere Application Server в другую. Особенно это будет полезно тем, кому часто приходится создавать похожие среды WAS со множеством источников данных. Предложенный способ избавит от необходимости ручного создания источников данных, намного сократит время, затрачиваемое на подготовку полигона, а так же минимизирует влияние человеческого фактора при внесении изменений в конфигурацию. Итак, начнем…

PropertiesBasedConfiguration Commands

Для переноса JDBC источников данных используются PropertiesBasedConfiguration Commands.

PropertiesBasedConfiguration Commands – это функциональная возможность, появившаяся в версии WAS V7.0, представляющая собой набор команд для получения объектов конфигурации (configuration objects) и применения изменений, вносимых в эти объекты. Если кратко, то это набор команд для работы с конфигурацией WAS.

С помощью команд PropertiesBasedConfiguration можно:

  • Из конфигурации среды WAS извлечь в файл атрибуты конфигурации с соответствующими значениями;
  • Скопировать параметры конфигурации из одной среды в другую;
  • Устранить проблемы в конфигурации среды;
  • Изменить область использования (scope) объектов конфигурации;
  • Использовать один набор конфигурационных параметров для нескольких профайлов (profiles), ячеек, узлов, серверов или приложений.

У PropertiesBasedConfiguration Commands есть ограничения:

  • Нельзя целиком клонировать среду WAS;
  • Конфигурации z/OS и распределенных систем не являются взаимозаменяемыми;
  • С помощью конфигурационного файла (properties file) нельзя изменить: SIBus, Business-level applications, Key and trust store files, Web services policy set files, File-based user registry.

Команды PropertiesBasedConfiguration вызываются через wsadmin и относятся к объекту AdminTask. Далее рассмотрим список команд PropertiesBasedConfiguration:

  • extractConfigProperties – извлекает данные конфигурации в читаемый текстовый файл;
  • validateConfigProperties – определяет возможность применения изменений, содержащихся в файле, к среде;
  • applyConfigProperties – применяет изменения, содержащиеся в файле, к среде;
  • deleteConfigProperties – удаляет объекты из конфигурации, согласно файлу;
  • createPropertiesFileTemplates – создает шаблон конфигурационного файла, который используется для создания или удаления конкретных объектов.

Для более глубокого изучения PropertiesBasedConfiguration Commands, а также для ознакомления с различными примерами использования, воспользуйтесь документом:

Icon of Scripting WSTE-Properties-Based-Config (177.1 KB)

Перенос JDBC источников данных из одной конфигурации WAS в другую

Перенос JDBC источников данных из одной конфигурации WAS в другую осуществляется в 3 этапа:

  1. В исходной среде WAS: выгрузка в файлы описаний JDBC провайдера (включая все DataSources, связанные с этим провайдером), а так же имен пользователей и паролей, применяемых защитой Java 2 Connector (JAAS-J2C authentication data).
  2. Внесение изменений в полученные файлы.
  3. В целевой среде WAS: применение конфигураций, содержащихся в измененных файлах.

Рассмотрим эти этапы подробнее.

Этап 1. Выгрузка в файлы описаний JDBC провайдера, а так же имен пользователей и паролей.

1. Запускаем инструмент wsadmin в расположении профайла Deployment Manager, в локальном режиме:

2. Выполняем команду AdminTask.extractConfigProperties, общий вид которой приведен ниже:

Где:

  • properties_file – имя выходного файла с указанием его расположения;
  • scope – область, для которой определен выгружаемый JDBC драйвер и соответствующие ему источники данных. Может принимать значения: Cell – для ячейки, Node – для узла, Server – для сервера, ServerCluster – для кластера;
  • scope_name – имя области, для которой определен выгружаемый JDBC драйвер. Принимаемые значения: имя ячейки, имя узла, имя сервера, имя кластера;
  • jdbc_provider_name – имя JDBC провайдера. Зависит от типа СУБД, комплекта связи и реализации. Наиболее употребляемые: для DB2 – DB2 Universal JDBC Driver Provider, для Oracle – Oracle JDBC Driver, для MS SQL Server – Microsoft SQL Server JDBC Driver.

Пример команды для извлечения в файл jdbc1.props, JDBC провайдера DB2, созданного на scope кластера cluster1:

3. Выполняем команду AdminTask.extractConfigProperties, для извлечения в файл JaasAuthData.props аутентификационных данных JAAS-J2C:

4. Завершаем работу wsadmin:

Этап 2. Редактирование полученных файлов: описание JDBC провайдера и источников данных

Перед выполнением этого этапа необходимо понять, в какую область целевой среды WAS будут загружены полученные источники данных. Это определяет изменения вносимые в полученный файл описания JDBC провайдера и источников данных.

Вариант 1. Область/scope не изменяется, меняется только ее название.

1. Открываем для редактирования файл jdbc1.props. В конце файла есть раздел “#Environment Variables”:

2. Меняем значения переменных aaaName (где aaa может принимать значения: cluster, node, server) и cellName в соответствии с именами, используемыми в целевой среде WAS.

3. При необходимости, во всем файле меняем префикс, добавляемый к псевдонимам пользователей.

Т.е. в строках, подобных:

изменяем “eddm” на новый префикс, используемый в целевой среде WAS.

4. Сохраняем файл с именем jdbc1.props_mod.

Вариант 2. Изменяется область/scope определения источников данных.

1. Открываем для редактирования файл jdbc1.props. Ищем область, на которой были определены JDBC провайдер и источники данных, и меняем ее на новый scope.

Пример 1. Провайдер и источники данных были определены на scope ячейки, необходимо, что бы в целевой среде они были на scope узла.

меняем: Cell=!{cellName}:JDBCProvider

на: Cell=!{cellName}:Node=!{nodeName}:JDBCProvider

Пример2. Провайдер и источники данных были определены на scope узла, необходимо, что бы в целевой среде они были на scope кластера.

меняем: Cell=!{cellName}:Node=!{nodeName}:JDBCProvider

на: Cell=!{cellName}:ServerCluster=!{clusterName}:JDBCProvider

2. В конце файла jdbc1.props, в разделе “#Environment Variables”, добавляем необходимую переменную (nodeName/clusterName/serverName) со значением, определяющим целевой scope. Переменная cellName объявлена всегда, меняем ее значение в соответствии с именем целевой ячейки.

3. При необходимости, во всем файле меняем префикс, добавляемый к псевдонимам пользователей.

Т.е. в строках, подобных:

изменяем “eddm” на новый префикс, используемый в целевой среде WAS.

4. Сохраняем файл с именем jdbc1.props_mod.

Этап 2. Редактирование полученных файлов: аутентификационные данные JAAS-J2C

1. Открываем для редактирования файл JaasAuthData.props. В конце файла, в разделе “#Environment Variables”, меняем значение переменной cellName в соответствии с именем целевой ячейки.

2. При необходимости, во всем файле меняем префикс, добавляемый к псевдонимам пользователей.

Т.е. в строках, подобных:

изменяем “eddm” на новый псевдоним, используемый в целевой среде WAS.

Данный шаг необходимо выполнять, если в административной консоли (раздел: Глобальная защита > JAAS – идентификационные данные J2C) активирована опция “Добавлять к новым именам псевдонимов префикс в виде имени узла ячейки (для совместимости с прошлыми версиями)”.

3. Сохраняем файл с именем JaasAuthData.props_mod.

Хозяйке на заметку:

При выгрузке в файл аутентификационных данных, выгружаются как имена пользователей, так и пароли. Поэтому, если Вы забыли пароль какого-либо пользователя JAAS-J2C, его можно узнать в строке:

Для декодирования пароля удобно воспользоваться on-line WebSphere Password Decoder:

http://strelitzia.net/wasXORdecoder/wasXORdecoder.html

Этап 3. Загрузка измененных конфигураций в целевую среду WAS.

1. Запускаем инструмент wsadmin в расположении профайла Deployment Manager, в локальном режиме:

2. Используя команду AdminTask.applyConfigProperties, в целевой среде WAS создаем пользователей JAAS-J2C, согласно файлу JaasAuthData.props_mod:

3. Сохраняем изменения:

4. Используя команду AdminTask.applyConfigProperties, в целевой среде WAS создаем JDBC провайдер и связанные с ним источники данных, согласно файлу jdbc1.props_mod:

5. Сохраняем изменения:

6. Завершаем работу wsadmin:

7. Синхронизируем изменения с узлами и перезапускаем ячейку WAS (все компоненты).

VN:F [1.9.22_1171]
Rating: 5.0/5 (3 votes cast)
Метки: , , , ,
Опубликовано в WebSphere Application Server, Скрипты
1 комментарий на “Как перенести JDBC Data Sources из одной среды WAS в другую
  1. Дмитрий:

    А какие варианты можно использовать при необходимости клонирования всей среды WAS? Т.е. необходимо перенести все настройки и созданные объекты на другой хост.

    VA:F [1.9.22_1171]
    Rating: +2 (from 2 votes)

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

Выбор языка: