Интеграция приложений на основе WebSphere MQ
Лекция #5: Авторизация и средства администрирования В лекции описан синтаксис команды setmqaut, предоставляющей права доступа к объектам менеджера очередей, и команды dspmqaut для отображения предоставленных прав доступа. Даны примеры использования этих команд. Рассмотрена настройка служб WebSphere MQ для работы под другой учетной записью (другим пользователем) в среде Windows. Приведены основные команды командного процессора MQSC, работающие на любой платформе (под любой операционной системой), и даны примеры их использования для создания очередей и каналов.
### Авторизация и доступ к объектам В предыдущей лекции были рассмотрены примеры создания интерфейсов передачи данных без учета вопросов авторизации и доступа. WebSphere MQ имеет свой механизм предоставления прав доступа и аутентификации пользователя [10]. Ограничения по доступу могут быть на уровне удаленного управления менеджером очередей и на уровне доступа к определенным объектам. Основной командой, предоставляющей права доступа к объектам, является команда setmqaut. Синтаксис команды следующий:
    setmqaut -m QMgrName -n Profile -t ObjectType
        -s ServiceComponent -remove
       -p PrincipalName [-g GroupName]
       MQI authorizations [Administration
        authorizations] [Generic authorizations]
-m QmgrName - имя менеджера очередей. -n Profile - имя объекта менеджера, к которому применяется команда. В имени могут использоваться символы групповой замены (?, *, **). Например, если необходимо произвести авторизацию ко всем очередям, начинающимся на PAY, то опция Profile будет выглядеть -n PAY* -t ObjectType - тип объекта менеджера. Может иметь значения q или queue для очередей, prcs или process для процессов, nl или namelist для списков кластеров, authinfo для использования механизма SSL. -s ServiceComponent - имя установленного сервиса авторизации, с помощью которого будут произведены изменения прав доступа. Параметр не является обязательным. -remove - лишает прав доступа к объектам, указанным перед ним. -p PrincipalName или -g GroupName - имя пользователя или группы, для которой производится изменение прав доступа к объектам. Для платформы Windows возможно указание доменной учетной записи в формате userid@domain. Рассмотрим опции авторизации: MQI authorizations, Administration authorizations и Generic authorizations. Перед данными опциями должны указываться символы "+" или "-", разрешающие или запрещающие соответствующие действия. MQI authorizations - опции команды для авторизации MQI. Может принимать значения: altusr - дает возможность использовать имя другой учетной записи для функций MQOPEN и MQPUT1; browse - разрешает просмотр сообщений в очереди функцией MQGET, если очередь открыта на просмотр с опцией BROWSE; connect - разрешает подключение к менеджеру очередей; get - разрешает считывание сообщение из очереди; inq - разрешает считывание значения атрибутов очереди; put - разрешает помещать сообщения в очередь; set - разрешает изменять атрибуты очереди. Administration authorizations - опции команды для авторизации на выполнение действий. Может принимать значения: chg - изменение атрибутов объекта; clr - удаление сообщений из очереди (доступно только для PCF команд); crt - создание объектов; dsp - просмотр атрибутов объекта Generic authorizations - опции авторизации для групповых операций. Может принимать значения: all - предоставляет все права на объект; alladm - предоставляет все административные права на объект; allmqi - предоставляет возможность MQI вызова на объект; none - создает в своем механизме аутентификации запись для профиля пользователя не предоставляя ему никаких прав; Опции команды setmqaut применяются не ко всем объектам менеджера очередей. В таблице 5.1. указано соответствие между опциями и объектами.
Таблица 5.1. Соответствие между опциями команды setmqaut и объектами менеджера очередей
Authority | Queue | Process | Queue manager | Namelist | Authentication information
--- | --- | --- | --- | --- | ---
all | + | + | + | + | +
alladm | + | + | + | + | +
allmqi | + | + | + | + | +
none | + | + | + | + | +
altusr | - | - | + | - | -
browse | + | - | - | - | -
chg | + | + | + | + | +
clr | + | - | - | - | -
connect | - | - | + | - | -
crt | + | + | + | + | +
dlt | + | + | + | + | +
dsp | + | + | + | + | +
get | + | - | - | - | -
put | + | - | - | - | -
inq | + | + | + | + | +
set | + | - | - | - | -
1. Синтаксис команды имеет несколько особенностей. Если в названии объекта присутствует символ "_", то символы групповой замены (?, *, **) использовать не рекомендуется. Если имя объекта разделено символом ".", то каждая часть имени, разделенная точкой должна использовать свои символы групповой замены. Рассмотрим примеры применения команды setmqaut к объектам менеджера QM_Win2000 для учетной записи (пользователя) test1. Условиями выполнения команды является наличие учетной записи test1 и указанных в примерах очередей. Авторизация подключения к менеджеру QM_Win2000
       setmqaut -m QM_Win2000 -t qmgr
                -p test1 +connect
