max аватар

  Websphere. Написание скриптов на jython

89
Находится в разделах:

Сегодня я хочу поговорить о житоне или джайтоне. Как вам будет угодно. Но о житоне в связке с вебсферой. 

Websphere + Jython = автоматизировать что угодно. После двух месяцев работы с этой связкой пришел к выводу, что он может воспроизвести и произвести любое действие, которое можно совершить из веб-консоли администратора. 

Это реально очень удобно, когда создается туча ресурсов j2ee. Запустил скрипт и пошел курить. А так бы пришлось часов 5 делать все вручную, по мануалу, шаг за шагом. Да еще и надо будет проверить, чтобы это все было правильно создано, сконфигурировано. 

Что будем рассматривать в данном посте?

Сперва рассмотрим, как настроить среду выполнения, где писать код и как его запускать. 

Для выполнения кода на житоне, используется утилита wsadmin.bat (под windows), wsadmin.sh (под AIX)

Ее можно найти либо в корневой папке bin вебсферы, либо в папке bin любого профайла. 

Под профайлом в данном контексте понимается deployment manager (менеджер развертки) - как правило один на данном компьютере или в пределах селла или ячейки при использовании кластеризации; либо node agent (агент нодов) - логическая единица в вебсфере, которая содержит управляемые серверы. 

max аватар

  Websphere + Jython. Сборник готовый функций для всевозможных операций по созданию j2ee ресурсов

87
Находится в разделах:

Все эти методы пригодятся Вам при использовании кода из раздела Websphere + Jython.

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

Процедура начинается, например, с такого определения:

а заканчивается так:

Код:

max аватар

  Websphere + Jython. Создание управляемого сервера / Creating managed server

81
Находится в разделах:

Для создания управляемого сервера в вебсфере напишем процедуру:

max аватар

  Websphere + Jython. Установка/Чтение портов управляемого сервера.

83
Находится в разделах:

Вызов метода выглядит так:

max аватар

  Websphere + Jython. Удаление JAAS алиаса

82
Находится в разделах:

Вызов метода выглядит так:

max аватар

  Удаление активаций специкаций JMS на шине

81
Находится в разделах:

Активация спецификации есть ни что иное, как логическая единица, используемая для конфигурации message-driven бинов. 

Вызов выглядит следующим образом:

где:

TestResponseMDB - имя активации специкации JMS на шине

none - имя кластера. Если используете кластеризацию - задавайте. 

Cell - это область действия. То есть, где искать активацию спецификации. В нашем случае она находится в масштабе ячейки.

cellName - имя области действия. 

max аватар

  Websphere + Jython. Удаление фабрик соединений (Connection Factory) на шине

81
Находится в разделах:

Удалить фабрику можно следующим вызовом метода:

Параметры:

myConnectionFactory - имя фабрики соединений в строковом формате

none - имя кластера. Если нет - ставим 'none'

Cell -  в каком области видимости работаем. В данном случае - cell

cellName - имя cell-а

max аватар

  Websphere+Jython. Удаление JMS очередей (queues) на шине

85
Находится в разделах:

Вызов метода:

где

myRecoveryQueue - имя очереди, которая должна быть удалена

scope - это область видимости. Cell, Node, Server

Сам метод:

max аватар

  Websphere + Jython. Удаление JMS топиков на шине

80
Находится в разделах:

Удаление топиков на шине очень похоже на удаление очередей.

Вызов метода выглядит следующим образом:

где:

JobCreationTopic - имя топика, который надо удалить.

scope - область видимости, в которой находится топик (cell, node, server)

max аватар

  Websphere + Jython. Удаление всех JDBC провайдеров или по фильтру

85
Находится в разделах:

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

Это очень удобно, поскольку удаление провайдера (отца) ведет за собой удаление детей (data source). 

Удалить можно провайдер вызовом такой вот обертки над кодом вебсферы:

Аргументом передается имя провайдера в строковом формате.

Если нужно удалить все провайдеры (хотя вряд ли вам такое понадобиться, поскольку это убьет и derby провайдера, с которым работает множество внутренних сервисов вебсферы. Я уже раз пробовал - пожалел), можно передать пустую строку аргументом

Вот само тело метода для удаления:

max аватар

  Websphere + Jython. Удаление сервисной шины / Removing Service Integration BUS

88
Находится в разделах:

Удаление шины - вообще красота. 

Все, что лежало на шине - накроется одним местом. Вот так красиво решаются вопросы удаления ресурсов. 

Удалить можно оберткой над api:

где:

siBusName - имя шины. 

Тело метода:

max аватар

  Websphere + Jython. Установка JVM свойств управляемого сервера (JVM Properties for Managed Server)

82
Находится в разделах:

Часто необходимо выставить параметры JVM на определенном управляемом сервере. Этими параметрами могут быть общие параметры JVM или classpath. 

