Основные категории задач Системы
Требования к архитектуре системы
Трансформирующий прокси-сервис
Точки входа (Inbound Endpoints)
Точки входа, основанные на событиях
Пример создания прослушивающей точки входа HTTP
Пример создания опрашивающей точки входа — JMS
Добавление точки вызова по URL
Добавление Точки Вызова По Умолчанию
Добавление отказоустойчивой группы
Добавление группы балансировки нагрузки
Добавление точки вызова по шаблону
Добавление динамических точек вызова
Параметры, общие для точек вызова по URL, HTTP, WSDL и по умолчанию
Добавление динамической последовательности
Редактирование последовательности
Установка сервера сервисов данных Polus ESB и доступ к консоли управления
Создание экземпляра (instance) БД и заполнение базы данными
Генератор автоматизированных сервисов данных
Добавление нового пользователя и назначение ролей
Редактирование или удаление роли
Управление шаблонами последовательностей
Управление шаблонами точек вызова
Управление Хранилищами Сообщений
Добавление хранилища сообщений в памяти
Добавление хранилища сообщений JMS
Добавление пользовательского хранилища сообщений
Возможные действия в хранилище сообщений
Управление Процессорами Сообщений
Добавление процессора пересылки запланированных сообщений
Добавление Процессора Выборки Сообщений
Добавление Пользовательского Процессора Сообщений
API |
Applied Programming Interface – интерфейс прикладного программирования, вызов методов которого, как правило, доступен внешним системам |
Axis2 |
Каркас (framework) разработки Web-сервисов с открытым кодом (open source) |
ESB |
Enterprise Service Bus - связующее ПО (middleware) класса «Сервисная шина предприятия» |
HTTP |
HyperText Transfer Protocol - протокол прикладного уровня передачи данных, изначально — в виде гипертекстовых документов в формате HTML, в настоящее время используется для передачи произвольных данных. |
HTTPS |
HyperText Transfer Protocol Secure - расширение протокола HTTP для поддержки шифрования в целях повышения безопасности |
JMS |
Java Messaging Service - стандарт связующего ПО (middleware) для обмена сообщениями |
REST |
Representational State Transfer - архитектурный стиль взаимодействия компонентов распределённого приложения в сети. |
SOAP |
Simple Object Access Protocol - протокол обмена структурированными сообщениями в распределённой вычислительной среде, широко используемый для вызова Web-сервисов |
URL |
Unified Resource Locator – унифицированный указатель ресурса (файла, сервиса и т.д.), определяющий адрес ресурса в глобальной сети |
WebSocket |
Протокол связи поверх TCP-соединения, предназначенный для обмена сообщениями между браузером и веб-сервером, используя постоянное соединение |
WSDL |
Web Service Definition Language - язык описания веб-сервисов и доступа к ним, основанный на языке XML. |
XML |
Extensible Markup Language – расширяемый язык разметки документов, широко используется как формат сообщений в распределенной среде |
XSL |
Extensible Stylesheet Language – набор стандартов, описывающих языки преобразования и визуализации XML-документов |
Система предназначена для мониторинга и конфигурирования корпоративной интеграционной шины Polus ESB и должна предоставлять возможность создавать и конфигурировать интеграционные решения на основании событийной модели и передачи сообщений между информационными системами (источниками и получателями) с использованием графического интерфейса.
Система обеспечивает надежный, унифицированный и гибко настраиваемый механизм обмена данными между информационными системами в рамках предприятия и решает следующие задачи:
обеспечивает настраиваемую маршрутизацию и гарантированную доставку сообщений от источников к получателям;
реализует трансформацию данных между форматами, требуемыми различными приложениями, а также дополнение их необходимой информацией (обогащение данными) из внешних источников информации (баз данных, файловых хранилищ, корпоративных информационных систем, сторонних сервисов);
предоставляет визуальный интерфейс для создания и конфигурирования параметров сообщений и сценариев обмена данными;
обеспечивает возможность разработки и конфигурирования адаптеров к внешним информационным системам (как готовых, так и реализованных самостоятельно);
обеспечивает механизмы аутентификации, авторизации и разграничения прав доступа к функциям и данным системы;
реализует механизм мониторинга и аудита исполняемых процессов и операций;
обеспечивает безопасность передачи данных при помощи шифрования.
С точки единого информационного пространства предприятия и оптимизации бизнес-процессов предприятия внедрение системы позволяет решать следующие задачи:
формирование единого информационного пространства в гетерогенных средах;
получение масштабируемой архитектуры управления уровня компании;
обеспечение синхронизации данных в различных информационных системах;
делегирование задачи построения информационных потоков аналитическим отделам;
уменьшение общей сложности интеграционной схемы и снижение требования к пропускной способности каналов;
снижение транзакционных издержек при обмене данными между различными подразделениями;
снижение общих затрат на обслуживание и сопровождение информационных систем.
Рис. 1. Общая архитектура системы
Общая схема работы Polus ESB реализована следующим образом:
внешнее сообщение/запрос поступает от клиента по определенному протоколу уровня приложения и отправляется первичному обработчику запроса определенного типа (REST API, прокси-сервис, точка входа - inbound endpoint);
далее Polus ESB выполняет последовательность обработки сообщений;
обработанное сообщение передается точке выхода (endpoint), являющейся интерфейсом доступа к системе-получателю.
Первичные обработчики входных сообщений
Первичные обработчики входных сообщений — это объекты Polus ESB, которые запускают выполнение последовательности дальнейшей обработки сообщения.
Система предоставляет 3 типа первичных обработчиков:
REST API;
прокси-сервисы (SOAP);
точки входа (inbound endpoints).
REST API обрабатывает только те входные сообщения, которые ссылаются на конкретный URL контекст, определяемый пользователем при конфигурировании REST API (по аналогии с сервлетом, обрабатывающим только запросы, относящиеся к конкретному Web-приложению, контекст которого определяется соответствующим URL в web.xml).
Далее входящее сообщение передается последовательности обработки запросов (in-sequence), а по окончании обработки — системе-получателю. Ответы от систем-получателей направляются последовательности обработки ответов (out-sequence). Также существует возможность определить последовательность обработки ошибок (fault-sequence), которая выполняется в случае возникновения исключения.
REST API определяет один или более ресурсов, являющихся логическими компонентами API, доступ к каждому из которых предоставляется посредством соответствующего HTTP-вызова (GET, POST, PUT, DELETE).
Прокси-сервис обрабатывает входное сообщение перед отправкой его заданной системе-получателю (endpoint). Существует возможность настройки подключения дополнительной функциональности обработки сообщения при вызове прокси-сервиса до передачи сообщения сервису-получателю (endpoint). Вызов прокси-сервиса доступен не только по HTTP/S, но и с использованием других протоколов уровня приложения (JMS, FTP). Сам прокси-сервис создается в соответствии с Axis2 архитектурой и доступен и как SOAP, и как REST сервис.
Точки входа (inbound endpoints) позволяют не только непосредственно получать входные сообщения (т.е. функционировать как listeners), но и периодически опрашивать различные источники данных (например — JMS-очереди) на предмет появления новых сообщений.
Обработка сообщений
Медиаторы — это отдельные обработчики сообщений, вызываемые после приема входного запроса/сообщения и выполнения первичной обработки при помощи REST API, прокси-сервисов или inbound endpoints. В рамках Polus ESB реализована библиотека медиаторов, обеспечивающих функциональные возможности для реализации стандартных действий по обработке сообщений (фильтрация, трансформация, обогащение дополнительными данными, отправка получателю). Также есть возможность подключить медиатор, реализованный пользователем.
Последовательность — это объект Polus ESB, который реализует последовательный вызов определенных медиаторов и механизм каналов (pipes) между ними, т. е. передачу результатов работы медиатора на вход следующему. Перечень медиаторов и их порядок вызова в рамках последовательности описан в настройках.
Рис. 2. Последовательность и медиаторы
Система предоставляет возможность сконфигурировать последовательности для:
обработки полученного сообщения (in-sequence);
обработки ответа от системы-получателя (out-sequence);
обработки ошибок (fault-sequence).
Рис. 3. Обработка сообщения: запрос, ответ и последовательность ошибок
Система реализует механизм хранения сообщений между вызовами в рамках последовательности.
Этот подход позволяет реализовать следующие сценарии:
обслуживание трафика для внешних сервисов-получателей, которые могут принимать сообщения только с заданной пропускной способностью, тогда как входящий трафик поступает с разной скоростью;
обеспечение гарантированной доставки сообщений в случае сбоев - если обработчики сообщений в определенный момент недоступны, сообщение остается записанным во внутреннее хранилище до тех пор, пока Polus ESB не сможет их вновь обработать.
Рис. 4. Прием, обработка и передача сообщения внешнему сервису (получателю)
Система реализует также механизм настраиваемых коннекторов к широко используемым внешним системам (таким, как JIRA и Google Docs) и позволяет подключать коннекторы, разрабатываемые пользователем. Обработчики в рамках последовательности имеют возможность вызова коннекторов по стандартному интерфейсу.
Взаимодействие с системами-получателями сообщений
Endpoints (точки вызова)
Polus ESB реализует механизм endpoints (точек вызова) – интерфейсов вызова внешних систем, которым в конечном итоге передается обработанное сообщение/запрос. Параметры точки вызова являются настраиваемыми и представляют собой конкретную строку соединения (URL, почтовый ящик, очередь JMS, WebSocket и т. д.), а также прочие параметры, необходимые для подключения и вызова системы-получателя.
Механизм шаблонов и реестр конфигураций
Polus ESB предоставляет механизм шаблонов для настроек/конфигурации всех объектов системы. Пользователь имеет возможность создавать конфигурации последовательностей, точек выхода (endpoints) и других объектов системы в соответствии с определенным прототипом.
Все настройки (конфигурации) объектов системы, включая и дополнительные ресурсы типа WSDL или XSL-преобразований, хранятся в реестре. К каждому элементу настройки обеспечивается доступ по определенному ключу (аналог строки Xpath или пути к файлу в файловой системе).
Используйте страницу Управление API для добавления новых API или изменения/удаления существующих API. Как показано на рисунке 5, страница Развёрнутые API показывает имена существующих API. Действие Edit перенаправляет пользователя на страницу Редактировать API, в то время как действие Удалить запрашивает подтверждение и удаляет API из конфигурации. Действие Добавить API перенаправляет пользователя на страницу Добавить API.
Рис. 5. Просмотр Существующих API
Щёлкните по ссылке Добавить API. Появится страница Добавить API, как показано ниже.
Рис. 6. Добавление API
API требует Имя,
Контекст и не меньше одного Ресурса.
Контекст всегда должен содержать
предшествующий символ '/'. В окне
проектирования этот символ добавлен
по умолчанию, поэтому пользователю не
требуется вводить его повторно. (Обратите
внимание на символ / перед полем ввода
Контекста). Имя узла может использоваться
для фильтрации (входящие сообщения
содержат 'имя узла' в своих заголовках)
полученных ресурсов REST API с входящими
запросами от клиента.
Щёлкните по
ссылке Добавить
Ресурс для
добавления Ресурса к API. Появится форма
для ввода информации Ресурса под секцией
управления API, как показано на Рисунке
7.
Рис. 7. Информация о Ресурсе
Требования к Ресурсу:
Ресурс должен содержать не меньше одного метода. Методы назначаются Ресурсу включением соответствующих флажков.
API может содержать не больше одного Ресурса по умолчанию (Ресурса без шаблона uri и без маппинга url).
Ресурс может иметь Входную Последовательность, Выходную Последовательность и Последовательность обработки ошибок, конфигурация может быть выполнена на месте или выбором конфигурации из реестра или может использовать существующую последовательность, заданную в локальном реестре.
Щёлкните кнопку
Update
для обновления Ресурса. Секция информации
о Ресурсе исчезнет и дочерний элемент
Ресурса будет добавлен к дереву API, как
показано на Рисунке 4.
Щелчок по иконке
Ресурса в дереве загрузит секцию
Информации о Ресурсе обратно вместе с
детальным описанием указанного Ресурса.
Рис. 8. Дерево API
Когда все данные
API и Ресурса будут введены, щёлкните
кнопку
«Сохранить»,
что приведёт к сохранению API в конфигурации
ESB. Также будет показано подтверждающее
сообщение, как изображено на рисунке
ниже.
Рис. 9. Сообщение о добавлении API
Изменение сохранённых
API выполняется щелчком по ссылке Edit на
странице Развёрнутые API. Это перенаправит
пользователя на страницу, на которой
будет показана информация об API. В режиме
редактирования изменение имени API
невозможно.
Возможно Добавление
новых Ресурсов, Изменение/Удаление
существующих Ресурсов.
Когда изменение
данных API будет закончено, щёлкните
кнопку Сохранить,
что приведёт к сохранению деталей API в
конфигурации ESB. Будет показано
подтверждающее сообщение, как изображено
на рисунке ниже.
Рис. 10. Сообщение об изменении API
Щелчок по ссылке Переключиться на исходный код показывает исходный код API в формате xml. Виды исходного кода и режима конструктора синхронизированы. Изменения, сделанные в окне режима конструктора, отражаются в окне исходного кода и наоборот, как показано на рисунке ниже.
Рис. 11. Просмотр исходного кода.
Прокси-сервис действует как размещённый (deployed) на Polus ESB сервис и обычно находится перед точкой вызова другого (внешнего) сервиса. Прокси-сервис может быть создан и сконфигурирован с использованием транспортного протокола, схемы, WSDL, или параметров Quality of Service (таких как WS-Security, WS-Reliable Messaging), отличных от них же у исходного сервиса. Он может обрабатывать сообщения перед тем, как они достигнут точки вызова, и ответы перед тем, как они достигнут клиента.
Клиенты могут отправлять запросы на прокси-сервисы непосредственно в ESB, поскольку клиент видит его как сервис, размещенный на Polus ESB. Например, они могут выполнять функцию ?wsdl и показывать WSDL виртуального прокси-сервиса. В конфигурации ESB такие запросы можно обрабатывать как угодно. Вы можете обработать сообщение и отправить его в реальный сервис, возможно, работающий на другом компьютере (но в целом отправка сообщения — не обязательна). Вы можете указать набор задач, которые должны быть выполнены с сообщениями, полученными для прокси-сервиса, и завершить поток или отправить сообщение обратно клиенту, даже не отправляя его настоящему сервису.
В левом навигационном меню выберите Прокси-сервис. Это приведёт вас на страницу Создать прокси-сервис из Шаблона.
Рис. 12. Выбор шаблона прокси-сервиса
Выберите соответствующий вашим требованиям шаблон. Если вы хотите создать расширенный прокси-сервис, или если ни один из доступных шаблонов не соответствует вашим требованиям, выберите параметр Пользовательский прокси-сервис в конце списка шаблонов. Это запустит мастер создания прокси-сервиса, который позволит вам настроить все параметры прокси-сервиса, включая последовательности, точки вызова, транспортные протоколы, параметры WSDL и параметры Quality of Service.
Страница Создать Прокси-сервис из Шаблона предоставляет вам следующий набор встроенных шаблонов для простого и быстрого создания и настройки прокси-сервисов.
Простой сервис-посредник
Безопасный прокси
Прокси-сервис на основе WSDL
Логирующий прокси-сервис
Трансформирующий прокси-сервис
Пользовательский прокси-сервис
Этот шаблон можно использовать для создания простого прокси-сервиса для указанной точки вызова. Здесь нет никаких доступных настроек для определения последовательностей.
Этот прокси-сервис не выполняет никакой обработки проходящих через него сообщений.
Рис. 13. Простой сервис-посредник
Параметры
Настройки прокси-сервиса: пользователь должен указать имя прокси-сервиса и URL точки вызова. Для точки вызова вводится непосредственно URL или выбирается запись из реестра.
Параметры WSDL: пользователь может предоставить WSDL в виде записи реестра, URL или встроенного (явного) определения WSDL. Если пользователь не укажет параметр WSDL, будет опубликован WSDL по умолчанию.
Настройки транспортного протокола: здесь можно указать параметры транспортного протокола прокси-сервиса.
Примечание: Если пользователь настраивает ESB с Реестром управления и загружает все необходимые файлы в формате *.gar, он может предоставить только базовый WSDL в разделе «параметры WSDL». Нет необходимости предоставлять все необходимые импортированные схемы в качестве ресурсов WSDL, поскольку ESB может получить импортированные ресурсы, используя только базовый WSDL. Обратите внимание, что для вышеуказанной функции пользователю необходимо раскомментировать следующие строки файла @synapse.properties, который находится в папке ESB_HOME/lib/core/WEB_INF/classes.
synapse.wsdl.resolver=org.wso2.carbon.mediation.initializer.RegistryWSDLLocator
synapse.schema.resolver=org.wso2.carbon.mediation.initializer.RegistryXmlSchemaURIResolver
Данный тип прокси-сервиса можно использовать в случае необходимости настройки WS-Security.
Рис. 14. Безопасный прокси-сервис
В дополнение к стандартным параметрам прокси-сервиса (настройки прокси-сервиса, настройки WSDL, настройки транспортного протокола - см. раздел «Простой сервис-посредник) пользователь должен указать политику безопасности.
Примечание: Если пользователь настраивает ESB с Реестром управления и загружает все необходимые файлы в формате *.gar, он может предоставить только базовый WSDL в разделе «параметры WSDL». Нет необходимости предоставлять все необходимые импортированные схемы в качестве ресурсов WSDL, поскольку ESB может получить импортированные ресурсы, используя только базовый WSDL. Обратите внимание, что для вышеуказанной функции пользователю необходимо раскомментировать следующие строки файла @synapse.properties, который находится в папке ESB_HOME/lib/core/WEB_INF/classes.
synapse.wsdl.resolver=org.wso2.carbon.mediation.initializer.RegistryWSDLLocator
synapse.schema.resolver=org.wso2.carbon.mediation.initializer.RegistryXmlSchemaURIResolver
Этот шаблон можно использовать для создания прокси-сервиса из WSDL существующего Web-сервиса. Информация о точке вызова извлекается из удаленно размещенного WSDL реального сервиса.
Рис. 15. Прокси-сервис на основе WSDL
В дополнение к стандартным параметрам для данного типа прокси-сервиса в настройках нужно дополнительно указать URI WSDL, сервис (значение <wsdl:service>) и номер порта (<wsdl:port>).
Примечание: Если пользователь настраивает ESB с Реестром управления и загружает все необходимые файлы в формате *.gar, он может предоставить только базовый WSDL в разделе «параметры WSDL». Нет необходимости предоставлять все необходимые импортированные схемы в качестве ресурсов WSDL, поскольку ESB может получить импортированные ресурсы, используя только базовый WSDL. Обратите внимание, что для вышеуказанной функции пользователю необходимо раскомментировать следующие строки файла @synapse.properties, который находится в папке ESB_HOME/lib/core/WEB_INF/classes.
synapse.wsdl.resolver=org.wso2.carbon.mediation.initializer.RegistryWSDLLocator
synapse.schema.resolver=org.wso2.carbon.mediation.initializer.RegistryXmlSchemaURIResolver
Этот шаблон можно использовать для создания прокси-сервиса, который логирует все входящие запросы и перенаправляет их заданной точке вызова. При необходимости ответы, возвращаемые конечной службой, могут быть залогированы до их направления клиенту.
Рис. 16. Логирующий прокси-сервис
В дополнение к стандартным параметрам для данного типа прокси-сервиса нужно указать уровень логирования при обработке запроса и ответа.
Примечание: Если пользователь настраивает ESB с Реестром управления и загружает все необходимые файлы в формате *.gar, он может предоставить только базовый WSDL в разделе «параметры WSDL». Нет необходимости предоставлять все необходимые импортированные схемы в качестве ресурсов WSDL, поскольку ESB может получить импортированные ресурсы, используя только базовый WSDL. Обратите внимание, что для вышеуказанной функции пользователю необходимо раскомментировать следующие строки файла @synapse.properties, который находится в папке ESB_HOME/lib/core/WEB_INF/classes.
synapse.wsdl.resolver=org.wso2.carbon.mediation.initializer.RegistryWSDLLocator
synapse.schema.resolver=org.wso2.carbon.mediation.initializer.RegistryXmlSchemaURIResolver
Этот шаблон можно использовать для создания прокси-сервиса, когда пользователь пытается реализовать сценарий, в котором происходит трансформация (изменение формата) сообщения. Данный тип прокси может преобразовывать запросы и ответы на основе указанных конфигураций XSLT.
Рис. 17. Трансформирующий прокси-сервис
В дополнение к стандартным параметрам необходимо указать XSLT-преобразование, выбрав его из реестра.
Примечание: Если пользователь настраивает ESB с Реестром управления и загружает все необходимые файлы в формате *.gar, он может предоставить только базовый WSDL в разделе «параметры WSDL». Нет необходимости предоставлять все необходимые импортированные схемы в качестве ресурсов WSDL, поскольку ESB может получить импортированные ресурсы, используя только базовый WSDL. Обратите внимание, что для вышеуказанной функции пользователю необходимо раскомментировать следующие строки файла @synapse.properties, который находится в папке ESB_HOME/lib/core/WEB_INF/classes.
synapse.wsdl.resolver=org.wso2.carbon.mediation.initializer.RegistryWSDLLocator
synapse.schema.resolver=org.wso2.carbon.mediation.initializer.RegistryXmlSchemaURIResolver
Точки входа предназначены для первичной обработки входного сообщения/запроса и передачи на уровень обработки (медиаторы, последовательности) без использования Axis2: точка входа, получив сообщение/запрос по одному из протоколов уровня приложения, непосредственно передает его последовательности, минуя Axis2.
В Polus ESB реализованы три категории точек входа, в каждой из них — несколько типов:
прослушивающие (listening);
опрашивающие (polling);
основанные на событиях (event-based).
Рис. 18. Типы точек входа (inbound endpoints)
Для точек входа всех типов необходимо определять последовательность обработки сообщения и последовательность обработки ошибок.
Прослушивающие точки входа принимают входящие запросы/сообщения на определенном порту и соответствуют следующим условиям:
прием и последующая обработка запроса происходят синхронно;
результат передается клиенту, отправившему запрос/сообщение точке входа;
получив сообщение, прослушивающая точка входа передает его соответствующей последовательности для дальнейшей обработки;
последовательность в результате обработки в итоге передает сообщение точке вызова и возвращает результат, полученный от точки вызова, исходной прослушивающей точке входа.
Рис. 19. Прослушивающая точка входа (listener)
Опрашивающие точки входа периодически проверяют некий «контейнер данных» (каталог, JMS-очередь или JMS/Kafka топик), и как только новые данные становятся доступны — передают их на обработку соответствующей последовательности. Опрашивающие точки входа поддерживают асинхронную обработку.
Значение временного интервала опроса на наличие новых данных в «контейнере» - настраиваемый параметр.
Точки входа, основанные на событиях, однократно подключаются к «серверу событий» и далее «потребляют» (consume) события, т. е. реагируют на каждое вновь возникающее «событие» и передают соответствующее сообщение указанной последовательности.
Для каждого типа точек входа система должна поддерживает как предопределенные точки, так и возможность создавать пользовательские.
Система поддерживать следующий набор предопределенных прослушивающих точек входа:
Таблица 1. Подтипы прослушивающих точек входа
Подтип прослушивающей точки входа |
Специфические для подтипа настраиваемые параметры |
HTTP/HTTPS |
|
CXF WebServices Reliable Messaging |
Подтип предназначен для гарантированной (в соответствии со спецификацией WS Reliable Messaging) обработки входных SOAP-сообщений и должен конфигурироваться следующими параметрами:
|
HL7 |
Порт, параметры валидации, величина тайм-аута и другие параметры, специфичные для протокола |
WebSocket / Secure WebSocket |
|
Параметры типов прослушивающих точек входа
Точки входа HTTP
Параметры конфигурации рабочего пула.
По умолчанию точки входа HTTP совместно используют пул рабочих потоков для обработки входящих запросов. Если вам нужен отдельный пул рабочих потоков для точки входа, вам необходимо настроить следующие параметры:
Таблица 2. Параметры точки входа HTTP
Параметр |
Описание |
Значение по умолчанию |
inbound.worker.pool.size.core |
Начальное количество потоков в пуле рабочих потоков. Это значение можно соответствующим образом изменить в зависимости от количества обрабатываемых сообщений. Максимальное значение, которое здесь можно указать, — это значение параметра inbound.worker.pool.size.max. |
400 |
inbound.worker.pool.size.max |
Максимальное количество потоков в пуле рабочих потоков. Укажите максимальное ограничение, чтобы избежать снижения производительности, которое может произойти из-за переключения контекста. |
500 |
inbound.worker.thread.keep.alive.sec |
Время поддержания активности дополнительных потоков в рабочем пуле. Это значение должно быть меньше времени ожидания сокета. Когда это время истечет для дополнительного потока, он будет уничтожен. Назначение этого параметра — оптимизировать использование ресурсов, избегая потерь, возникающих в результате наличия дополнительных неиспользуемых потоков. |
60 |
inbound.worker.pool.queue.length |
Длина очереди, используемой для хранения готовых к выполнению задач, которые должны выполняться рабочим пулом. Пул потоков начинает ставить задания в очередь, когда все существующие потоки заняты и в пуле достигнуто максимальное количество потоков. Значение этого параметра должно быть -1, чтобы использовать неограниченную очередь. Если используется ограниченная очередь, и очередь заполняется до предела, и любая дальнейшая попытка отправки заданий завершится неудачей, в результате чего синапс отбросит некоторые сообщения. |
-1 |
inbound.thread.group.id |
Уникальный идентификатор группы потоков. |
Группа входящих рабочих потоков PassThrough |
inbound.thread.id |
Уникальный идентификатор потока. |
PassThroughInboundWorkerThread |
dispatch.filter.pattern |
Регулярное выражение, определяющее прокси-сервисы и API для предоставления доступа через точку входа. Укажите выражение .*, чтобы предоставить все прокси-сервисы и API, или укажите выражение, подобное ^(/foo|/bar|/services/MyProxy)$, чтобы определить набор сервисов для предоставления через точку входа. Если вы не укажете выражение, будет доступна только определенная последовательность точки входа. |
blank |
Параметр точки входа для прокси-сервисов
Если прокси-сервис должен предоставляться только через точки входа, в конфигурации прокси-сервера необходимо установить следующий параметр сервиса.
Таблица 3. Параметры прокси-сервиса, доступного тольк о через точки входа
Параметр сервиса |
Описание |
Значение по умолчанию |
inbound.only |
Должен ли прокси-сервис предоставляться только через точки входа. Если установлено значение true, все запросы, которые прокси-сервис получает через обычный транспорт, будут отклонены. Прокси-сервис будет обрабатывать только те запросы, которые получены через точки входа. |
false |
Точки входа HTTPS
Таблица 4. Параметры, специфичные для точки входа HTTPS
Параметр |
Описание |
Обязательный? |
inbound.http.port |
Порт, на котором должен быть запущен прослушиватель точки вызова. |
Да |
keystore |
Расположение KeyStore, где хранятся ключи. |
Да |
truststore |
Расположение TrustStore, в котором хранятся ключи. |
Нет |
SSLVerifyClient |
Используется при включении взаимной проверки. |
Нет |
HttpsProtocols |
Поддерживающие протоколы. |
Нет |
SSLProtocol |
Поддерживающий протокол SSL. |
Нет |
CertificateRevocationVerifier |
Когда для атрибута enable установлено значение true, это подтверждает и проверяет статус отзыва сертификатов хоста с помощью OCSP/CRL при установлении HTTPS-соединений. Если для атрибута enable этого параметра установлено значение true, вам также необходимо указать CacheSize и CacheDelay. CacheSize — максимальный размер кэша. CacheDelay — продолжительность времени между двумя последовательными запланированными задачами управления кэшем, которые выполняют служебную работу для кэша. |
Нет |
Параметры конфигурации рабочего пула для точки входа HTTPS – те же, что и для точки входа HTTP.
Точки входа WebSocket
Таблица 5. Параметры точки входа WebSocket
Параметр |
Описание |
Обязательный? |
inbound.ws.port |
Порт прослушивателя netty, на котором прослушивается входящий трафик WebSocket. |
Да |
ws.client.side.broadcast.level |
Уровень клиентской широковещательной рассылки, который определяет, как кадры WebSocket передаются от точки входа WebSocket клиенту. Широковещательная рассылка происходит на основе абонентского пути клиента, подключенного к точке входа WebSocket. Возможны следующие три уровня: 0 — только уникальный клиент может получить кадр от точки входа WebSocket. 1 — все клиенты, подключенные к одному и тому же абонентскому пути, получают кадр WebSocket. 2 — Все клиенты, подключенные к одному и тому же абонентскому пути, кроме того, кто публикует фрейм во входящие, получают фрейм WebSocket. |
Да |
ws.outflow.dispatch.sequence |
Последовательность для медиации между серверной частью и клиентом. |
Да |
ws.outflow.dispatch.fault.sequence |
Последовательность сбоев для пути медиации между серверной частью и клиентом. |
Да |
ws.boss.thread.pool.size |
Размер netty boss пула |
Нет |
ws.worker.thread.pool.size |
Размер пула рабочих потоков. |
Нет |
ws.subprotocol.handler.class |
Укажите один или несколько необходимых настраиваемых классов обработчиков подпротокола. Разделяйте каждый пользовательский класс обработчика подпротокола точкой с запятой. |
Нет |
ws.default.content.type |
Указывает тип содержимого кадров веб-сокета, получаемых от точки входа. |
Нет |
ws.shutdown.status.code |
Указывает код состояния кадра закрытого веб-сокета, отправляемого при закрытии точки входа. |
Нет |
ws.shutdown.status.message |
Указывает сообщение о состоянии закрытого фрейма веб-сокета, когда точка входа закрыта. |
Нет |
ws.pipeline.handler.class |
Полное имя класса реализованного вами класса обработчика конвейера. |
Нет |
Точки входа Secure WebSocket
Таблица 6. Параметры точки входа Secure WebSocket
Параметр |
Описание |
Обязательный? |
inbound.ws.port |
Порт прослушивателя netty, на котором прослушивается входящий трафик WebSocket. |
Да |
ws.client.side.broadcast.level |
Уровень клиентской широковещательной рассылки, который определяет, как кадры WebSocket передаются от точки входа WebSocket клиенту. Широковещательная рассылка происходит на основе абонентского пути клиента, подключенного к точке входа WebSocket. Возможны следующие три уровня: 0 — только уникальный клиент может получить кадр от точки входа WebSocket. 1 — все клиенты, подключенные к одному и тому же абонентскому пути, получают кадр WebSocket. 2 — Все клиенты, подключенные к одному и тому же абонентскому пути, кроме того, кто публикует фрейм во входящие, получают фрейм WebSocket. |
Да |
ws.outflow.dispatch.sequence |
Последовательность для медиации между серверной частью и клиентом. |
Да |
ws.outflow.dispatch.fault.sequence |
Последовательность сбоев для пути медиации между серверной частью и клиентом. |
Да |
wss.ssl.key.store.file |
Расположение хранилища ключей, в котором хранятся ключи. |
Да |
wss.ssl.key.store.pass |
Пароль для доступа к файлу хранилища ключей. |
Да |
wss.ssl.trust.store.file |
Местоположение хранилища доверенных сертификатов, в котором хранятся ключи. |
Да |
wss.ssl.trust.store.pass |
Пароль для доступа к файлу хранилища доверенных сертификатов. |
Да |
wss.ssl.cert.pass |
Пароль сертификата SSL. |
Да |
ws.boss.thread.pool.size |
Размер netty boss пула |
Нет |
ws.worker.thread.pool.size |
Размер пула рабочих потоков. |
Нет |
ws.subprotocol.handler.class |
Укажите один или несколько необходимых настраиваемых классов обработчиков подпротокола. Разделяйте каждый пользовательский класс обработчика подпротокола точкой с запятой. |
Нет |
ws.default.content.type |
Указывает тип содержимого кадров веб-сокета, получаемых от точки входа. |
Нет |
ws.shutdown.status.code |
Указывает код состояния кадра закрытого веб-сокета, отправляемого при закрытии точки входа. |
Нет |
ws.shutdown.status.message |
Указывает сообщение о состоянии закрытого фрейма веб-сокета, когда точка входа закрыта. |
Нет |
ws.pipeline.handler.class |
Полное имя класса реализованного вами класса обработчика конвейера. |
Нет |
wss.ssl.protocols |
Включает протокол SSL для конкретной точки входа WebSocket. Значение по умолчанию — «TLS». Вы можете изменить его на версию (версии) TLS, которые включены с протоколом SSL (т. е. TLSv1, TLSv1.1, TLSv1.2). Например, <parameter name="wss.ssl.protocols">TLSv1.1,TLSv1.2</parameter> |
Нет |
wss.ssl.cipher.suites |
Включает указанные наборы шифров для конкретной точки входа WebSocket. Например,
<parameter name="wss.ssl.cipher.suites"> TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, TLS_DHE_RSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA </parameter>
|
Нет |
Точка входа HL7
Таблица 7. Параметры точки входа HL7
Параметр |
Описание |
Значение по умолчанию |
Возможные значения |
inbound.hl7.Port |
Порт, на котором нужно запустить прослушиватель MLLP. |
N/A |
Номер порта |
inbound.hl7.AutoAck |
Следует ли отправлять автоматическое подтверждение при получении сообщения. Если установлено значение false, вы можете определить тип отправляемого подтверждения HL7. Дополнительные сведения см. в разделе Свойства уровня медиации точки входа HL7. |
true |
true | false |
inbound.hl7.ValidateMessage |
Это включает проверку сообщений HL7. |
true |
true | false |
inbound.hl7.TimeOut |
Интервал ожидания в миллисекундах для запуска сообщения NACK. |
10000 |
[0..9]* |
inbound.hl7.CharSet |
Набор символов, используемый для кодирования и декодирования сообщений. Некоторые многобайтовые кодировки символов (например, UTF-16, UTF-32) могут привести к тому, что значения байтов будут равны символам кадрирования MLLP или значениям байтов меньше 0x1F, что приведет к ошибкам. |
UTF-8 |
ISO-8859-1 |
inbound.hl7.BuildInvalidMessages |
Если для параметра inbound.hl7.ValidateMessage задано значение false и входящее сообщение является недопустимым, этот параметр указывает, должно ли необработанное сообщение, полученное через транспорт MLLP, передаваться на уровень медиации. |
false |
true | false |
inbound.hl7.PassthroughInvalidMessages |
Если для параметра inbound.hl7.BuildInvalidMessages задано значение true, этот параметр уведомляет транспортный отправитель Axis2 HL7 о необходимости использования необработанного сообщения. |
false |
true | false |
inbound.hl7.MessagePreProcessor |
Здесь можно определить реализацию интерфейса org.wso2.carbon.inbound.endpoint.protocol.hl7.HL7MessagePreprocessor. Он предоставляет точку расширения для перехвата входящих сообщений до того, как произойдет какой-либо анализ сообщений. |
N/A |
Полное имя класса. |
Ниже приведены свойства уровня медиации, которые можно задать для точки входа HL7.
Область действия этих свойств является областью действия по умолчанию.
Таблица 8. Свойства уровня медиации точки входа HL7
Свойство |
Описание |
<property name="HL7_RESULT_MODE" value="ACK|NACK" scope="default"/> |
Это используется для определения типа отправляемого подтверждения HL7. Если для параметра inbound.hl7.AutoAck установлено значение true, это свойство не действует. |
<property name="HL7_NACK_MESSAGE" value="<ERROR MESSAGE>" scope="default" /> |
Это используется для определения пользовательского сообщения об ошибке, которое будет отправлено, если вы установили свойство HL7_RESULT_MODE как NACK. |
<property name="HL7_APPLICATION_ACK" value="true" scope="default"/> |
Если для параметра inbound.hl7.AutoAck установлено значение false и клиенту не отправляется немедленный автоматически сгенерированный ACK, это свойство определяет, должны ли мы автоматически генерировать ACK для запроса после завершения потока передачи. Если для параметра inbound.hl7.AutoAck и этого свойства задано значение false, в качестве ответа необходимо сгенерировать сообщение ACK в правильном формате. |
Настройка точки входа HL7
Точку входа HL7 можно настроить с помощью файла <ESB_HOME>/conf/hl7.properties.
Поддерживаемый список параметров настройки для этого файла выглядит следующим образом:
Таблица 9. Настройки файла свойств точки входа HL7
Property |
Description |
Value |
hl7_id_generator |
По умолчанию библиотека синтаксического анализа HAPI HL7 использует генератор идентификаторов на основе файлов для создания уникальных идентификаторов элементов управления. Чтобы использовать генератор идентификаторов на основе UUID, вы можете изменить его на «uuid». |
file | uuid (default = file) |
worker_threads_core |
Определяет размер пула входящих рабочих потоков HL7. |
[0..9]* (default = 100) |
io_thread_count |
Определяет количество потоков ввода-вывода, которые использует IO Reactor. Рекомендуется установить это значение равному числу ядер на машине. |
[0..9]* (default = 2) |
so_timeout |
Определяет время ожидания сокета TCP. |
[0..9]* (default = 0) |
connect_timeout |
Определяет время ожидания соединения TCP. |
[0..9]* (default = 0) |
so_keep_alive |
Определяет сохранение активности сокета TCP. |
true | false (default = true) |
so_rcvbuf |
Определяет размер приемного буфера сокета TCP. |
[0..9]* (default = 0 использует значение ОС по умолчанию. Максимальное значение зависит от настроек ОС). |
so_sndbuf |
Определяет размер буфера отправки сокета TCP. |
[0..9]* (default = 0 использует значение ОС по умолчанию. Максимальное значение зависит от настроек ОС). |
Для настройки пользовательской прослушивающей точки, помимо параметров, общих для всех точек входа (последовательность обработки сообщений и последовательность обработки ошибок) достаточно определить только разработанный пользователем класс реализации.
Система поддерживает следующий набор предопределенных опрашивающих точек входа:
Таблица 10. Подтипы опрашивающих точек входа
Подтип прослушивающей точки входа |
Специфические для подтипа настраиваемые параметры |
Файл |
Подтип предназначен для обработки файлов в определенном каталоге и должен конфигурироваться следующими параметрами:
|
JMS: очередь или топик |
|
Kafka-топик |
|
Таблица 11. Параметры точки входа типа Файл
Имя параметра |
Описание |
Обязательный? |
Возможные значения |
Значение по умолчанию |
interval |
Продолжительность времени в миллисекундах между двумя сканированиями файлов, которые проверяют наличие обновлений. |
Yes |
|
|
sequential |
Файлы будут обрабатываться последовательно, если для этого параметра установлено значение true. |
Yes |
|
true |
coordination |
Это должно быть «true» для кластерных развертываний, чтобы два узла не могли получить один и тот же файл. |
Yes |
|
true |
transport.vfs. |
URI расположения ваших файлов. Это должно быть исходное расположение файлов (если вы настраиваете ESB для чтения файлов) или место назначения файлов (если вы настраиваете ESB для отправки файлов). Вы можете указать параметры уровня соединения в URL-адресе (см. Параметры URL-адреса VFS). Когда вам нужно получить доступ к абсолютному пути URL-адреса, вы можете определить URL-адрес с помощью sftpPathFromRoot, как показано ниже. Также обратите внимание, что transport.vfs.AvoidPermissionCheck является обязательным параметром для этого URL-адреса при использовании FTPS. <parameter
name="transport.vfs.FileURI"> |
Yes |
Действительный URI файла в следующей форме: file://<путь> |
|
transport.vfs. |
Тип содержимого файлов, обрабатываемых транспортом. Чтобы указать кодировку при чтении файла, укажите после типа содержимого точку с запятой и набор символов. Например: <parameter name="transport.vfs.ContentType">text/plain;charset=UTF-32</parameter> При записи файла вы можете установить другую кодировку с помощью свойства CHARACTER_SET_ENCODING: <property name="CHARACTER_SET_ENCODING" value="UTF-8" scope="axis2" type="STRING"/> |
Yes |
Допустимый тип содержимого для файлов (например, text/xml). Вы можете указать кодировку после типа контента, например: text/plain;charset=UTF-32 |
|
transport.vfs. |
Если VFS listener должен обрабатывать только подмножество файлов, доступных в указанном местоположении файла URI, используйте этот параметр, чтобы выбрать эти файлы по имени с помощью регулярного выражения. |
No |
Регулярное выражение для выбора файлов по имени (например, *\.xml) |
|
transport.vfs. |
Следует ли перемещать или удалять файлы после их обработки транспортом. |
No |
MOVE или DELETE |
DELETE |
transport.vfs. |
Следует ли перемещать или удалять файлы в случае сбоя. |
No |
MOVE или DELETE |
DELETE |
transport.vfs. |
Куда переместить файлы после обработки, если значение, указанное как transport.vfs.ActionAfterProcess, равно MOVE . |
Да,
если |
Действительный URI файла |
|
transport.vfs. |
Куда переместить файлы после обработки, если значение, указанное как transport.vfs.ActionAfterFailure, равно MOVE . |
Да,
если |
Действительный URI файла |
|
transport.vfs. |
Место, куда транспорт должен записывать файлы ответов. |
No |
Действительный URI файла |
|
transport.vfs. |
Имя для файлов ответов, записываемых транспортом. |
No |
Допустимое имя файла |
response.xml |
transport.vfs. |
Шаблон/формат метки времени, добавляемой к именам файлов в качестве префиксов при перемещении файлов. |
No |
Действительный шаблон временной метки (например: yyyy-MM-dd'T'HH:mm:ss.SSSZ ) |
|
transport.vfs. |
Должны ли файлы передаваться в потоковом режиме, что полезно при передаче больших файлов. |
No |
True или false |
false |
transport.vfs. |
Значение времени ожидания повторного подключения в секундах, которое будет использоваться в случае ошибки при передаче файлов. |
No |
Положительное целое число |
30 sec |
transport.vfs. |
Максимальное количество повторных попыток в случае ошибок. |
No |
Положительное целое число |
3 |
transport.vfs. |
Место для перемещения сбойного файла. |
No |
Действительный URI файла |
|
transport.vfs. |
Имя файла, в котором хранится список файлов с ошибками. |
No |
Допустимое имя файла |
vfs-move-failed-records. характеристики |
transport.vfs. |
Место для хранения файла ошибочных записей. |
No |
URI папки |
repository/conf/ |
transport.vfs. |
Формат метки времени для записей в файле ошибочных записей. Файл записей о сбоях содержит имя файла, в котором произошел сбой, и отметку времени его сбоя. |
No |
Действительный
шаблон временной метки |
dd-MM-yyyy HH:mm:ss |
transport.vfs. |
Время ожидания в миллисекундах перед повторной попыткой выполнения задачи перемещения. |
No |
Положительное целое число |
3000 миллисекунд |
transport.vfs.Locking |
По умолчанию блокировка файлов включена в транспорте VFS. Этот параметр позволяет настроить поведение блокировки для каждого сервиса отдельно. Вы также можете отключить блокировку глобально, указав параметр на уровне получателя и выборочно включив блокировку только для набора сервисов. |
No |
enable или disable |
enable |
transport.vfs. |
Этот параметр позволяет регулировать VFS listener, обрабатывая файлы пакетами. Укажите количество файлов, которые вы хотите обработать в каждом пакете. |
No |
Положительное целое число, например 10 |
N/A |
transport.vfs. |
Интервал в миллисекундах между пакетами обработки файлов. |
No |
Положительное целое число, например 1000 |
N/A |
transport.vfs. |
Это применимо только в кластерных развертываниях. Установите значение true, если вам нужно избежать одновременной обработки одного и того же файла несколькими серверами. |
No |
true или false |
N/A |
transport.vfs. |
Время ожидания в секундах для распределенной блокировки. |
No |
Положительное целое число, например 10 |
N/A |
transport.vfs. |
Установите значение true, если вам нужно снять блокировку, чтобы файлы не обрабатывались из-за ошибочной блокировки. Это работает вместе с параметрами transport.vfs.AutoLockReleaseInterval и transport.vfs.LockReleaseSameNode. |
No |
true или false |
N/A |
transport.vfs. |
Интервал снятия блокировки в миллисекундах. |
No |
Положительное целое число, например 1000 |
N/A |
transport.vfs. |
Установите значение true, если вам нужно снять блокировки только на том же рабочем узле. Если для этого параметра установлено значение false, блокировки, накопленные другими узлами, будут сняты в соответствии со значением, указанным в transport.vfs.AutoLockReleaseInterval . |
No |
true или false |
true |
transport.vfs. |
Атрибут, по которому файлы должны сортироваться и обрабатываться. |
No |
NONE, Name, Size и Lastmodifiedtimestamp |
N/A |
transport.vfs. |
Порядок сортировки для сортировки и обработки файлов. Если установлено значение true, файлы будут сортироваться в порядке возрастания на основе атрибута, указанного вами в transport.vfs.FileSortAttribute. |
No |
true или false |
true |
transport.vfs. |
Установите значение true, чтобы создать папку, если папка не существует при перемещении файлов. |
No |
true или false |
false |
transport.vfs. |
Шаблон/формат временных меток, добавляемых в структуру папок при перемещении файлов. Вам необходимо установить для transport.vfs.CreateFolder значение true, чтобы указать значение для этого параметра. |
No |
Действительный шаблон временной метки (например: yyyy-MM-dd'T'HH:mm:ss.SSSZ ) |
N/A |
transport.vfs.Build |
Установите значение true, если вам нужно создать содержимое внутри файла перед внедрением файла в механизм медиации. В случае ошибки сборки файл не будет внедрен в механизм медиации. |
No |
true или false |
false |
Таблица 12. Параметры точки входа JMS
Имя параметра |
Описание |
Обязательный? |
Возможные значения |
Значение по умолчанию |
java.naming. |
Класс фабрики начального контекста JNDI. Класс должен реализовать интерфейс java.naming.spi.InitialContextFactory. |
Yes |
Допустимое имя класса |
- |
java.naming. |
URL-адрес поставщика JNDI. |
Yes |
Действительный URL |
- |
transport.jms. |
Имя JNDI фабрики соединений. |
Yes |
- |
- |
sequential |
Должны ли сообщения опрашиваться и вводиться последовательно или нет. |
Yes |
true, false |
true |
transport.jms. |
Тип фабрики соединений. |
No |
queue, topic |
queue |
transport.jms.Destination |
JNDI-имя пункта назначения. |
No |
- |
Значением по умолчанию является имя сервиса. |
transport.jms. |
Режим подтверждения сеанса JMS. |
No |
AUTO_ACKNOWLEDGE, |
AUTO_ACKNOWLEDGE |
transport.jms.CacheLevel |
Уровень кэша ресурсов JMS. |
No |
0-нет, 1-подключение, 2-сеанс, 3-потребитель Чтобы подписаться на темы, установите значение transport.jms.CacheLevel равным 3. |
0 |
transport.jms.UserName |
Имя пользователя подключения JMS. |
No |
- |
- |
transport.jms.Password |
Пароль подключения JMS. |
No |
- |
- |
transport.jms.JMSSpecVersion |
Версия API JMS. |
No |
1.0.2b, 1.1, 2.0 |
1.1 |
transport.jms. |
Является ли фабрика соединений устойчивой по подписке или нет. |
No |
true, false |
false |
transport.jms. |
Параметр ClientId при использовании устойчивых подписок. |
Требуется, если значение, указанное как transport.jms.SubscriptionDurable, равно true. |
- |
- |
transport.jms. |
Имя постоянного подписчика. |
Требуется, если значение, указанное как transport.jms.SubscriptionDurable, равно true. |
- |
- |
transport.jms. |
Реализация селектора сообщений. |
No |
- |
|
transport.jms. |
Время ожидания сообщения JMS во время опроса. Установите значение этого параметра в отрицательное целое число, чтобы ждать бесконечно. Установите его на ноль, чтобы предотвратить ожидание. |
No |
Количество миллисекунд ожидания. |
1 |
transport.jms.ContentType |
Как входящий listener должен определять тип содержимого полученных сообщений. Приоритет всегда отдается типу сообщения JMS. |
No |
Простое строковое значение, и в этом случае listener транспорта предполагает, что полученные сообщения всегда имеют указанный тип содержимого или набор правил. Дополнительные сведения см. на странице http://axis.apache.org/axis2/java/transports/jms.html#Service_configuration. |
- |
transport.jms. |
Получите тип содержимого из свойства сообщения. |
No |
contentType |
- |
transport.jms. |
Место назначения, в котором хранится ответ, сгенерированный серверной службой. |
No |
- |
ReplyTo из сообщения |
transport.jms. |
Должны ли сообщения публиковаться через то же соединение, через которое они были получены. |
No |
true, false |
false |
transport.jms. |
Если установлено значение true, сообщения будут пересылаться только одному из потребителей, а потребители будут делиться сообщениями, опубликованными в теме. |
No |
true, false |
false |
pinnedServers |
Список имен серверов синапсов, разделенных запятыми или пробелами, на которых должна быть развернута эта точка входа. Если нет закрепленного списка серверов, конфигурация точки входа будет развернута на всех экземплярах сервера. |
No |
Список допустимых имен серверов синапсов |
- |
transport.jms. |
Количество параллельных потоков, которые необходимо запустить для обработки сообщений при опросе. |
No |
Любое положительное целое число. Для топиков это всегда должно быть 1. |
1 |
transport.jms. |
Интервал повторных попыток повторного подключения к серверу JMS. |
No |
Интервал повтора в миллисекундах. |
- |
transport.jms. |
Количество последовательных сбоев медиации, после которых опрос должен быть приостановлен. |
No |
Укажите любое положительное числовое значение в зависимости от ваших требований. Опрос будет приостановлен, когда число отказов медиации достигнет указанного значения. |
- |
transport.jms. |
Период времени, в течение которого опрос должен быть приостановлен, если задан параметр transport.jms.RetriesBeforeSuspension. |
No |
Укажите требуемый период времени в миллисекундах. |
60000 |
Таблица 13. Параметры точки входа Kafka
Имя параметра |
Описание |
Обязательный? |
Возможные значения |
Значение по умолчанию |
zookeeper.connect |
Хост и порт сервера ZooKeeper (hostname:port). |
Yes |
localhost:2181 |
|
consumer.type |
Тип конфигурации потребителя. Это может быть либо простой, либо высокоуровневый. |
Yes |
highlevel, simple |
|
interval |
Интервал опроса для точки входа для опроса сообщений. |
Yes |
|
|
coordination |
Если установлено значение true в настройке кластера, это будет запускать входящий трафик только на одном рабочем узле. |
Yes |
true, false |
true |
sequential |
Поведение при выполнении данной последовательности. |
Yes |
true, false |
true |
topics |
Категория для подачи сообщений. Конфигурация kafka высокого уровня может иметь более одного топика. Вы можете указать несколько названий топиков в виде значений, разделенных запятыми. |
Yes |
|
|
content.type |
Содержание сообщения. |
Yes |
appllication/xml, application/json |
|
group.id |
Если все экземпляры потребителей имеют одну и ту же группу потребителей, это работает как традиционная очередь, балансирующая нагрузку на потребителей. Если все экземпляры потребителей имеют разные группы потребителей, это работает как публикация-подписка, и все сообщения передаются всем потребителям. |
Yes |
|
|
thread.count |
Количество потоков. |
No |
|
1 |
consumer.id |
Идентификатор потребителя. |
No |
|
null |
socket.timeout.ms |
Время ожидания сокета для сетевых запросов. |
No |
|
30 * 1000 |
socket.receive.buffer.bytes |
Буфер приема сокета для сетевых запросов. |
No |
|
64 * 1024 |
fetch.message.max.bytes |
Количество байтов сообщений, которые нужно попытаться извлечь для каждого раздела топика в каждом запросе на выборку. |
No |
|
1024 * 1024 |
num.consumer.fetchers |
Потоки сборщика чисел, используемые для выборки данных. |
No |
|
1 |
auto.commit.enable |
Установленное смещение, используемое в качестве позиции, с которой новый потребитель начнет работу в случае сбоя процесса. |
No |
true, false |
true |
auto.commit.interval.ms |
Частота в мс, с которой потребительские смещения передаются в zookeeper. |
No |
|
60 * 1000 |
queued.max.message.chunks |
Максимальное количество блоков сообщений, буферизованных для использования. Каждый фрагмент может достигать значения, указанного в fetch.message.max.bytes. |
No |
|
2 |
rebalance.max.retries |
Максимальное количество повторных попыток. |
No |
|
4 |
fetch.min.bytes |
Минимальный объем данных, который сервер должен вернуть для запроса на выборку. |
No |
|
1 |
fetch.wait.max.ms |
Максимальное время, в течение которого сервер будет блокироваться перед ответом на запрос выборки, если данных недостаточно для немедленного обслуживания fetch.min.bytes. |
No |
|
100 |
rebalance.backoff.ms |
Время задержки между повторными попытками во время перебалансировки. |
No |
|
2000 |
refresh.leader.backoff.ms |
Время задержки перед попыткой определить лидера раздела, который только что потерял своего лидера. |
No |
|
200 |
auto.offset.reset |
Установите одно из следующих значений в зависимости от того, что вам нужно делать, когда в ZooKeeper нет начального смещения или если смещение выходит за пределы допустимого диапазона. smallest - автоматически сбросить смещение до наименьшего смещения. largest - Автоматически сбрасывать смещение до наибольшего смещения. anything else - выдать исключение потребителю. |
No |
smallest, largest, anything else |
largest |
consumer.timeout.ms |
Интервал тайм-аута, по истечении которого потребителю должно быть выдано исключение тайм-аута, если сообщение недоступно для потребления. Рекомендуется установить это значение меньше, чем интервал точки входа Kafka. |
No |
|
3000 |
exclude.internal.topics |
Установите значение true, если сообщения из внутренних топиков, таких как смещения, должны быть доступны потребителю. |
No |
true, false |
true |
partition.assignment.strategy |
Стратегия назначения разделов, которая будет использоваться при назначении разделов потребительским потокам. |
No |
range, roundrobin |
range |
client.id |
Указанная пользователем строка, отправляемая в каждом запросе для помощи в отслеживании вызовов. |
No |
|
value of group id |
zookeeper.session.timeout.ms |
Значение времени ожидания сеанса ZooKeeper в миллисекундах. |
No |
|
6000 |
zookeeper.connection.timeout.ms |
Максимальное время в миллисекундах, которое клиент должен ждать при установлении соединения с ZooKeeper. |
No |
|
6000 |
zookeeper.sync.time.ms |
Разница во времени в миллисекундах, в течение которой подписчик ZooKeeper может отставать от лидера ZooKeeper. |
No |
|
2000 |
offsets.storage |
Место хранения смещений. |
No |
zookeeper, kafka |
zookeeper |
offsets.channel.backoff.ms |
Период отсрочки в миллисекундах при повторном подключении к каналу смещений или повторной попытке неудачных запросов на выборку/фиксацию смещения. |
No |
|
1000 |
offsets.channel.socket.timeout.ms |
Время ожидания сокета в миллисекундах при чтении ответов на запросы выборки/фиксации смещения. |
No |
|
10000 |
offsets.commit.max.retries |
Максимально допустимое количество повторных попыток. Если запрос метаданных потребителя по какой-либо причине завершается сбоем, происходит повторная попытка, но это не влияет на это ограничение. |
No |
|
5 |
dual.commit.enabled |
Если для offsets.storage установлено значение kafka, смещения фиксации могут быть двойными для ZooKeeper. Установите для этого параметра значение true, если вам нужно выполнить миграцию из хранилища смещения на основе zookeeper в хранилище смещения на основе kafka. |
No |
true, false |
true |
Примечание
В конфигурациях высокого уровня kafka вместо параметров топиков используются следующие параметры:
<parameter name="topic.filter">test</parameter>
<parameter name="filter.from.whitelist">true</parameter>
Таблица 14. Параметры для использования фильтров топиков
Parameter
|
Description
|
Required
|
topic.filter |
Название фильтра топика. |
Да |
filter.from.whitelist |
Если установлено значение true, сообщения потребляются из белого списка (включаются). Если установлено значение false, сообщения потребляются из черного списка (исключаются). |
Да |
Таблица 15. Параметры низкоуровневой настройки топиков Kafka
Parameter |
Description |
Required |
simple.topic |
Категория для подачи сообщений. |
Да |
simple.brokers |
Конкретное имя брокера Kafka. |
Да |
simple.port |
Конкретный номер порта сервера Kafka. |
Да |
simple.partition |
Раздел топика. |
Да |
simple.max.messages.to.read |
Максимальное количество сообщений для извлечения. |
Да |
Для настройки пользовательской опрашивающей точки, помимо параметров, общих для всех точек входа (последовательность обработки сообщений и последовательность обработки ошибок), достаточно определить только разработанный пользователем класс реализации и интервал опроса.
Система поддерживает предопределенные точки входа для работы с брокером сообщений RabbitMQ и обработку сообщений по протоколу MQTT.
Для настройки пользовательской точки, основанной на событиях, помимо параметров, общих для всех точек входа (последовательность обработки сообщений и последовательность обработки ошибок), достаточно определить только разработанный пользователем класс реализации.
Добавляем новую точку входа: «Точки входа» / «Добавить точку входа»
Указываем имя («Название») и подтип точки входа (HTTP), нажимаем кнопку «Следующий»:
Рис. 20. Создание новой точки входа HTTP
Далее указываем значения параметров точки входа; параметры «Последовательность» и «Последовательность ошибок» являются общими для всех точек входа.
Для точек входа HTTP обязательным параметром является inbound.port.http – порт, на котором точка входа будет «прослушивать» входящие запросы. Прочие параметры нужны для конфигурирования пула потоков обработки входящих запросов для точки вызова HTTP
Рис. 21. Параметры новой точки входа HTTP
При нажатии на кнопку «Сохранить» созданная точка входа появляется в общем списке:
Рис. 22. Список точек входа
Добавляем новую точку входа: «Точки входа» / «Добавить точку входа», указываем название, выбираем подтип (JMS) и нажимаем «Следующий»:
Рис. 23. Новая точка входа JMS
Устанавливаем параметры, общие для всех опрашивающих точек входа:
Последовательность - последовательность, которой точка входа передает сообщение для дальнейшей обработки
Последовательность ошибок — последовательность, которой передается сообщение на дальнейшую обработку при возникновении ошибки
sequential – обработка сообщения последовательностью в том же потоке (true) или независимо (поток выбирается из пула)
suspend – создать точку входа в статусе «приостановлена» (true) или «активна» (false)
interval – интервал (в миллисекундах), с которым точка входа опрашивает источник данных
coordination – актуален для кластерного режима: в случае true опрос выполняет точка входа только на одном узле кластера
Для точки входа JMS нужно также выбрать тип источника данных — топик или очередь JMS, а также установить значения специфичных для протокола JMS параметров:
Рис. 24. Параметры точки входа JMS
Используйте функцию управления точками вызова, чтобы добавлять, удалять и изменять точки вызова.
В навигаторе в разделе Управление > Служебная шина, щелкните Точки Вызова. Появится страница Управление Точками Вызова.
На вкладке Добавить Точку Вызова, выберите тип точки вызова, которую вы хотите добавить. Доступные варианты:
Точка вызова по URL |
Определяет прямой URL сервиса |
Точка вызова по умолчанию |
Определяет дополнительную конфигурацию для целевого объекта по умолчанию |
Отказоустойчивая группа |
Определяет точки вызова, к которым сервис попытается подключиться в случае сбоя. Это будет происходить в циклическом порядке |
Точка вызова HTTP |
Определяет точку вызова REST сервиса на основе шаблона URI. |
Точка вызова баланса нагрузки |
Определяет группы точек вызова для реплицированных сервисов. Входящие запросы будут направляться на эти точки вызова в циклическом режиме. Эти точки вызова также автоматически обрабатывают отказоустойчивые случаи. |
Список получателей |
Определяет список точек вызова, на которые будет перенаправлено сообщение |
Точка вызова по шаблону |
Точка вызова, созданная по предопределенному шаблону |
Точка вызова WSDL |
Определяет WSDL, сервис и порт |
На вкладке Добавить точку вызова, щёлкните Точка вызова по URL
Рис. 25. Точка вызова по URL
Если вы хотите настроить дополнительные параметры, щелкните раскрывающуюся панель Показать Дополнительные Параметры. Появится страница со всеми доступными параметрами точки вызова по URL.
Рис. 26. Настройка точки вызова по URL — Дополнительные параметры
Введите необходимые данные в поля. Следующие поля определяют конфигурацию Адресной Точки Вызова.
Имя: Уникальное имя для точки вызова.
Адрес: URL точки вызова. Вы можете проверить доступность данного URL на лету, просто щелкнув Проверить Адрес.
Формат: Формат сообщения для точки вызова. Доступные значения:
Оставить Как Есть: Исходящее сообщение не преобразуется;
SOAP 1.1: Преобразование сообщения в формат SOAP 1.1;
SOAP 1.2: Преобразование сообщения в формат SOAP 1.2;
Обычный Старый формат XML (POX) — Преобразование в обычный старый формат XML;
Передача репрезентативного состояния (REST/GET) — Преобразование в запрос HTTP методом GET;
Оптимизировать: Оптимизация для сообщения, которое передает двоичные данные. Доступные значения:
Оставить Как Есть: Без специальной Оптимизации. Сохранить исходное сообщение;
SwA: Оптимизировано как сообщение SOAP with Attachment (SOAP с Вложением);
Оптимизировано как MTOM (механизм оптимизации передачи сообщений).
Примечание: остальные поля являются общими для точек вызова типа URL, HTTP, По умолчанию и WSDL.
На вкладке Добавить точку вызова щёлкните Точка вызова по умолчанию. Появится страница Точка вызова по умолчанию. Вы можете переключиться на дополнительные параметры, щёлкнув раскрывающуюся панель Показать дополнительные параметры.
Рис. 27. Точка вызова по умолчанию
Введите необходимые данные в поля. Точка Вызова По Умолчанию отличается от Адресной Точки Вызова только наличием свойства URL.
Примечание: остальные поля являются общими для точек вызова типа URL, HTTP, По умолчанию и WSDL.
На вкладке Добавить Точку Вызова щёлкните Точка Вызова HTTP
Рис. 28. Настройка точки вызова HTTP
Если вы хотите изменить дополнительные параметры, щелкните раскрывающуюся панель Показать дополнительные параметры. Появится страница со всеми доступными настройками точки вызова HTTP.
Рис. 29. Настройки точки вызова HTTP — Дополнительные параметры
Введите необходимые данные в поля. Следующие поля определяют конфигурацию Точки Вызова HTTP.
Имя: Уникальное имя для точки вызова.
Шаблон URI: Шаблон URL точки вызова, в котором переменные шаблона помещены в фигурные скобки с префиксом 'uri.var'. Пример: http://localhost/{uri.var.pageId}/{uri.var.docId}.
Оставить Как Есть: Используется входящий метод HTTP.
GET: HTTP GET Метод.
POST: HTTP POST Метод.
PUT: HTTP PUT Метод.
DELETE: HTTP DELETE Метод.
HEAD: HTTP HEAD Метод.
OPTIONS: HTTP OPTIONS Метод.
PATCH: HTTP PATCH Метод.
Примечание: остальные поля являются общими для точек вызова типа URL, HTTP, По умолчанию и WSDL.
В списке Добавить точку вызова щёлкните Точка вызова WSDL. Появится страница Точка Вызова WSDL.
Рис. 30. Настройка Точки вызова WSDL
Введите необходимые данные в поля. Следующие поля определяют конфигурацию Точки Вызова WSDL
Имя: Уникальное имя для точки вызова.
WSDL URI: URI WSDL.
Сервис: Сервис, выбранный из списка доступных сервисов для данного WSDL.
Порт: Порт, выбранный для службы, указанной в поле выше. В WSDL точка вызова привязана к каждому порту внутри каждого сервиса.
Примечание: остальные поля являются общими для точек вызова типа URL, HTTP, По умолчанию и WSDL.
В списке Добавить точку вызова щёлкните Отказоустойчивая группа.
В поле Название точки вызова введите наименование точки вызова.
Щёлкните Добавить дочерний элемент к Корню. Появится меню с доступными точками вызова, которые можно добавить в группу.
Рис. 31. Добавление отказоустойчивой группы
Щёлкните по точке вызова, которую вы хотите добавить в отказоустойчивую группу. Появится вкладка с полями, относящимися к выбранной точке вызова.
Введите данные и щёлкните Сохранить и Закрыть. На следующем снимке экрана показано добавление Адресной точки вызова в список отказоустойчивых точек вызова.
Рис. 32. Настройка отказоустойчивой группы
Вы можете взаимозаменяемо добавлять любое количество уровней отказоустойчивых точек вызова и точек балансировки нагрузки.
В списке Добавить точку вызова щёлкните Точка вызова баланса нагрузки. Появится страница Точка Вызова Группа Балансировки Нагрузки.
Введите необходимые данные в поля. Следующие поля определяют конфигурацию Точки Вызова Группа Балансировки Нагрузки.
Имя Точки Вызова: Уникальное имя для точки вызова.
Управление Сеансом: Метод управления сеансом из группы балансировки нагрузки. Возможные значения.
Нет: Управление сеансом не используется.
Транспорт: Управление сеансом осуществляется на транспортном уровне с использованием файлов cookie HTTP.
SOAP: Управление сеансом осуществляется с помощью сеансов SOAP.
Идентификатор клиента: Управление сеансом осуществляется с использованием идентификатора, отправленного клиентом.
Время ожидания сеанса (мс): время ожидания сеанса в миллисекундах.
Рис. 33. Группа балансировки нагрузки
Щёлкните Добавить дочерний элемент к Корню. Появится меню с доступными точками вызова.
Щёлкните по точке вызова, которую вы хотите добавить в группу балансировки нагрузки. Появится вкладка с полями, относящимися к выбранной точке вызова.
Введите данные и щёлкните Сохранить и Закрыть. Вы можете добавить в группу балансировки нагрузки столько точек вызова, сколько вам нужно.
В списке Добавить Точку Вызова щёлкните Шаблонная Точка Вызова. Появится страница Шаблонной Точки Вызова в своём виде по умолчанию.
Рис. 34. Точка вызова по шаблону
Введите необходимые данные в поля. Следующие поля определяют конфигурацию точки вызова по шаблону.
Имя: Уникальное имя для шаблонной точки вызова.
Адрес: URL точки вызова шаблона. Если часть точки вызова целевого шаблона имеет элемент адреса с объявленным в нем $uri, то он будет заполнен значением, указанным в этом поле адреса. Как всегда, вы можете проверить доступность данного URL на лету, просто щелкнув Тестовый Адрес.
Целевой Шаблон: Целевой шаблон для данной точки вызова.
Если вы хотите добавить параметры в шаблон Точки Вызова, щёлкните кнопку Добавить параметр. После этого появится страница с таблицей параметров. Вы можете добавлять и удалять пары имя/значение параметра.
Рис. 35. Добавление параметров точки вызова по шаблону
В списке Добавить Точку Вызова щёлкните Точка вызова списка получателей.
В поле Название точки вызова, введите имя точки вызова.
Щёлкните Добавить Дочерний Элемент к Корню. Появится меню с доступными точками вызова.
Щёлкните по точке вызова, которую вы хотите добавить в список получателей. Появится вкладка с полями, относящимися к выбранной точке вызова.
Введите данные и щёлкните Сохранить и Закрыть.
Рис. 36. Настройка списка получателей
Чтобы сохранить точку вызова как динамическую точку вызова, щёлкните Сохранить в реестре, после чего отобразится пользовательский интерфейс сохранения динамической точки вызова.
Выберите Реестр управления или Реестр конфигурации.
Предоставьте ключ для динамической точки вызова. Этот ключ будет использоваться как путь к ресурсу, который будет добавлен в Реестр.
Рис. 37. Добавление динамической точки вызова
Сохраненная динамическая точка вызова будет отображаться следующим образом
Рис. 38. Сохраненная динамическая точка вызова
Таблица 17. Параметры, общие для разных типов точек вызова
Параметр/Группа параметров |
Назначение |
Состояние приостановки точки вызова |
Относятся к ситуации возникновения ошибок при вызове сервиса через endpoint |
Коды ошибок приостановки |
Если во время вызова сервиса через точку вызова возникнет одна из указанных ошибок, то выполнение будет приостановлено (suspended endpoint) |
Начальная длительность приостановки выполнения |
Период времени (в миллисекундах), на который будет приостановлено выполнение точки вызова в случае возникновения ошибок |
Максимальная длительность приостановки выполнения |
Максимальный период времени (в миллисекундах), на который будет приостановлено выполнение точки вызова в случае возникновения ошибок |
Фактор (коэффициент) приостановки |
Если по истечении периода приостановки повторный вызов сервиса через точку вызова также приводит к ошибкам, то при вычислении следующего периода приостановки используется данный коэффициент |
Состояние тайм-аута точки вызова |
Относятся к ситуации, когда при вызове сервиса через endpoint возникает тайм-аут |
Коды ошибок тайм-аута |
Если во время вызова сервиса через endpoint возникнет одна из указанных ошибок, то ситуация интерпретируется как тайм-аут |
Количество попыток повторного вызова |
Количество попыток повторного вызова endpoint в случае возникновения тайм-аута (т. е. возникновения ошибок из предыдущего списка) |
Период задержки при повторном вызове |
Период времени (в миллисекундах) между двумя повторными вызовами endpoint в случае тайм-аута |
Длительность тайм-аута |
Период времени (в миллисекундах). Если в течение данного периода не получен ответ после вызова сервиса через endpoint (даже если не возникло ошибок), то ситуация интерпретируется как тайм-аут |
Обработка возникновения тайм-аута |
Действие, которое должна выполнять Polus ESB при получении ответа от точки вызова, находящей в статусе timeout:
|
QoS (Quality of Service) |
Параметры, относящиеся к дополнительным спецификациям Web Services |
WS-Addressing |
Включение информации о маршрутизации в SOAP-заголовки |
WS-Security |
Добавляет данные, относящиеся к спецификации WS-Security (проверка целостности, шифрование, аутентификация). При этом соответствующая политика безопасности указывается как элемент реестра |
WS-Reliable Messaging |
Добавляет данные, относящиеся к спецификации WS-ReliableMessaging (гарантированная доставка сообщений в распределенной среде). При этом соответствующая настройка указывается как элемент реестра |
Используйте страницу Последовательности медиации, чтобы добавлять новые или редактировать существующие последовательности. Как показано на рис.38, в разделе управления последовательностями отображается список существующих последовательностей. Вкладка «Определенные последовательности» показывает последовательности, сохраненные в конфигурации Polus ESB. Вкладка «Динамические последовательности» показывает последовательности, сохраненные в реестре.
Рис. 39. Управление последовательностью медиации
В навигаторе в разделе «Управление/служебная шина» щелкните «Последовательности». Появится страница «Последовательности медиации».
Включить статистику
Нажмите «Включить статистику», чтобы собрать информацию, относящуюся к определенной последовательности.
Включить трассировку
Нажмите «Включить трассировку», чтобы включить все сообщения трассировки для соответствующей последовательности.
Вышеупомянутые параметры отключены по умолчанию, поскольку они вызывают серьезное снижение производительности. Используйте эти параметры только в ситуации, когда вам нужно отладить конкретную проблему. Динамические последовательности не поддерживают «Включить статистику» и «Включить трассировку».
Редактировать
Нажмите «Изменить», чтобы открыть последовательность в проектном представлении для редактирования.
Удалить
Щелкните «Удалить», чтобы удалить определенную последовательность из системы.
На странице «Последовательности медиации» нажмите «Добавить последовательность». Появится страница «Проектирование последовательности».
Введите название последовательности.
Щелкните «Добавить дочернюю» и выберите необходимые узлы для вашей последовательности. Каждый вариант описан в разделе «Описания полей».
Рис. 40. Добавление последовательности - режим конструктора
На странице последовательности проектирования нажмите кнопку «Сохранить в реестре» - отобразится блок «Сохранение в реестре Synapse».
Выберите сохранить в «Реестр конфигурации» или «Реестр».
Укажите ключ динамического ресурса. Этот ключ будет действовать как путь, по которому ресурс будет добавлен в реестр.
Рис. 41. Добавление динамической последовательности
Сохраненная динамическая последовательность будет отображаться следующим образом
Рис. 42. Сохраненная динамическая последовательность
На странице «Последовательности медиации» нажмите «Изменить». Появится страница «Изменить последовательность», отображающая выбранную последовательность.
Рис. 43. Редактирование последовательности
Щелкните узел, который хотите изменить. Свойства этого узла будут показаны ниже.
Рис. 44. Редактирование свойств узла
Вы можете редактировать определенные атрибуты узла, отображаемые в проектном представлении.
Вы можете добавить родственный узел в проектном представлении.
К некоторым узлам можно добавить только одноуровневые узлы, а к другим можно также добавить дочерний узел.
Вы можете перемещать выбранный узел вверх или вниз с помощью значков со стрелками.
Вы также можете удалить узел.
Нажмите «Переключиться в режим источника», чтобы просмотреть XML конкретной последовательности. Если вы знакомы с языком конфигурации Synapse, вы можете редактировать XML напрямую.
Рис. 45. Исходный код последовательности
Таблица 18. Каталог встроенных медиаторов
Сервисы данных PolusESB — это удобный механизм для предоставления интерфейса веб-сервиса для данных, хранящихся в некоторых источниках. Источники данных, такие как реляционные базы данных, CSV-файлы, файлы Microsoft Excel и электронные таблицы Google, можно легко активировать с помощью Data Services Server. Теперь данные могут быть представлены и доступны безопасным (с помощью WS-Security) и надежным (с помощью WS-ReliableMessaging) способом, а также доступны для объединения с другими веб-сервисами.
Рис. 46. Домашняя страница сервисов данных PolusESB
В этом руководстве предполагается, что PostgreSQL настроен в вашей системе. Если нет, загрузите PostgreSQL 14 или более позднюю версию отсюда.
Инструкция по установке находится здесь.
Давайте создадим простую базу данных с одной таблицей. Откройте командную строку и введите «psql -Upostgres», чтобы получить доступ к командной строке PosgreSQL. Введите следующие команды, чтобы создать образец базы данных, создать таблицу и заполнить образцы данных.
postgres=# CREATE DATABASE employeedb;
postgres=# \c employeedb;
employeedb=# create table employee(id VARCHAR(10) NOT NULL PRIMARY KEY, name VARCHAR(100), address VARCHAR(100));
employeedb=# insert into employee values('01','john','Boston');
employeedb=# insert into employee values('02','Micheal','Dallas');
employeedb=# insert into employee values('03','richard','Chicago');
employeedb=# exit
Поскольку мы используем базу данных PostgreSQL для нашей демонстрации, мы должны скопировать драйвер PostgreSQL JDBC в каталог polusesb-X.X.X\lib
После копирования необходимого драйвера jdbc обязательно перезапустите Сервер сервисов данных PolusESB.
Мы готовы создать наш первый сервис данных с использованием Сервера сервисов данных PolusESB. Мы будем использовать пример базы данных PostgreSQL «employeedb», которую мы создали на предыдущем шаге.
Выберите «Создать» в левом навигационном меню консоли управления Сервера сервисов данных PolusESB. Отобразится Шаг-1 сервиса данных.
Укажите название сервиса данных (например - EmployeeDataService) и при желании можете дать описание.
Нажмите «Далее», как только вы введете данные.
Рис. 47. Страница создания сервиса данных PolusESB
Теперь мы можем ввести данные источника данных на этом шаге. Начнем с того, что дадим источнику данных идентификатор «DataSourceEmp».
Выберите тип источника данных как «RDBMS» и введите следующие значения.
Ядро базы данных = PostgreSQL
Класс драйвера = org.postgresql.Driver
JDBC URL = jdbc:postgresql://{host}[:port]/[database]
Имя пользователя = postgres
Нажмите кнопку «Тестовое соединение». Вы должны получить сообщение «Соединение с базой данных успешно выполнено с классом драйвера org.postgresql.Driver, jdbc url jdbc:postgresql://localhost:5432/employeedb и именем пользователя postgres», если соединение с базой данных успешно.
Рис. 48. Создание источника данных
Нажмите кнопку «Сохранить». Вы увидите созданный источник данных в следующем виде.
Рис. 49. Список созданных источников данных
Затем нажмите кнопку «Далее» в источниках данных. Изначально ваш сервис не включает никаких запросов.
Нажмите «Добавить новый запрос», чтобы добавить новый запрос в наш сервис. Появится окно «Добавить новый запрос». Введите туда следующие значения.
Идентификатор запроса = DataQueryEmp
SQL = select id, name, address from employee
Сгруппировано по элементам = employees
Имя строки = employee
Пространство имен строк = http://test.org
Теперь нажмите кнопку «Добавление нового отображения вывода» в окне «Добавить новый запрос». Появится окно «Добавить отображение выходных данных».
Добавьте три выходных сопоставления следующим образом:
Тип сопоставления = element
Имя выходного поля = id
Имя столбца источника данных = id
Тип схемы = string
Тип сопоставления = element
Имя выходного поля = name
Имя столбца источника данных = name
Тип схемы = string
Тип сопоставления = attribute
Имя выходного поля = address
Имя столбца источника данных = address
Тип схемы = string
Мы добавили один запрос в нашу конфигурацию сервиса данных. В этом примере мы не используем оператор SQL, который принимает входные параметры. Поэтому мы можем игнорировать «Входные сопоставления».
Рис. 50. Добавить новый запрос
Сохраните запрос и нажмите кнопку «Далее» на странице «Запросы». Вы будете перенаправлены на страницу «Операции», где сможете добавить новые операции в конфигурацию сервиса данных.
Рис. 51. Добавление новых операций
Вы заметите, что запрос, который мы создали на предыдущем шаге, будет показан в раскрывающемся списке «Идентификатор запроса» окна «Добавить новую операцию». Укажите имя для операции (например: — getEmployees) и нажмите «Сохранить».
Нажмите «Завершить», чтобы развернуть сервис. Ваш новый сервис данных будет указан на странице «Развернутые сервисы» следующим образом (для обновления нажать на «[n] групп сервисов»).
Рис. 52.
Развернутые сервисы
В этом разделе мы рассмотрим два разных способа вызова нашего сервиса данных без написания кода. Сначала мы вызовем наш сервис данных с помощью утилиты Try-it, которая интегрирована в консоль управления сервера сервисов данных PolusESB. затем мы вызовем его с помощью простого HTTP-запроса GET.
Нажмите «EmployeeDataService» на странице «Развернутые сервисы». Вы будете перенаправлены на страницу «Панель управления сервисом» следующим образом.
Рис. 53. Управление сервисами
Выберите ссылку «Попробовать этот сервис». Отобразится следующая страница.
Рис. 54. Инструмент Try-it
Нажмите кнопку во вкладке getAllEmployees «Отправить», чтобы вызвать наш сервис данных. Вы получите ответное сообщение на той же странице. Обратите внимание, что идентификатор и имя сотрудника будут возвращены в виде элементов xml, а адрес будет заключен в виде атрибута. Это связано с нашей конфигурацией сопоставления выходных данных на шаге 2 мастера. Мы настроили идентификатор и имя в качестве типов сопоставления элементов и адрес в качестве типа сопоставления атрибутов. Вы можете редактировать их и очень легко наблюдать за соответствующими изменениями в ответе с помощью Try-it.
Теперь мы вызовем тот же сервис данных, используя наш второй подход, HTTP-запрос GET. Скопируйте и вставьте URL-адрес в адресную строку браузера и нажмите Enter.
http://[ipaddress]:8280/services/EmployeeDataService/getEmployees
Вы получите тот же результат, что и в подходе «Try-it».
Механизм сервисов данных Polus ESB предоставляет возможность их автоматического создания с использованием заданной структуры базы данных. При создании сервиса генератор сервисов данных будет учитывать структуру таблицы. В соответствии с заданной структурой таблицы операции "SELECT", "INSERT", "UPDATE" и "DELETE" будут созданы автоматически.
Шаг 1 — Создайте источник данных Carbon
Перед созданием сервисов данных следует создать источник данных Carbon в соответствии со свойствами базы данных.
Рис. 55. Создание источника данных Carbon
Шаг 2 — выберите источник данных
Чтобы начать генерацию сервисов данных, нажмите ссылку «Источник данных» в левом меню.
На первом появившемся экране выберите источник данных Carbon и имя базы данных, как показано ниже.
Рис. 56. Выбор источника данных
Шаг 3 - Выберите схему базы данных
После выбора источника данных необходимо выбрать схему БД, чтобы определить необходимые таблицы.
Рис. 57. Выбор схемы БД
Шаг 4 — Выберите таблицы
После выбора схемы структура таблицы будет отображаться в соответствии с заданной схемой. Выберите предпочтительные таблицы для создания сервиса данных.
Рис. 58. Выбор таблиц БД
Шаг 5 - Выберите режим генерации сервиса
После определения таблиц необходимо указать режим генерации сервиса. Существует два варианта создания сервиса данных. 1. как единый сервис - где все операции для каждой таблицы приведены в одном сервисе данных. 2. Несколько сервисов для каждой таблицы - где для данной таблицы будут указаны только операции, связанные с этой таблицей. В следующем примере создается один сервис для всех таблиц, как показано ниже.
Рис. 59. Выбор режима генерации сервисов
После выбора режима создания сервиса будут развернуты сервисы данных. Нажмите «Далее», чтобы просмотреть развернутые сервисы, и нажмите «Завершить».
Рис. 60. Сервисы созданы
Шаг 6. Сервис развернут
Теперь мы создали сервис данных. Вы можете перейти к списку развернутых сервисов, который находится в разделе «Управление/Сервисы/Список». Список созданных сервисов будет выглядеть следующим образом. Если выбран режим нескольких сервисов, будет создано несколько сервисов в соответствии с выбранным количеством таблиц.
Рис. 61. Развернутые сервисы, включая сервис данных
Шаг
7. Попробуйте свой сервис — режим единого
сервиса
Нажмите ссылку «Попробовать», чтобы вызвать сервис. Как видно на рис.62, операции (выбрать, обновить, вставить и удалить) для всех таблиц встроены в один и тот же сервис данных.
Рис. 62. Режим одиночного сервиса
Шаг 8. Попробуйте свой сервис - Режим нескольких сервисов
Если выбран режим нескольких сервисов, для каждой таблицы будут созданы разные сервисы данных.
Рис. 63. Режим нескольких сервисов
Вы можете изменить развернутый сервис, щелкнув на имени сервиса в списке развернутых сервисов. Он предоставляет два варианта редактирования сервиса: «Редактировать сервис с помощью мастера» и «Редактировать XML».
Рис. 64. Редактирование сервиса данных
Вариант 1. Редактировать сервис данных с помощью мастера.
Если вы выберете опцию «Редактировать сервис данных (мастер)», вы будете перенаправлены к мастеру сервиса данных. Там вы можете отредактировать необходимую информацию и продолжить, нажав «Далее». Наконец, нажав «Завершить», можно сохранить изменения. Это будет аналогичный мастер, используемый при создании сервиса.
Рис. 65. Служба редактирования сервиса данных
После
нажатия «Далее», на рисунке выше, вы
можете редактировать источник данных,
нажав ссылку «Редактировать источник
данных».
Рис. 66. Редактировать источник данных
Измените
необходимые значения на странице мастера
«Редактировать источник данных» и
нажмите «Сохранить».
Рис. 67. Сохранение изменений параметров источника данных
Теперь вы окажетесь на странице «Источники данных». Нажмите «Далее», чтобы изменить запросы. Нажмите ссылку «Редактировать запрос», измените необходимую информацию и нажмите «Сохранить».
Рис. 68. Редактирование запроса
Нажав
«Далее» на странице «Запросы», вы
перейдете на страницу «Операции».
Щелкните ссылку «Редактировать операцию»,
измените необходимую информацию и
нажмите «Сохранить».
Рис. 69. Редактирование операции
Вариант
2. Редактирование сервиса данных с
помощью редактора XML
Если вы выберете параметр «Редактировать сервис данных (редактировать XML)», вы будете перенаправлены в XML-редактор сервиса данных. Если вы знакомы с языком конфигурации сервиса данных, вы можете напрямую редактировать необходимые конфигурации с помощью этого редактора. Элемент «config» определяет конфигурацию источника данных. Элемент данных описывает сервис данных или ресурс. Элемент «query» определяет запрос, а элемент «operation» определяет операцию. У нас может быть любое количество элементов конфигурации, запросов и операций. Далее мы можем определить элемент «ресурс», чтобы предоставлять данные как ресурсы RESTful.
Рис. 70. Редактирование сервиса данных с помощью редактора XML
Вы можете легко загрузить созданный сервис данных, щелкнув ссылку «Загрузить» в левом меню «Управление/Сервисы/Добавить/Сервис данных». После того, как вы нажмете на ссылку, появится следующая страница.
Рис. 71. Мастер загрузки сервиса данных
Шаг 2
Выберите файл сервиса данных (.dbs), который вы предпочитаете загрузить.
Рис. 72.
Выбор файла сервиса данных для загрузки
Шаг 3
После
выбора файла сервиса данных он будет
отображаться следующим образом.
Рис. 73. Выбранный файл сервиса данных
Шаг 4
Выбранный сервис данных будет развернут и указан в списке развернутых сервисов, как показано ниже.
Рис. 74. Развернутый сервис данных
Выберите сервисы, которые вы хотите удалить, из списка сервисов и щелкните ссылку удаления, расположенную над таблицей «Группы сервисов», чтобы удалить сервисы. Если сервис был развернут как неисправный сервис, он будет отображаться на странице «Развернутые сервисы» как «[n] неисправных сервисов:». Как и для развернутых сервисов, вы можете выбрать соответствующие неисправные сервисы, отметив их галочкой и нажав «Удалить».
Рис. 75.
Удаление сервиса
Приложение — это набор артефактов, которые можно развернуть на экземпляре Polus ESB, чтобы легко перенести решение на основе веб-сервисов из одной среды в другую.
При разработке решений с использованием платформы Polus ESB в ней может использоваться множество типов артефактов. Например, сервисы Axis2, артефакты Synapse (точки вызова, прокси-сервисы, медиаторы и т.д.), ресурсы реестра, сервисы данных и т.д. Обычно эти артефакты разрабатываются в среде разработки, а затем один за другим перемещаются в промежуточную и производственную среды. При каждой настройке вы должны вручную настраивать эти артефакты, чтобы создавать все решения целиком. Если ваше решение содержит много артефактов, этот процесс может занять много времени и усилий.
Таким образом, концепция приложения пытается решить эту проблему, предоставляя возможность экспортировать все ваше решение как единый артефакт приложения, и просто развернуть его. Инструментальную среду разработки веб-сервисов можно использовать для разработки ваших отдельных артефактов и экспорта их как единого артефакта carbon-приложения. Затем вы можете развернуть его на любом сервере, который имеет возможности развертывания приложений.
Настройка роли сервера
Во время разработки приложения вы должны указать роль сервера для каждого артефакта в приложении. Это связано с тем, что во время разработки мы не знаем, на каком физическом сервере будет развернут тот или иной артефакт. Таким образом, роль логического сервера назначается каждому артефакту.
Пример: Если вы разрабатываете сервис Axis2 и собираетесь развернуть все свои сервисы в одном экземпляре AppServer в рабочей установке, вы можете установить роль сервера как "appserver1".
Во время развертывания приложения вы должны установить роли сервера для каждого экземпляра Carbon в вашей настройке. Вы можете установить одну или несколько ролей, которые могут выполняться текущим экземпляром Carbon. Имя продукта задается как значение по умолчанию для роли сервера каждого продукта. Для установки роли сервера можно использовать следующие три метода.
Использование пользовательского интерфейса диспетчера ролей сервера
Это самый простой способ установить роль сервера для вашего экземпляра Carbon. Перейдите в «Настройки» > «Серверные роли», и вы сможете просто добавлять/удалять роли сервера. Подробнее об этом читайте на странице «Помощь». Это наиболее рекомендуемый способ настройки ролей сервера.
Использование POLUSESB_HOME/conf/carbon.xml
В файле carbon.xml вы можете найти следующий элемент.
<ServerRoles>
<Role>ApplicationServer</Role>
</ServerRoles>
Здесь вы можете установить несколько элементов Role, чтобы указать роли, исполняемые текущим сервером.
Пример: Если вы хотите, чтобы этот сервер действовал как серверы appserver1 и dataservices1, конфигурация будет следующей. Перед настройкой необходимо убедиться, что текущий сервер поддерживает развертывание сервисов Axis2 и сервисов данных.
<ServerRoles>
<Role>appserver1</Role>
<Role>dataservices1</Role>
</ServerRoles>
Таким образом, когда вы развертываете артефакт carbon-приложения на этом сервере, все артефакты, имеющие две вышеуказанные роли сервера, будут развернуты на текущем экземпляре. Другие будут игнорироваться.
Использование системного свойства
Вы можете использовать системное свойство «serverRoles», чтобы указать роли сервера, которые могут выполняться текущим экземпляром Carbon. Поэтому, когда вы запускаете сервер, передайте роли сервера в виде списка, разделенного запятыми, как показано ниже.
Пример: sh integrator.sh -DserverRoles=appserver1,dataservices1
Примечание. После использования пользовательского интерфейса ролей сервера для настройки ролей сервера вы не сможете изменить эту конфигурацию двумя другими способами. Это связано с тем, что при использовании пользовательского интерфейса роли сервера будут храниться в реестре, и после этого значения в реестре будут иметь приоритет над значениями, установленными с помощью двух других методов.
Развертывание приложения
Вы
можете загрузить приложение (файл .car)
в работающий экземпляр Carbon
с помощью консоли управления. Перейдите
в «Управление»> «Приложения»>
«Добавить», и вы будете перенаправлены
на следующую страницу.
Рис. 76. Загрузка приложения
Здесь
вы можете выбрать свой файл .car,
просматривая файловую систему. После
того, как вы загрузите файл .car,
вы сможете увидеть журнал на своей
консоли о статусе вашего приложения.
Если развертывание приложения прошло
успешно, перейдите в раздел «Управление»
-> «Приложения»
-> «Список».
Вы сможете увидеть развернутое
carbon-приложение
на этой странице следующим образом.
Рис. 77. Список развернутых приложений
Если
вы нажмете на имя своего приложения, вы
будете перенаправлены на страницу
панели мониторинга приложения, которая
содержит всю информацию о содержимом
развернутого приложения. В нем отдельно
перечислены все артефакты, и вы можете
перейти к информационным страницам
этих артефактов, нажав на эти ссылки.
Страница панели инструментов приложения
показана на следующем изображении.
Рис. 78. Список артефактов приложения
Примечание. В качестве альтернативы загрузке приложения с помощью консоли управления вы можете вручную скопировать архив .car в папку CARBON_HOME/repository/deployment/server/carbonapps, и он будет развернут в горячем режиме.
Удаление приложения
Не рекомендуется удалять отдельные артефакты приложения. Всё приложение должно быть удалено. Перейдите в «Управление» -> «Приложения» -> «Список» и нажмите значок «Удалить» перед приложением, которое нужно удалить.
Примечание. В качестве альтернативы удалению carbon-приложения с помощью консоли управления вы можете вручную удалить свой архив .car из папки CARBON_HOME/repository/deployment/server/carbonapps, и он не будет развернут.
В этой документации объясняется, как вы можете добавлять пользователей и управлять ими из консоли управления.
Чтобы пользователи могли входить в консоль управления, вы создаете учетные записи пользователей и назначаете им роли, которые представляют собой наборы разрешений. Вы можете добавлять отдельных пользователей или импортировать пользователей массово.
Добавьте свойство GetRoleListOfInternalUserSQL в раздел <Realm> файла /conf/user-mgt.xml, как показано ниже, чтобы избежать проблем с учетом регистра при создании пользователей.
<Realm>
<Configuration>
<Property name="GetRoleListOfInternalUserSQL">
SELECT UM_ROLE_NAME
FROM UM_HYBRID_USER_ROLE, UM_HYBRID_ROLE
WHERE UPPER(UM_USER_NAME)=UPPER ( ? )
AND UM_HYBRID_USER_ROLE.UM_ROLE_ID=UM_HYBRID_ROLE.UM_ID AND UM_HYBRID_USER_ROLE.UM_TENANT_ID=?
AND UM_HYBRID_ROLE.UM_TENANT_ID=?
AND UM_HYBRID_USER_ROLE.UM_DOMAIN_ID =
(SELECT UM_DOMAIN_ID
FROM UM_DOMAIN
WHERE UM_TENANT_ID=? AND UM_DOMAIN_NAME=?)
</Property>
</Configuration>
</Realm>
Следуйте приведенным ниже инструкциям, чтобы добавить новую учетную запись пользователя и настроить ее роль.
На вкладке «Настройки» консоли управления нажмите «Добавить» в разделе «Пользователи и роли» щелкните «Добавить нового пользователя». Откроется следующий экран:
Рис. 79. Добавление пользователя
Сделайте следующее:
В списке Домен укажите хранилище пользователей, в котором вы хотите создать эту учетную запись пользователя. Этот список включает первичное хранилище пользователей и любые другие вторичные хранилища пользователей.
Введите уникальное имя пользователя и пароль, которые человек будет использовать для входа в систему. По умолчанию пароль должен состоять не менее чем из пяти символов и должен содержать как минимум один символ с заглавной буквой, символы, цифры и специальные символы.
Нажмите «Следующий». При необходимости выберите роли, которые должны быть у этого пользователя. Если в вашей системе много ролей, вы можете искать их по имени.
Нажмите «Завершить».
Создается новая учетная запись пользователя с указанными ролями, и она отображается на странице «Пользователи».
Помимо создания пользователей вручную, информацию о пользователях, хранящуюся в файле CSV или Excel, можно массово импортировать в хранилище пользователей. Эта возможность доступна только в том случае, если для вашего профиля системы настроено хранилище пользователей JDBC.
Прежде чем использовать эту функцию, обратите внимание на следующее:
Параметр массового импорта пользователей включен в вашем профиле системы по умолчанию. Если нет, вы можете включить его, добавив следующее свойство в хранилище пользователей JDBC, настроенное в файле user-mgt.xml (хранящемся в каталоге /conf).
<Property name="IsBulkImportSupported">true</Property>
Рекомендуется загружать не более 500 000 пользователей одновременно. Если вам нужно загрузить больше пользователей, вы можете загрузить их отдельными пакетами по 500 000 человек.
Вы также можете указать размер файла, который вы можете загрузить, в файле /conf/carbon.xml с помощью элемента TotalFileSizeLimit, как показано ниже. Это значение указано в МБ.
<TotalFileSizeLimit>100</TotalFileSizeLimit>
Создание файла с пользователями
Сначала необходимо создать файл CSV или файл Excel с информацией о пользователе. Можно импортировать имя пользователя и пароль непосредственно из CSV/Excel в профиль системы. Вы также можете назначить каждому пользователю несколько ролей. Вот пример CSV-файла:
UserName,password,role
user1,password123,role=admin:developer
user2,password123,role=admin:tester
user3,password123,role=admin:developer:tester
user4,password123,role=devops
user5,password123,role=devops:tester
Убедитесь, что у вас есть роли, которые вы назначаете пользователям, доступным в системе. В противном случае сервер выдаст ошибку.
Помимо импорта пользователей с их паролями и ролями, вы можете импортировать другие атрибуты пользователей, такие как адрес электронной почты, полное имя, фамилия, мобильный телефон, имя и т. д., используя требуемые URL-адреса, определенные для атрибутов. Вот пример требуемых URL-адресов, которые вы можете определить для своего профиля системы:
http://wso2.org/claims/givenname
http://wso2.org/claims/lastname
http://wso2.org/claims/mobile
http://wso2.org/claims/role
Чтобы импортировать пользователей с именем пользователя, паролем, ролями и другими атрибутами (в виде требуемых URL-адресов), создайте файл CSV, как показано в примере ниже:
user1, password123,http://wso2.org/claims/givenname=myname1,http://wso2.org/claims/lastname=mylastname1,http://wso2.org/claims/mobile=077777777,http://wso2.org/claims/role=admin:developer
user2, password123,http://wso2.org/claims/givenname= myname2,http://wso2.org/claims/lastname=mylastname2,http://wso2.org/claims/mobile=077777777,http://wso2.org/claims/role=admin:devops
user3, password123,http://wso2.org/claims/givenname= myname3,http://wso2.org/claims/lastname=mylastname3,http://wso2.org/claims/mobile=077777777,http://wso2.org/claims/role=developer:devops
Импорт пользователей из файла CSV/Excel
Чтобы импортировать пользователей массово:
Войдите в консоль управления.
В меню «Настройки» в разделе «Пользователи и роли» нажмите «Добавить».
Рис. 80. Добавление пользователей и ролей
Щелкните «Пользователи массового импорта».
Рис. 81. Пользователи массового импорта
Пользовательские хранилища, будут перечислены в поле Домен. Выберите хранилище пользователей, в которое вы хотите импортировать пользователей из списка, загрузите таблицу CSV или Excel и нажмите «Завершить».
Рис. 82. Массовый импорт — параметры
Пароль по умолчанию для импортированных пользователей действителен только в течение 24 часов. Как системный администратор, вы можете решить проблемы с просроченными паролями, войдя в систему как администратор и изменив пароль пользователя, на странице «Пользователи» в меню «Настройки» -> «Пользователи и роли» -> «Пользователи» -> «Изменить пароль». По умолчанию пользователям будет назначена роль "Internal/everyone".
Настройка ролей и разрешений пользователя
Каждая роль определяет набор разрешений, которые пользователь будет иметь при назначении этой роли. После создания пользователя вы можете назначать и удалять роли для этого пользователя, щелкнув «Назначайте роли» в столбце «Действия». Чтобы увидеть, каким пользователям уже назначена роль, щелкните «Просмотр пользователей» рядом с ролью.
Вы также можете настроить, какие разрешения применяются к этому пользователю, щелкнув «Просмотр ролей» в столбце «Действия» на экране «Пользователи», а затем выбрав «Разрешения» для каждой роли, которые должны быть у этого пользователя.
Настройка профиля пользователя
У каждого отдельного пользователя есть профиль, который можно обновлять, добавляя различные сведения. Для этого нажмите «Профиль пользователя» на экране «Пользователи». Внесите необходимые изменения и нажмите «Обновление». Вы также можете добавить несколько профилей для пользователя.
Примечание. Вы можете добавлять новые профили, только если вы подключены к хранилищу пользователей JDBC. Вы также должны иметь права администратора.
Чтобы добавить новые профили, выполните следующие действия.
На вкладке «Настройки» в консоли управления нажмите «Список» в разделе «Пользователи и роли».
Щелкните «Пользователи». Эта ссылка видна только пользователям с ролью администратора.
Щелкните ссылку «Профиль пользователя».
Вы можете добавить несколько профилей с помощью ссылки «Добавить новый профиль» и создать любое количество профилей для своего пользователя, если пользователь находится в пользовательском хранилище JDBC.
Удаление существующего пользователя
Следуйте приведенным ниже инструкциям, чтобы удалить пользователя.
Удаление пользователя нельзя отменить.
На вкладке «Настройки» в консоли управления нажмите «Список» в разделе «Пользователи и роли».
Щелкните «Пользователи». Эта ссылка видна только пользователям с разрешениями на уровне управления пользователями.
В списке пользователей щелкните «Удалить» рядом с пользователем, которого хотите удалить, а затем щелкните «Да», чтобы подтвердить операцию.
После удаления пользователя вы можете удалить все ссылки на личность удаленного пользователя с помощью инструмента анонимизации личных данных.
Данный раздел описывает, как добавлять роли пользователей и управлять ими из консоли управления. Роли содержат разрешения для пользователей на управление сервером. Вы можете создавать разные роли с различными сочетаниями разрешений и назначать их пользователю или группе пользователей. Через консоль управления вы также можете редактировать и удалять существующие роли пользователей.
Polus ESB поддерживает модель аутентификации на основе ролей, в которой привилегии пользователя основаны на выданной ему роли. По умолчанию поддерживаются следующие роли:
Администратор — Предоставляет полный доступ ко всем функциям и элементам управления. По умолчанию пользователю с правами администратора назначаются роли Администратора и Все.
Все — Каждый новый пользователь назначается этой роли по умолчанию. По умолчанию она не содержит никаких разрешений.
Система — Эта роль не отображается в консоли управления.
Если пользователю назначено несколько ролей, их разрешения складываются.
Следуйте приведенным ниже инструкциям, чтобы добавить роль пользователя.
На вкладке Главное в консоли управления щёлкните Добавить в разделе Пользователи и Роли.
Щелкните Роли. Эта ссылка видна только пользователям с ролью привилегий уровня Безопасности. По умолчанию это разрешение включено для пользователя-администратора. Дополнительные сведения о разрешениях смотрите в разделе Разрешения на основе Ролей.
Щелкните Добавить Новую Роль. Появится следующий экран:
Рис. 83. Добавление новой роли
Выполните следующее:
В списке Домен укажите хранилище пользователей, в котором вы хотите создать эту роль. Этот список включает первичное хранилище пользователей и любые другие вторичные хранилища пользователей. Информацию о том, какие хранилища пользователей (то есть репозитории, в которых хранится информация о пользователях и ролях) установлены и настроены, смотрите в разделе Настройка Хранилищ Пользователей.
Введите уникальное имя для этой роли.
Щёлкните Далее.
Выберите разрешения,
которые должны быть у пользователей с
этой ролью.
Обратите внимание, что
когда вы назначаете выбранную роль
пользователю, вы можете переопределить
разрешения ролей и настроить их для
пользователя.
Выберите существующих пользователей, которым должна быть назначена эта роль. Вы также можете назначить эту роль пользователям позже, но если вы создаете эту роль во внешнем хранилище пользователей, которое не допускает пустых ролей, вы должны назначить ее хотя бы одному пользователю. Вы можете найти пользователя по имени или просмотреть всех пользователей, введя * в поле поиска.
Щёлкните Готово.
Роль создана и указана на странице Роли. Теперь вы можете редактировать роль по мере необходимости.
Если вам нужно внести изменения в роль, выберите домен (хранилище пользователей), в котором находится роль, а затем используйте соответствующие ссылки в столбце Действия на экране Роли:
Переименовать роль;
Изменить разрешения по умолчанию, связанные с этой ролью;
Назначить выбранную роль пользователям;
Просмотреть пользователей, которым назначена эта роль;
Удалить роль, если она больше не нужна.
Если роль находится во внешнем хранилище пользователей, к которому вы подключены в режиме только для чтения, вы сможете просматривать существующие роли, но не можете редактировать или удалять их. Однако вы по-прежнему можете создавать новые редактируемые роли.
Если вам нужно внести изменения в имена ролей, вам необходимо выполнить одно из следующих действий:
Имена ролей по умолчанию (администратор и все) можно изменить перед запуском системы, отредактировав файл /conf/user-mgt.xml.
<Configuration> <AdminRole>admin</AdminRole> <AdminUser> <UserName>admin</UserName> <Password>admin</Password> </AdminUser> <EveryOneRoleName>everyone</EveryOneRoleName> <!-- By default users in this role sees the registry root --> <Property name="dataSource">jdbc/WSO2CarbonDB</Property> <Property name="MultiTenantRealmConfigBuilder"> org.wso2.carbon.user.core.config.multitenancy.SimpleRealmConfigBuilder </Property> </Configuration>
Ниже приведены изменения, которые необходимо внести в вышеуказанные конфигурации:
Замените
<AdminRole>admin</AdminRole>
на <AdminRole>администратор</AdminRole>
.
Замените
<EveryOneRoleName>everyone</EveryOneRoleName>
на <EveryOneRoleName>Ваша
роль</EveryOneRoleName>
.
Вам не обязательно делать это при обновлении перед первым запуском. Следующие шаги помогут вам обновить имена ролей:
Внесите изменения в конфигурацию, указанные в предыдущем разделе.
Вам необходимо внести следующие изменения на уровне хранилища пользователей для существующих пользователей, если вы изменили имена ролей, как упоминалось ранее.
Если вы подключены к JDBCUserStoreManager, вам необходимо обновить таблицу UM_USER_ROLE с существующими пользователями после изменения имен ролей администратора и всех. Кроме того, если вы изменили разрешение для роли все, UM_ROLE_PERMISSION необходимо обновить разрешениями для новой роли.
Схему можно найти, обратившись к источнику данных, указанному в файле user-mgt.xml. Определение источника данных можно найти в /conf/datasources/master-datasources.xml.
Если вы подключены к ReadWriteLdapUserStoreManager, вам необходимо заполнить членов предыдущей роли администратора новой ролью в Группах. Дополнительные сведения смотрите в разделе Настройка Пользовательских Хранилищ.
После внесения изменений перезапустите сервер.
Задача — это специально разработанный класс Java, который реализует интерфейс org.apache.synapse.startup.Task. Этот интерфейс определяет единственный метод с именем execute. Задачи могут быть запланированы для периодического выполнения на Polus ESB. При необходимости задачу можно настроить на запуск ограниченное количество раз.
Прежде чем задачу можно будет запланировать, ее необходимо скомпилировать и упаковать в файл jar. Затем этот файл jar следует поместить в каталог «repository/components/lib» Polus ESB. Затем необходимо перезапустить Polus ESB, чтобы jar, содержащий реализацию задачи, был подобран средой выполнения сервера. Пакет OSGi, содержащий реализацию задачи, будет создан автоматически и развернут на сервере.
Развернув реализацию задачи в среде выполнения Polus ESB, можно использовать консоль управления для планирования различных экземпляров задачи. Можно запланировать задачу, указав количество раз, которое она должна выполняться вместе с частотой, или вы можете использовать Cron-синтаксис.
Планирование задачи
В навигаторе в закладке «Главная» в разделе «Управление» -> «Служебная шина» щелкните «Запланированные задачи». Появится страница запланированных задач.
Рис. 84. Панель запланированных задач
Щелкните «Добавить задачу».
Введите необходимые данные и нажмите «Запланировать».
Рис.85. Панель настройки новой запланированной задачи
Таблица 19. Описание полей запланированной задачи
Имя поля |
Описание |
Название задачи |
Название запланированной задачи |
Группа задач |
Имя группы для группировки задач. Имя группы «synapse.simple.quartz» объединяет задачи, принадлежащие ESB — Synapse. Все доступные группы отображаются в виде выпадающего меню. Если есть задачи, принадлежащие другим доменам, то они будут показаны здесь как отдельные имена групп. |
Реализация задачи |
Класс реализации задачи. Существует реализация задачи по умолчанию, которая поставляется вместе с ESB. Это org.apache.synapse.startup.tasks.MessageInjector, который просто вводит указанное сообщение в среду Synapse. Образец ESB synapse_sample_300 демонстрирует это. |
Тип триггера |
Тип триггера для задачи. Это может быть «Простой» или «Cron». Простой триггер определяется путем указания «Количества запусков» и «Интервала», подразумевая, что задача будет выполняться «Количество запусков» раз с указанными интервалами. Триггер «Cron» определяется с помощью Cron-выражения. |
Количество запусков |
Сколько раз будет выполняться задание. |
Интервал |
Интервал между последовательными выполнениями задачи |
Закрепленные серверы |
Предоставьте список имен серверов ESB, на которых эта задача должна быть запущена для значения закрепленного сервера. |
Пример
В этом примере показано, как указать класс реализации задачи и указать свойства, необходимые для этой реализации задачи.
Класс реализации задачи, используемый в этом примере, называется «org.apache.synapse.startup.tasks.MessageInjector». Этот класс доступен в стандартном дистрибутиве Polus ESB и, следовательно, может использоваться сразу после установки без развертывания каких-либо сторонних библиотек или пользовательских jar-файлов. На рис. 86 показана страница в консоли управления после нажатия кнопки «Загрузить класс». Он показывает свойства экземпляра реализации задачи MessageInjector. (Дополнительную информацию см. в примере ESB synapse_sample_300)
Рис. 86. Пример настройки запланированной задачи
В Polus ESB предусмотрен механизм шаблонов последовательностей и шаблонов точек вызова. Как показано на рисунках 87 и 88, в разделе управления шаблонами отображается список существующих шаблонов. На вкладках шаблонов реестра отображаются шаблоны, сохраненные в реестре, на остальных - шаблоны, сохраненные в конфигурации Synapse.
Рис. 87. Управление шаблоном последовательности
Рис. 88. Управление шаблоном точки вызова
В навигаторе в разделе «Управление/Служебная шина» нажмите «Шаблоны». Появится страница «Шаблоны».
Нажмите «Включить статистику», чтобы собрать информацию, относящуюся к конкретному шаблону последовательности.
Нажмите «Включить трассировку», чтобы включить все сообщения трассировки для соответствующего шаблона последовательности.
Вышеупомянутые параметры отключены по умолчанию, поскольку они вызывают серьезное снижение производительности. Используйте эти параметры только в ситуации, когда вам нужно отладить конкретную проблему. Динамические последовательности не поддерживают «Включить статистику» и «Включить трассировку».
Нажмите «Редактировать», чтобы открыть шаблон последовательности в проектном представлении для редактирования.
Нажмите «Удалить», чтобы удалить конкретный шаблон последовательности из системы.
Добавление шаблона последовательности
На странице «Шаблоны» нажмите «Добавить шаблон последовательности». Появится страница «Проектирование шаблона».
Введите имя шаблона последовательности.
Щелкните «Добавить дочерний элемент» и выберите необходимые узлы для шаблона последовательности.
Рис. 89. Добавление шаблона последовательности — режим конструктора
Добавление параметров в шаблон последовательности
Если вы хотите добавить параметры в шаблоны последовательности, нажмите кнопку «Добавить параметр». Затем появится страница с таблицей параметров. Вы можете добавлять и удалять имена параметров, а также изменять и добавлять свойства узлов
Рис. 90. Параметры шаблона последовательности
Нажмите «Переключиться на исходное представление», чтобы просмотреть XML-файл конкретного шаблона последовательности. Если вы знакомы с языком конфигурации Synapse, вы можете напрямую редактировать XML и сохранять конфигурацию, используя это представление.
Рис. 91. Представление исходного кода шаблона последовательности
Нажмите «Редактировать», чтобы открыть шаблон точки вызова в проектном представлении для редактирования.
Щелкните «Удалить», чтобы удалить конкретный шаблон точки вызова из системы.
Обратите внимание, что параметры статистики/отслеживания недоступны для шаблонов точек вызова.
Добавление шаблона точки вызова
На странице «Шаблоны» щелкните «Добавить шаблон точки вызова». Появится страница добавления шаблонов точек вызова.
Выберите тип шаблона точки вызова. В настоящее время поддерживаются четыре типа:
Шаблон точки вызова по URL
Шаблон точки вызова по умолчанию
Шаблон точки вызова HTTP
Шаблон точки вызова WSDL
Рис. 92. Типы шаблонов точек вызова
Рис. 93. Шаблона добавления точки вызова по URL – режим конструктора
Введите необходимые данные в поля. Как показано выше, поля относятся к «Шаблону точки вызова по URL».
Название шаблона - Уникальное имя шаблона точки вызова
Название - имя встроенной точки вызова
Адрес - URL точки вызова шаблона. Это может быть параметризованное значение, такое как $uri. Если это реальная точка вызова, вы можете проверить доступность данного URL-адреса на лету, просто щелкнув «Тест».
Добавление параметров в шаблон точки вызова
Вы можете добавить параметры в шаблоны точек вызова, нажмите кнопку «Добавить параметр», появится страница с таблицей параметров. Вы можете добавлять и удалять имена параметров. Доступ к этим именам параметров можно получить в различных атрибутах редактируемого в данный момент шаблона точки вызова. Доступ к параметрам осуществляется с префиксом $. Для шаблонов точки вызова есть два встроенных параметра «name» и «uri», к которым можно получить доступ с помощью $name и $uri. В примере показано, как получить доступ к параметрам uri, p_id и p_name для атрибутов «Шаблона точки вызова по URL», «Коды ошибок приостановки» и «Начальная продолжительность приостановки» соответственно.
Рис. 94. Добавленные параметры и дополнительные атрибуты шаблона точки вызова
Щелкните «Переключится на исходный вид», чтобы просмотреть XML-файл конкретного шаблона точки вызова. Как указывалось ранее, если вы знакомы с языком конфигурации Synapse, вы можете напрямую редактировать XML и сохранять конфигурацию, используя это представление.
Рис. 95. Представление исходного кода шаблона точки вызова
Хранилища cообщений используются для хранения промежуточного состояния сообщений в процессе их обработки. Для реализации данной возможности Polus ESB содержит соответствующий встроенный Медиатор хранилища.
В навигаторе в разделе Управление/Служебная Шина щёлкните Хранилища Сообщений. Появится страница Управление Хранилищами Сообщений.
Рис. 96. Типы хранилищ сообщений
Щелкните ссылку Добавить хранилище сообщений памяти - появится соответствующая страница.
Рис. 97. Добавление Хранилища Сообщений в Памяти
Введите необходимые данные и щёлкните Сохранить. На странице Управление хранилищами сообщений отобразится добавленное хранилище сообщений.
Рис. 98. Список хранилищ сообщений
Щелкните ссылку Добавить хранилище сообщений JMS - появится соответствующая страница.
Рис. 99. Добавление хранилища сообщений JMS
Введите необходимые данные и щёлкните Сохранить. На странице Управление хранилищами сообщений отобразится добавленное хранилище сообщений.
Щелкните ссылку Добавить собственное хранилище сообщений - появится соответствующая страница. Вы можете добавить параметры в хранилище сообщений, задав Имя и Значение для параметров хранилища сообщений и нажав кнопку Добавить Параметр.
Рис. 100. Добавление пользовательского хранилища сообщений
Введите необходимые данные и щёлкните Сохранить. На странице Управление хранилищами сообщений отобразится добавленное хранилище сообщений.
Щёлчок по добавленному элементу списка хранилища сообщений направляет вас на страницу, где отображаются сообщения в списке. Вы можете удалить сообщение или удалить все сообщения в хранилище.
Рис. 101. Действия в хранилище сообщений
Если щелкнуть показать содержимое сообщения, отобразится содержимое сообщения.
Рис. 102. Содержимое сообщения
Процессоры сообщений предназначены для обработки сообщений Polus ESB, записанных в хранилища сообщений.
В навигаторе в разделе «Управление/Шина Сервисов» щелкните Процессоры сообщений. Появится страница Управление процессорами сообщений.
Рис. 103. Типы процессоров сообщений
Щёлкните Добавить Процессор Переадресации Запланированных Сообщений, Появится страница Добавить Процессор Пересылки Запланированных Сообщений.
Рис. 104. Добавление процессора пересылки запланированных сообщений
Введите необходимые данные и щёлкните Сохранить. На странице Управление процессорами сообщений отобразятся добавленные процессоры сообщений.
Рис. 105. Список процессоров сообщений
Щелкните Добавить процессор выборки сообщений
Рис. 106. Добавление процессора выборки сообщений
Введите необходимые данные и щёлкните Сохранить. На странице Управление Процессорами Сообщений отобразятся добавленные Процессоры Сообщений.
Щёлкните Добавить Пользовательский Процессор Сообщений, появится страница Добавить Пользовательский Процессор Сообщений.
Рис. 107. Добавление пользовательского процессора сообщений
Введите необходимые данные и щёлкните Сохранить. На странице Управление процессорами сообщений отобразятся добавленные процессоры сообщений.
Пользователи могут деактивировать определенные процессоры сообщений, перечисленные на странице Управление процессорами сообщений.
Рис. 108. Деактивированные процессоры Сообщений
Процессор запланированных сообщений поставляется с пользовательским интерфейсом, чтобы предоставить пользователю некоторый ручной контроль над операциями пересылки сообщений. С помощью интерфейса пользователь может удалить, повторно отправить, удалить все и повторно отправить все сообщения в процессоре сообщений.
Рис. 109. Действия над сообщениями
Если щелкнуть Показать Содержимое сообщения, отобразится содержимое сообщения.
Рис. 110. Содержимое сообщения
Коннектор позволяет взаимодействовать с функциями стороннего продукта и данными из вашего потока сообщений. Например, предопределенные коннекторы PolusESB позволяют подключаться и взаимодействовать с интерфейсами API таких сервисов, как Twilio, Salesforce и JIRA. Например, если вы включили коннекторы Twitter и Google Spreadsheet в своем экземпляре ESB, ваш поток сообщений может получать запросы, содержащие имя и пароль пользователя в Twitter, входить в учетную запись пользователя в Twitter, получать список подписчиков пользователя и вносить эту информацию в таблицу Google. Каждый коннектор предоставляет набор операций, которые вы вызываете из своих прокси-сервисов, последовательностей и REST API для взаимодействия с этим продуктом. Например, коннектор Twitter предоставляет операции, которые вызывают интерфейсы API Twitter для получения и отправки напрямую сообщений, получения идентификаторов друзей и подписчиков, обновления статуса, ретвита статуса других пользователей и так далее.
Добавление Коннекторов
Чтобы добавить коннектор к выбранному экземпляру ESB, щёлкните Управление > Коннекторы > Добавить.
Рис. 111. Меню - коннекторы
Затем вы можете загрузить файл ZIP коннектора.
Рис. 112. Загрузка коннекторов
Для просмотра списка развернутых коннекторов, щёлкните Управление > Коннекторы > Список.
Рис. 113. Список коннекторов
Включение и Выключение Коннекторов
Прежде чем вы сможете использовать коннектор, вы должны включить его, щелкнув ссылку Включить для этого соединителя в списке. Чтобы сделать соединитель временно недоступным в экземпляре ESB, щёлкните Отключить.
Рис. 114. Список коннекторов
Чтобы удалить коннектор из экземпляра Polus ESB, щелкните ссылку Удалить для соответствующего коннектора в списке.
Polus ESB предоставляет внутренний механизм обмена событиями по типу «Публикация-подписка»: нотификация о событии публикуется в топике, на который возможна подписка для чтения нотификаций из топика. Polus ESB предоставляет браузер топиков для просмотра всех топиков, доступных на сервере, в виде дерева. Пользователь может выполнять все операции с топиком через это представление. Изначально в этом древовидном представлении не отображаются никакие операции, доступные для топика. Когда пользователь щёлкает по топику, отображаются все операции, доступные для этой выбранного топика.
Рис. 115. Браузер топиков
Операции, доступные для выбранного топика:
Добавить Подтопик
Подписаться
Показать Подробности
Удалить
Рис. 116. Добавить подтопик
Функция добавления подтопика предоставляет пользователю возможность добавить топик в существующий топик. При добавлении нового топика в существующий топик пользователь может указать имя нового топика и установить разрешения для публикации и подписки на этот топик.
После добавления подтопика он будет помещена в дерево Просмотра Топиков.
Если пользователь хочет добавить топик непосредственно в корень, он может щелкнуть пункт подменю «Добавить» в меню топиков на левой панели.
Рис. 117. Подписка
Все подписки на определенный топик делаются на этой странице. Как только пользователь нажмет на ссылку подписки в браузере топиков, он будет перенаправлен на эту страницу. Чтобы подписаться на этот топик, пользователь должен указать значения следующих параметров:
Топик - Пользователю не нужно указывать здесь топик, так как он устанавливается автоматически.
Режим Подписки — одно из трех значений:
Режим подписки по умолчанию — «Только топик». В этом режиме пользователь создает подписку только на топик. В этом режиме подписчики получают только те события, которые опубликованы только в этом топике.
Режим «Топик и ближайший дочерний». В этом режиме подписчики топика получают события, опубликованные не только в указанном топику, но и в ближайшем дочернем элементе этого топика.
Режим «Топик и Дочерние». В этом режиме подписчики указанного топика будут получать события, опубликованные в указанном топику и во всех ее дочерних элементах.
URL приёмника событий - это URL, который подписчик должен предоставить для получения опубликованных событий. Когда события публикуются в топике, они отправляются на указанный здесь URL.
Дата окончания действия - здесь пользователь может указать срок действия подписки. Это необязательный параметр, и если пользователь оставит его незаполненным, срок действия подписки никогда не истечет.
Детали Топика
Рис. 118. Детали топика
Все относящиеся к топику подробности можно посмотреть на этой странице:
Сведения о разрешении
Здесь можно посмотреть относящиеся к топику разрешения и если пользователь захочет их изменить, то может изменить галочки в предоставленных флажках и нажать кнопку обновления разрешений.
Подробности Подписки WS
Здесь перечислены все подписки веб-сервисов на этот топик и все его дочерние элементы. Если пользователь хочет отписаться от топика, он может просто щелкнуть ссылку отписки в последнем столбце каждой строки.
Подробности Подписки JMS
Здесь перечислены все постоянные и временные подписки JMS.
Опубликовать
Эта опция публикации предоставляет пользователю возможность опубликовать образец сообщения XML в топике. После того, как на топик будет оформлен подписка, URL приемника событий получит это опубликованное сообщение XML после нажатия кнопки публикации после размещения сообщения XML в предоставленном пространстве.
Удаление топика
Чтобы удалить топик, количество подписок для этого топика и его дочерних элементов должно быть равно нулю. В противном случае появится сообщение об ошибке, указывающее, что для топика или его дочерних элементов есть подписки.
Страница Развернутые сервисы позволяет управлять различными видами сервисов и групп сервисов. Если ваш сервис развёрнут успешно, он появится на этой странице. Если нет, это будет показано ссылкой «Неисправные cервисные группы» (которая отображается красным цветом).
Рис. 119. Развёрнутые сервисы
Polus ESB предоставляет множество средств для управления сервисами, которые были успешно развернуты. При развертывании отдельного сервиса в его архиве имя файла архива всегда будет использоваться в качестве имени файла сервиса, если у вас нет имени, связанного с файлом сервиса. Если имя файла архива сервиса Test.aar, то имя сервиса будет Test.
На странице «Панель управления сервисом» представлена подробная информация о заданном сервисе.
Рис. 120. Панель управления сервисом
Панель «Информация о сервисе» содержит следующие сведения:
Имя Сервиса;
Описание Сервиса;
Группа сервиса;
Пространство развёртывания;
Тип сервиса.
Рис. 121. Информация о сервисе
Панель «Статистика» предоставляет следующую статистику по сервису:
Количество Запросов;
Количество Ответов;
Количество Ошибок;
Максимальное, Минимальное, Среднее Время Отклика.
Рис. 122. Статистика по сервису
Polus ESB предоставляет графическое представление времени отклика системы.
Рис. 123. Время отклика
Точки Вызова
Polus ESB по умолчанию настроен на две точки вызова.
https://localhost:9443/services/HelloService/
http://localhost:9763/services/HelloService/
Клиентские Операции
Polus ESB обеспечивает две клиентские операции. Это «Попробовать» и «Создать клиент Axis2».
Рис. 124. Клиентские Операции
Вы можете проверить, обеспечивает ли ваш сервис желаемый вывод, используя опцию Try-It. Когда вы щёлкните Попробовать, вы будете перенаправлены на страницу, где будут отображаться операции, доступные для вашего сервиса.
Генерация клиента для вашего сервиса
Вы можете легко создать клиент для своего сервиса с помощью - опции кода WSDL2 доступны на странице WSDL2Java. Вы увидите ссылки на файлы WSDL 1.1 и WSDL 2.0 в браузере.
Группы Сервисов
Группа сервисов — это удобный способ развертывания нескольких сервисов в одном файле архива сервисов. Между сервисами во время выполнения существует логическая связь. Единственная разница в services.xml для группы сервисов и отдельного сервиса заключается в его корневом элементе. Для группы сервисов корневым элементом является элемент serviceGroup и есть несколько элементов сервисов внутри элемента serviceGroup.
Например:
<serviceGroup>
<service name=Test1>
-----------------------------
<service>
<service name=Test2>
-------------------------------
</service>
</serviceGroup>
Щелкните ссылку развернутых групп сервисов на странице со списком сервисов, чтобы отобразить группы сервисов.