2. Доступ на просмотр сообщений функцией MQGET, во всех очередях, начинающихся на Win2000_HPUX. и заканчивающихся на любой допустимый символ, если очередь открыта на просмотр с опцией BROWSE
       setmqaut -m QM_Win2000 -n Win2000_HPUX.?
                -t queue  -p test1 +browse
3. Запрет на считывание сообщение из очередей, начинающихся на Vip, имеющим в имени символ "." и заканчивающиеся любыми допустимыми символами за исключением символов "_" и "."
       setmqaut -m QM_Win2000 -n Vip*.* -t queue
                -p test1 -get
4. Право на просмотр атрибутов и удаление очередей, начинающихся на Win2000_HPUX. и имеющим после точки два символа, причем левый символ может быть любым
       setmqaut -m QM_Win2000 -n Win2000_HPUX.?Q
                -t queue  -p test1 +dlt +dsp
5. Предоставление всех прав на очередь A1
       setmqaut -m QM_Win2000 -n A1 -t queue
                -p test1 +all
6. Предоставление всех прав на очереди, состоящие из двух символов, имеющие любой первый символ и второй символ "2"
       setmqaut -m QM_Win2000 -n ?2 -t queue
                -p test1 +all
7. Предоставление всех прав на очереди, оканчивающиеся на .CQ и не имеющие перед символом "." символов "_" и "."
       setmqaut -m QM_Win2000 -n **.CQ -t queue
                -p test1 +all
8. Предоставление прав на считывание сообщений из очередей, начинающихся на NO, имеющих в имени символ "." и оканчивающихся на Q
       setmqaut -m QM_Win2000 -n NO*.Q -t queue
                -p test1 +get
9. Предоставление прав на помещение, просмотр и удаление сообщений в очереди DEAD_LETTER
       setmqaut -m QM_Win2000 -n DEAD_LETTER
                -t queue  -p test1 +put +browse +get
10. Удаление прав на помещение сообщений в очередь A1
        setmqaut -m QM_Win2000 -n A1 -t queue
                 -p test1 -put
С помощью команды setmqaut нельзя предоставлять доступ к объектам кластера, которые физически расположены на удаленных менеджерах. Коды возврата команды setmqaut указаны в таблице 5.2.
Таблица 5.2. Коды возврата команды setmqaut
0 | Successful operation | Ошибок нет
36 | Invalid arguments supplied | Содержится неправильный аргумент
40 | Queue manager not available | Менеджер очередей недоступен
49 | Queue manager stopping | Менеджер очередей остановлен
69 | Storage not available | Невозможно сохранить изменения
71 | Unexpected error | Непредвиденная ошибка
72 | Queue manager name error | Ошибка в имени менеджера
133 | Unknown object name | Неизвестное имя объекта
145 | Unexpected object name | Непредвиденное имя объекта
146 | Object name missing | Отсутствует имя объекта
147 | Object type missing | Отсутствует тип объекта
148 | Invalid object type | Неправильный тип объекта
149 | Entity name missing | Отсутствует имя объекта
150 | Authorization specification missing | Отсутствует опция авторизации
151 | Invalid authorization specification | Неправильная опция авторизации
Просмотреть права учетной записи (пользователя) к объекту на локальном менеджере можно с помощью команды dspmqaut. Синтаксис команды
    dspmqaut -m QMgrName -n ObjectName
             -t ObjectType -s ServiceComponent
             -p PrincipalName [-g GroupName]