Устанавливаются следующим образом:

Первый вызов метода устанавливает поле genericJvmArguments на сервере serverName, который находится в ноде nodeName в значение genericJVMArguments (строковое значение). 

Это то же самое, что установить его через админку - но более быстрое и автоматизированное. 

Второй вызов устанавливает класспас для того же сервера. 

max аватар

  Websphere + Jython. Удаление виртуальных хостов

89
Находится в разделах:

Удаление виртуального хоста можно сделать, использовав следующий метод:

где myVirtualHost - это имя виртуального хоста в строковом формате. 

max аватар

  Websphere + Jython. Удаление приложения/Removing enterprise application

84
Находится в разделах:

Часто необходимо удалить или установить более свежую версию продукта, предварительно удалив его. 

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

Вызов выглядит так:

Удаляется приложение по имени appName, которое находится на сервере serverName в ноде nodeName в ячейке cellName

А вот и тело метода:

max аватар

  Websphere + Jython. Создание JAAS алиаса

90
Находится в разделах:

JAAS алиас может быть использован например для аутентификации бизнес-компонентов при доступе к источникам данным. 

Он представляет из себя именованную запись с двумя полями - имя пользователя/пароль. 

Житон в связке с вебсферой дает нам возможность автоматизировать этот процесс. 

Вызываем метод:

В метод передаем имя алиаса - JDBCAuthAlias, имя пользователя - DatabaseUser, пароль - DatabasePassword. 

max аватар

  Websphere + Jython. Установка свойств JVM на сервере (JVM Custom Properties)

84
Находится в разделах:

Существуют так называемые свойства JVM в сервере на вебсфере, представляющие из себя значение в виде двух полей, ключ-пары. например:

com.ibm.security.jgss.debug=off

com.ibm.security.krb5.Krb5Debug=off

Вы, также, можете захотеть выставить свои определенные свойства. 

Вот как это можно сделать:

Рассмотрим подробнее:

max аватар

  Websphere + Jython. Установка класспасов и глобальных переменных в вебсфере (Classpath and Global Websphere Variables)

86
Находится в разделах:

Рассмотрим пример установки глобальных переменных в вебсфере на примере установки переменной, которая хранит путь к драйверу ojdbc.jar 

Что тут делается?

1. Считываем переменную окружения WAS_HOME в локальную переменную wasHome

2. Устанавливаем переменную ORACLE_DJBC_DRIVER_PATH в вебсферу.

3. Устанавливаем параметры JVM сервера.

max аватар

  Websphere + Jython. Создание активаций спецификаций / Creating activation specifications

88
Находится в разделах:

Активация спецификации - фича вебсферы, используемая для описания связей в message-driven бинах. 

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

Данным методом мы создаем активацию спецификации со следующими свойствами:

RequestMDB - имя активации спецификации в строковом формате

activation-specification/test/RequestMDB - JNDI имя для активации спецификации в строковом формате

adapters/testTopic - JNDI идентификатор топика или очереди для ассоциации с активацией спецификации

topic - Тип точки назначения в строковом формате (topic/queue)

пустое значение - Идентификатор селектора сообщений 

пустое значение - Алиас аутентификации для активации спецификации. Если нужен - задаем. Про создание алиасов можно почитать в этом посте

siBusName - имя шины, к которой привязывается активация

scope - область видимости (cell, node)

RequestMDB - имя подписки

RequestMDB_ID - ID клиента

durableSubscription - задается, исходя из такого формата определения:

max аватар

  Websphere + Jython. Создание фабрик соединений

87
Находится в разделах:

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

Рассмотрим, что мы передаем в метод:

none - имя кластера. Пишем, если используем кластеризацию

cellName - имя ячейки в строковом формате

serverName - имя сервера в строковом формате

myConnectionFactory - имя фабрики соединений.

jms/ConnectionFactory - JNDI имя фабрики соединений

My Connection Factory - описание фабрики соединений. Текстовое поле

topic - тип фабрики соединений (topic/queue)

siBusName - имя шины

providersEndPoints - параметр, задающий конечные точки, это значение вычисляется следующим образом:

где appHost - это имя машины, на которой крутится вебсфера

siEndPointAddress - это порт SIB_ENDPOINT_ADDRESS, его можно посмотреть в админке вебсферы в свойствах сервера, а можно просто получить скриптом на jython.

scope - это область видимости (cell, node)

Последний параметр - алиас аутентификации

max аватар

  Websphere + Jython. Создание топиков и очередей

88
Находится в разделах:

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

где:

JobTopic - имя топика

topic/JobTopic - JNDI имя топика

Job Topic - описание топика

JobTopic - Имя топика, которое будет использоваться на шине

topicSpace - пространство топиков. Строковое значение

scope - область видимости (cell, node)

siBusName - имя шины