-m QmgrName - имя менеджера очередей. -n ObjectName - имя объекта менеджера, к которому применяется команда. -t ObjectType - тип объекта менеджера. Может иметь значения q или queue для очередей, prcs или process для процессов, nl или namelist для списков кластеров, authinfo для использования механизма SSL. -s ServiceComponent - имя установленного сервиса авторизации, с помощью которого будет произведен просмотр прав доступа. Параметр не является обязательным. -p PrincipalName или -g GroupName - имя пользователя или группы, для которой производится просмотр прав доступа к объектам. Для платформы Windows возможно указание доменной учетной записи в формате userid@domain. Опции команды dspmqaut также доступны не для всех объектов менеджера очередей. В таблице 5.3. указано соответствие между опциями и объектами.
Таблица 5.3. Соответствие между опциями команды dspmqaut и объектами менеджера очередей
Authority | Queue | Process | Queue manager | Namelist | Authentication information
--- | --- | --- | --- | --- | ---
all | + | + | + | + | +
alladm | + | + | + | + | +
allmqi | + | + | + | + | +
altusr | - | - | + | - | -
browse | + | - | - | - | -
chg | + | + | + | + | +
clr | + | - | - | - | -
connect | - | - | + | - | -
crt | + | + | + | + | +
dlt | + | + | + | + | +
dsp | + | + | + | + | +
get | + | - | - | - | -
inq | + | + | + | + | +
put | + | - | - | - | -
set | + | + | + | - | +
1. Рассмотрим некоторые примеры применения команды dspmqaut к объектам менеджера QM_Win2000 для учетной записи test1. В скобках дана соответствующая команда setmqaut из рассмотренных выше примеров.
       C:\>dspmqaut -m QM_Win2000 -t q -n A -p test1
       Entity test1 has the following authorizations
       for object A:
       (К данному объекту учетная запись test1 не
       имеет авторизации, так как не было
       соответствующей команды setmqaut)
2.     C:\>dspmqaut -m QM_Win2000 -t q
                    -n Win2000_HPUX.Q -p test1
       Entity test1 has the following authorizations
       for object Win2000_HPUX.Q:

               browse

       (setmqaut -m QM_Win2000 -n Win2000_HPUX.?
                 -t queue  -p test1 +browse)
3.     C:\>dspmqaut -m QM_Win2000 -t q
                    -n Win2000_HPUX.TQ -p test1
       Entity test1 has the following authorizations
       for object Win2000_HPUX.TQ:

               dlt
               dsp

       (setmqaut -m QM_Win2000 -n Win2000_HPUX.?Q
                 -t queue  -p test1 +dlt +dsp)
4.     C:\>dspmqaut -m QM_Win2000 -t q
                    -n Win2000_HPUX.RQ -p test1
       Entity test1 has the following authorizations
       for object Win2000_HPUX.RQ:

               dlt
               dsp

       (setmqaut -m QM_Win2000 -n Win2000_HPUX.?Q
                 -t queue  -p test1 +dlt +dsp)
5.     C:\>dspmqaut -m QM_Win2000 -t q -n A1 -p test1
       Entity test1 has the following authorizations
       for object A1:

               get
               browse
               inq
               set
               dlt
               chg
               dsp
               passid
               passall
               setid
               setall
               clr

       (setmqaut -m QM_Win2000 -n A1 -t queue
                 -p test1 +all
       setmqaut -m QM_Win2000 -n A1 -t queue
                -p test1 -put )
6.     C:\>dspmqaut -m QM_Win2000 -t q -n A2
                    -p test1
       Entity test1 has the following authorizations
       for object A2:

               get
               browse
               put
               inq
               set
               dlt
               chg
               dsp
               passid
               passall
               setid
               setall
               clr

       (setmqaut -m QM_Win2000 -n ?2 -t queue
                 -p test1 +all)
7.     C:\>dspmqaut -m QM_Win2000 -t q -n HPUX.CQ
                    -p test1
       Entity test1 has the following authorizations
       for object HPUX.CQ:

               get
               browse
               put
               inq
               set
               dlt
               chg
               dsp
               passid
               passall
               setid
               setall
               clr

       (setmqaut -m QM_Win2000 -n **.CQ -t queue
                 -p test1 +all)
8.     C:\>dspmqaut -m QM_Win2000 -t q -n NOTEPAD.Q
                    -p test1
       Entity test1 has the following authorizations
       for object NOTEPAD.Q:

               get

       (setmqaut -m QM_Win2000 -n NO*.Q -t queue
                 -p test1 +get)
9.     C:\>dspmqaut -m QM_Win2000 -t q
                    -n WIN2000_HPUX2.TQ -p test1
       Entity test1 has the following authorizations
       for object WIN2000_HPUX2.TQ:

               put

       (setmqaut -m QM_Win2000 -n WIN*.* -t queue
                 -p test1 +put)
10.     C:\>dspmqaut -m QM_Win2000 -t q
                     -n WIN2000HPUX3.TQ -p test1
        Entity test1 has the following authorizations
        for object WIN2000HPUX3.TQ:

                put

        (setmqaut -m QM_Win2000 -n WIN*.* -t queue
                  -p test1 +put)
11.     C:\>dspmqaut -m QM_Win2000 -t q
                     -n WIN2000hpux4.tq -p test1
        Entity test1 has the following authorizations
        for object WIN2000hpux4.tq:

                put

        (setmqaut -m QM_Win2000 -n WIN*.* -t queue
                  -p test1 +put)
12.     C:\>dspmqaut -m QM_Win2000 -t q -n Vip2000.CQ
                     -p test1
        Entity test1 has the following authorizations
        for object Win2000.CQ:

                browse
                put
                inq
                set
                dlt
                chg
                dsp
                passid
                passall
                setid
                setall
                clr

        (setmqaut -m QM_Win2000 -n **.CQ -t queue
                  -p test1 +all
        setmqaut -m QM_Win2000 -n Vip*.* -t queue
                 -p test1 -get)
13.     C:\>dspmqaut -m QM_Win2000 -t q
                     -n DEAD_LETTER -p test1
        Entity test1 has the following authorizations
        for object DEAD_LETTER:

                get
                browse
                put

        (setmqaut -m QM_Win2000 -n DEAD_LETTER
                  -t queue  -p test1 +put
             +browse +get )
3. - Отметим, что к выполнению команды setmqaut, содержащей символы групповой замены следует относиться с осторожностью и всегда проверять результат выполнения командой dspmqaut. ### Настройка служб WebSphere MQ под Windows WebSphere MQ в своей работе оперирует как своими внутренними данными, так и данными на уровне операционных систем. Так, например, в процессе первичной установки создается группа mqm. Все пользователи, входящие в эту группу имеют все права на все объекты WebSphere MQ. То есть для полного управления менеджером очередей достаточно того, чтобы учетная запись была включена либо в группу mqm либо в группу администраторов. В среде Windows часто встречается случай, когда прикладная программа должна выполняться под нужной учетной записью (пользователем). В процессе установки WebSphere MQ на платформе Windows кроме группы mqm создается пользователь с учетной записью MUSR_MQADMIN под именем которого выполняются все процессы и все прикладные программы, указанные в атрибуте Application Identifier соответствующего процесса. Если удалить и создать вновь данную учетную запись, то WebSphere MQ работать не будет. Рассмотрим процедуру, позволяющую запускать сервис IBM MQSeries под другой учетной записью. Установить тип запуска для IBM MQSeries Service в Manual. Перегрузить компьютер. Запустить dcomcnfg, и настроить форму, как показано на рис.5.1. Рис. 5.1. Форма настройки dcomcnfg В закладке Security добавить пользователя mquser@alfa.moscow.net для параметров: Use custom access permissions (Allow access); Use custom launch permissions (Allow access); Use custom configuration permission (Full Control). Установить тип запуска для MQSeries в Automatic. Перегрузить компьютер. Убедиться, что сервис IBM MQSeries (рис.5.2) стартовал от имени mquser@alfa.moscow.net. Рис. 5.2. Старт сервиса IBM MQSeries под учетной записью mquser@alfa.moscow.net Далее можно создавать службы сервиса WebSphere MQ Trigger Monitor (см. лекцию 4). Создать данные службы можно также с помощью команды amqmdain, синтаксис которой имеет вид: amqmdain crttrm QmgrName InitQueue где: QmgrName - имя менеджера очередей, InitQueue - имя очереди инициализации После выполнения данной команды следует убедиться в появлении в MQSeries Services нового Trigger Monitor с нужной очередью инициализации (см. рис.4.11). Управлять объектами удаленного менеджера можно с помощью WebSphere MQ Explorer и с помощью команды runmqsc. Для удаленного управления менеджером очередей необходимо: Создать трансмиссионные очереди на менеджере, с которого производится управление и на удаленном менеджере; Создать и стартовать каналы в обе стороны между менеджерами; Выполнить команду runmqsc -w TimeOut RemoteQmqrName где: TimeOut - время в секундах, в течение которого от удаленного менеджера должен прийти положительный ответ на подключение. Если время истекло, то появится следующее сообщение
         AMQ8416: MQSC timed out waiting for a
         response from the command server.
RemoteQmqrName - имя удаленного менеджера. Далее с помощью команд MQSC можно управлять объектами удаленного менеджера. ### Командный процессор MQSC. Основные команды Как говорилось в предыдущих лекциях, управлять объектами WebSphere MQ можно как с помощью команд, так и с помощью WebSphere MQ Explorer. Работа и возможности, предоставляемые WebSphere MQ Explorer были рассмотрены в предыдущих лекциях. Теперь рассмотрим работу команд MQSC (MQSeries Commands). Команды WebSphere MQ разделяются на внешние и внутренние. Внешние команды представляют собой программы, откомпилированные под конкретную платформу. Некоторые из внешних команд и их назначение представлены в таблице 5.4.
Таблица 5.4. Список внешних команд WebSphere MQ
Команда | Назначение
--- | ---
amqmcert | Управление сертификатами для использования механизма SSL
amqmdain | Создание WebSphere MQ services (только для платформыWindows)
crtmqcvx | Конвертация С кода в структуру WebSphere MQ
crtmqm | Создание локального менеджера очередей
dltmqm | Удаление локального менеджера очередей
dmpmqaut | Удаление (dump) авторизации к объекту
dmpmqlog | Преобразование лог-файлов менеджера в "читаемый" вид
dspmq | Просмотр состояния менеджера очередей
dspmqaut | Просмотр прав доступа к объектам
dspmqcap | Просмотр количества процессоров
dspmqcsv | Просмотр состояния командного сервера
dspmqfls | Вывод файловой структуры объектов
dspmqtrc | Вывод трассировки в файл (только для HP-UX, Linux, и Solaris)
dspmqtrn | Просмотр незавершенных транзакций
endmqcsv | Остановка командного сервера
endmqlsr | Остановка службы listener
endmqm | Остановка менеджера
endmqtrc | Остановка режима трассировки (кроме AIX платформы)
rcdmqimg | Запись состояния объектов в файл
rcrmqobj | Восстановление состояния объектов из файла
rsvmqtrn | Управление незавершенными транзакциями
runmqchi | Запуск службы channel initiator
runmqchl | Старт sender или requester каналов
runmqdlq | Восстановление сообщений из очереди недоставленных сообщений
runmqlsr | Запуск службы listener
runmqsc | Запуск командного процессора внутренних команд MQSC
runmqtmc | Запуск trigger monitor для клиентской части (только для AIX платформы)
runmqtrm | Запуск trigger monitor
setmqaut | Предоставление прав доступа к объектам
setmqcap | Установка количества процессоров
strmqcsv | Запуск командного сервера
strmqm | Запуск менеджера очередей
strmqtrc | Запуск режима трассировки
Из таблицы 5.4 выделим команду runmqsc, которая является своего рода командным процессором для выполнения внутренних MQSC команд, позволяющих управлять объектами как локального, так и удаленного менеджера. Синтаксис команды: runmqsc -e / -v /-w QmgrName где: -e - исключение вывода результата выполнения команд в отчет. Полезно для использования при вводе команд в интерактивном режиме. -v - проверка синтаксиса команд без их выполнения. Если далее указана опция -w, то она игнорируется. -w - время в секундах, в течение которого от удаленного менеджера должен прийти положительный ответ на подключение. С помощью данной опции возможно управление объектами удаленного менеджера. Если время истекло, то появится следующее сообщение: AMQ8416: MQSC timed out waiting for a response from the command server. QmgrName - имя менеджера очередей. Имя менеджера, являющегося менеджером по умолчанию указывать не обязательно. Кроме непосредственного ввода внутренних команд из командной строки данная команда позволяет выполнять командный файл, содержащий различные сценарии создания и управления объектами. В таком случае синтаксис будет выглядеть runmqsc QmgrName < create_obj.txt где: create_obj.txt - файл, содержащий внутренние команды MQSC. Внутренние команды могут состоять из нескольких операторов. На первом месте стоит оператор, указывающий действие. На втором месте указывается тип объекта, к которому применяется первый оператор. Типы объектов указываются следующими операторами: CHANNEL - канал; CHSTATUS - состояние канала; CLUSQMGR - информация о кластерных каналах менеджера; PROCESS - процесс; NAMELIST - список кластеров; QALIAS - очередь ALIAS; QCLUSTER - кластерная очередь; QLOCAL - локальная очередь; QMGR - менеджер; QMODEL - модельная очередь; QREMOTE - локальная удаленная очередь. Основные операторы, которые, как правило, стоят на первом месте внутренней команды. ALTER - изменение свойств объекта; CLEAR - удаление сообщений из очереди; DEFINE - создание объекта; DELETE - удаление объекта; DISPLAY - вывод информации об объекте; END - выход из командного процессора runmqsc; PING - проверка соединения; REFRESH - обновление информации; RESET - RESET CLUSTER - выводит менеджер очередей из кластера WebSphere MQ; RESET CHANNEL - сбрасывает счетчики сообщений у канала; RESOLVE - управление сообщениями с признаком незавершенной транзакции; RESUME - оповещение кластера WebSphere MQ о том, что менеджер очередей снова включен в данный кластер; START - оператор старта; STOP - оператор останова; SUSPEND - временное исключение менеджера из кластера WebSphere MQ; Подробный синтаксис команд можно узнать из документации [11]. Пример создания интерфейсов передачи данных в обе стороны между двумя менеджерами QM_Win2000 и QM_HPUX с адресами 198.32.100.26 и 198.32.100.16(1421), причем на менеджере QM_HPUX канал отправитель должен переходить в состояние running как только в соответствующей трансмиссионной очереди появляется сообщение. Для этого создаются объекты на менеджере QM_Win2000: HPUX_Win2000.Q - локальная очередь, в которую будут приходить сообщения от менеджера QM_HPUX; HPUX_Win2000.CH - канал получатель; Win2000_HPUX.TQ - трансмиссионная очередь передачи; Win2000_HPUX.RQ - локальная удаленная очередь; Win2000_HPUX.CH - канал отправитель. При создании объектов с помощью команды DEFINE следует учитывать, что если имя объекта не "берется" в символы "'", то объект будет создан с именем, содержащим только заглавные буквы. То же относится и к другим командам. Набор команд для создания объектов выглядит следующим образом.
    DEFINE QLOCAL ('HPUX_Win2000.Q')

    DEFINE CHANNEL ('HPUX_Win2000.CH')
           CHLTYPE(RCVR)

    DEFINE QLOCAL ('Win2000_HPUX.TQ')
           USAGE(XMITQ)

    DEFINE QREMOTE ('Win2000_HPUX.RQ')
           XMITQ('Win2000_HPUX.TQ') +
           RNAME('Win2000_HPUX.Q')
          RQMNAME('QM_HPUX')

    DEFINE CHANNEL ('Win2000_HPUX.CH')
           CHLTYPE(SDR) +
           CONNAME('198.32.100.16(1421)')
          DISCINT(999999) +
          XMITQ('Win2000_HPUX.TQ')
Создадим объекты на менеджере QM_HPUX: Win2000_HPUX.Q - локальная очередь, в которую будут приходить сообщения от менеджера QM_Win2000; Win2000_HPUX.CH - канал получатель; HPUX _Win2000.TQ - трансмиссионная очередь передачи; HPUX _Win2000.RQ - локальная удаленная очередь; HPUX _Win2000.CH - канал отправитель. Команды для создания этих объектов будут выглядеть следующим образом.
    DEFINE QLOCAL ('Win2000_HPUX.Q')

    DEFINE CHANNEL ('Win2000_HPUX.CH')
           CHLTYPE(RCVR)

    DEFINE QREMOTE ('HPUX_Win2000.RQ') +
           XMITQ('HPUX_Win2000.TQ') +
           RNAME('HPUX_Win2000.Q') +
           RQMNAME('QM_Win2000')

    DEFINE QLOCAL ('HPUX_Win2000.TQ') +
           USAGE(XMITQ) +
           TRIGGER +
           TRIGTYPE(FIRST) +
           TRIGDPTH(1) +
           TRIGDATA('HPUX_Win2000.CH') +
           INITQ('SYSTEM.CHANNEL.INITQ')

    DEFINE CHANNEL ('HPUX_Win2000.CH')
           CHLTYPE(SDR) +
           CONNAME('172.25.4.150') +
           DISCINT(999999) +
           XMITQ('HPUX_Win2000.TQ')
Эти команды можно поместить в два текстовых файла, а затем, выполнив команду runmqsc на каждом менеджере с указанием соответствующего файла, можно получить готовый интерфейс для передачи данных между двумя платформами: UNIX и Windows. Кроме этого, используя команды рестарта каналов, можно управлять их состоянием.

© Макушкин В.А., Володичев Д.С. Все права защищены.