ENTAXY-480 release version 1.8.3
@ -1,141 +0,0 @@
|
|||||||
## Docker compose для сборки и запуска Entaxy.
|
|
||||||
|
|
||||||
Запуск локального окружения с несколькими docker контейнерами:
|
|
||||||
* Караф
|
|
||||||
* Брокер
|
|
||||||
* СУБД
|
|
||||||
* Менеджер артефактов
|
|
||||||
|
|
||||||
Для начала клонируем репозиторий и переходим в корень проекта:
|
|
||||||
```bash
|
|
||||||
git clone <entaxy-framework-repository>
|
|
||||||
cd entaxy-framework
|
|
||||||
```
|
|
||||||
Далее у нас есть разные варианты хранения необходимых для установки Entaxy артефактов.
|
|
||||||
### 1. Самый простой способ: локальный репозиторий артефактов включаеться в образ карафа.
|
|
||||||
В корневом POM находится профиль для деплоя артефактов в образ карафа:
|
|
||||||
```xml
|
|
||||||
<profile>
|
|
||||||
<id>docker.file.repo</id>
|
|
||||||
<distributionManagement>
|
|
||||||
<snapshotRepository>
|
|
||||||
<id>entaxy-maven-repo-file</id>
|
|
||||||
<url>file:./distribution/entaxy-docker/karaf/repo</url>
|
|
||||||
</snapshotRepository>
|
|
||||||
</distributionManagement>
|
|
||||||
</profile>
|
|
||||||
```
|
|
||||||
Запускаем мевен деплой из корня проекта с этим профилем:
|
|
||||||
```bash
|
|
||||||
mvn deploy -P docker.file.repo
|
|
||||||
```
|
|
||||||
И после успешной сборки запускаем контейнеры из директории проекта, в которой находится docker-compose.yml:
|
|
||||||
```bash
|
|
||||||
cd ./distribution/entaxy-docker
|
|
||||||
docker-compose up
|
|
||||||
```
|
|
||||||
Или `docker compose up` для новых версий docker.
|
|
||||||
После запуска комманды мы будем видеть прогресс сборки образов, запуска контейнеров и логи запущенных приложений. Для остановки контейнеров достаточно нажать сочетание клавиш Ctrl+C или через команды запущенные из другого окна/вкладки терминала.
|
|
||||||
```bash
|
|
||||||
docker-compose stop
|
|
||||||
docker-compose start
|
|
||||||
```
|
|
||||||
После запуска контейнеров открываем новый терминал и заходим в караф:
|
|
||||||
```bash
|
|
||||||
docker-compose exec karaf /opt/apache-karaf/bin/client
|
|
||||||
```
|
|
||||||
или ssh клиент с дальнейшим вводом пароля (karaf)
|
|
||||||
```bash
|
|
||||||
ssh -p 8101 karaf@localhost
|
|
||||||
```
|
|
||||||
|
|
||||||
И в консоли карафа запускаем скрипт с установкой необходимых фич:
|
|
||||||
```bash
|
|
||||||
shell:source ./install.karaf
|
|
||||||
```
|
|
||||||
Ждём окончания деплоя в караф.
|
|
||||||
(Не всегда полная установка проходит с первой попытки и тогда помогает повторный запуск `source install.karaf`)
|
|
||||||
|
|
||||||
### 2. Reposilite: легковесный http репозиторий артефактов запускается в отдельном контейнере.
|
|
||||||
Комментируем в файле install.karaf строку начинающуюся с:
|
|
||||||
```bash
|
|
||||||
config:property-set -p org.ops4j.pax.url.mvn org.ops4j.pax.url.mvn.repositories file:/opt/apache-karaf/repo
|
|
||||||
```
|
|
||||||
И убираем комментарий в строке начинающейся:
|
|
||||||
```bash
|
|
||||||
#config:property-set -p org.ops4j.pax.url.mvn org.ops4j.pax.url.mvn.repositories http://maven-repo/snapshots
|
|
||||||
```
|
|
||||||
|
|
||||||
Запускаем контейнеры из директории проекта, в которой находится docker-compose.yml:
|
|
||||||
```bash
|
|
||||||
cd ./distribution/entaxy-docker
|
|
||||||
docker-compose up
|
|
||||||
```
|
|
||||||
Или `docker compose up` для новых версий docker.
|
|
||||||
После запуска комманды мы будем видеть прогресс сборки образов, запуска контейнеров и логи запущенных приложений. Для остановки контейнеров достаточно нажать сочетание клавиш Ctrl+C или через команды запущенные из другого окна/вкладки терминала.
|
|
||||||
```bash
|
|
||||||
docker-compose stop
|
|
||||||
docker-compose start
|
|
||||||
```
|
|
||||||
|
|
||||||
Для деплоя в reposilite добавляем учётные данные в конфигурацию мавена (`~/.m2/settings.xml`):
|
|
||||||
```xml
|
|
||||||
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
|
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
||||||
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
|
|
||||||
<servers>
|
|
||||||
<server>
|
|
||||||
<id>entaxy-maven-repo</id>
|
|
||||||
<username>admin</username>
|
|
||||||
<password>aW7frfS9NPGrOnuNBMf9gyO0eXNRaCoOGtXHTcLU5akDFJ9ACiUJhgmZxlOKnLC5</password>
|
|
||||||
</server>
|
|
||||||
</servers>
|
|
||||||
</settings>
|
|
||||||
```
|
|
||||||
В корневом POM находится профиль для деплоя артефактов на сервер reposilite:
|
|
||||||
```xml
|
|
||||||
<profile>
|
|
||||||
<id>docker.reposilite</id>
|
|
||||||
<distributionManagement>
|
|
||||||
<snapshotRepository>
|
|
||||||
<id>entaxy-maven-repo</id>
|
|
||||||
<url>http://127.0.0.1:8081/snapshots</url>
|
|
||||||
</snapshotRepository>
|
|
||||||
</distributionManagement>
|
|
||||||
</profile>
|
|
||||||
```
|
|
||||||
Запускаем мевен деплой из корня проекта с этим профилем:
|
|
||||||
```bash
|
|
||||||
mvn deploy -P docker.reposilite
|
|
||||||
```
|
|
||||||
После успешной сборки открываем новый терминал и заходим в караф:
|
|
||||||
```bash
|
|
||||||
docker-compose exec karaf /opt/apache-karaf/bin/client
|
|
||||||
```
|
|
||||||
или ssh клиент с дальнейшим вводом пароля (karaf)
|
|
||||||
```bash
|
|
||||||
ssh -p 8101 karaf@localhost
|
|
||||||
```
|
|
||||||
|
|
||||||
И в консоли карафа запускаем скрипт с установкой необходимых фич:
|
|
||||||
```bash
|
|
||||||
shell:source ./install.karaf
|
|
||||||
```
|
|
||||||
Ждём окончания деплоя в караф.
|
|
||||||
(Не всегда полная установка проходит с первой попытки и тогда помогает повторный запуск `source install.karaf`)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Также есть вариант с nexus
|
|
||||||
После старта получаем пароль для admin через команду:
|
|
||||||
`docker-compose exec nexus cat /nexus-data/admin.password`.
|
|
||||||
Через админку нужно разрешить анонимный деплой или настроить доступы.
|
|
||||||
Урл для install.karaf
|
|
||||||
`http://nexus:8081/repository/maven-snapshots/@id=local-nexus@snapshots@noreleases`
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Остановить все контейнеры
|
|
||||||
`docker-compose down`
|
|
||||||
Остановить и удалить хранилища с БД и репой
|
|
||||||
`docker-compose down -v`
|
|
@ -1,78 +0,0 @@
|
|||||||
version: '3'
|
|
||||||
services:
|
|
||||||
broker:
|
|
||||||
container_name: broker
|
|
||||||
image: vromero/activemq-artemis
|
|
||||||
restart: unless-stopped
|
|
||||||
environment:
|
|
||||||
- ARTEMIS_USERNAME=entaxy
|
|
||||||
- ARTEMIS_PASSWORD=entaxy
|
|
||||||
ports:
|
|
||||||
- 8161:8161
|
|
||||||
- 61616:61616
|
|
||||||
|
|
||||||
db-postgres:
|
|
||||||
container_name: db-postgres
|
|
||||||
# image: postgres
|
|
||||||
build: ./postgres
|
|
||||||
restart: unless-stopped
|
|
||||||
volumes:
|
|
||||||
- db-vol:/var/lib/postgresql/data
|
|
||||||
# - /etc/localtime:/etc/localtime:ro
|
|
||||||
environment:
|
|
||||||
- POSTGRES_USER=entaxy
|
|
||||||
- POSTGRES_PASSWORD=entaxy
|
|
||||||
- POSTGRES_DB=cache
|
|
||||||
ports:
|
|
||||||
- 5432:5432
|
|
||||||
|
|
||||||
# db-mssql:
|
|
||||||
# container_name: db-mssql
|
|
||||||
# image: mcr.microsoft.com/mssql/server:2017-CU8-ubuntu
|
|
||||||
# restart: unless-stopped
|
|
||||||
# environment:
|
|
||||||
# - SA_PASSWORD=123mssql
|
|
||||||
# - ACCEPT_EULA=Y
|
|
||||||
# - POSTGRES_DB=cache
|
|
||||||
# ports:
|
|
||||||
# - 1433:1433
|
|
||||||
|
|
||||||
# nexus:
|
|
||||||
# container_name: nexus
|
|
||||||
# image: sonatype/nexus3
|
|
||||||
# restart: unless-stopped
|
|
||||||
# volumes:
|
|
||||||
# - nexus-data:/nexus-data
|
|
||||||
# environment:
|
|
||||||
# - INSTALL4J_ADD_VM_PARAMS=-Xms2g -Xmx2g -XX:MaxDirectMemorySize=3g
|
|
||||||
# ports:
|
|
||||||
# - 8081:8081
|
|
||||||
maven-repo:
|
|
||||||
container_name: maven-repo
|
|
||||||
build: ./reposilite
|
|
||||||
# image: dzikoysk/reposilite
|
|
||||||
restart: unless-stopped
|
|
||||||
volumes:
|
|
||||||
- nexus-data:/app/data
|
|
||||||
ports:
|
|
||||||
- 8081:80
|
|
||||||
|
|
||||||
karaf:
|
|
||||||
# image: apache/karaf:4.2.9
|
|
||||||
build:
|
|
||||||
context: karaf/
|
|
||||||
container_name: karaf
|
|
||||||
# environment:
|
|
||||||
# - ESB_ENTAXY_VERSION=1.8.0
|
|
||||||
# - ESB_ENTAXY_MAVEN_REPO=http://nexus:8081/repository/maven-snapshots/@id=local-nexus@snapshots@noreleases
|
|
||||||
restart: unless-stopped
|
|
||||||
ports:
|
|
||||||
- 8101:8101
|
|
||||||
- 8181:8181
|
|
||||||
- 8080:8080
|
|
||||||
|
|
||||||
volumes:
|
|
||||||
db-vol:
|
|
||||||
driver: local
|
|
||||||
nexus-data:
|
|
||||||
driver: local
|
|
@ -1,13 +0,0 @@
|
|||||||
FROM apache/karaf:4.2.9
|
|
||||||
|
|
||||||
COPY repo /opt/apache-karaf/repo
|
|
||||||
COPY init /opt/apache-karaf/etc/init
|
|
||||||
|
|
||||||
COPY jre.properties /opt/apache-karaf/etc/
|
|
||||||
COPY org.apache.karaf.cellar.groups.cfg /opt/apache-karaf/etc/
|
|
||||||
COPY org.ops4j.datasource-entaxy.esb.cache.cfg /opt/apache-karaf/etc/
|
|
||||||
COPY org.ops4j.datasource-entaxy.esb.db_connector.cfg /opt/apache-karaf/etc/
|
|
||||||
COPY org.ops4j.datasource-entaxy.esb.storage.cfg /opt/apache-karaf/etc/
|
|
||||||
COPY ru.entaxy.esb.cfg /opt/apache-karaf/etc/
|
|
||||||
COPY ru.entaxy.esb.system.bridge.cfg /opt/apache-karaf/etc/
|
|
||||||
COPY install.karaf /opt/apache-karaf/
|
|
@ -1,54 +0,0 @@
|
|||||||
{
|
|
||||||
"connections": [
|
|
||||||
{
|
|
||||||
"nodeType": "connection",
|
|
||||||
"uuid": "connection-uuid-1",
|
|
||||||
"name": "entaxy-file",
|
|
||||||
"adapterName": "fileAdapter",
|
|
||||||
"platform": true,
|
|
||||||
"pathParameter": "data/shared",
|
|
||||||
"properties": {},
|
|
||||||
"options": {
|
|
||||||
"noop": true,
|
|
||||||
"fileName": "default.txt",
|
|
||||||
"allowNullBody": "true"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"nodeType": "connection",
|
|
||||||
"uuid": "connection-uuid-2",
|
|
||||||
"name": "entaxy-broker",
|
|
||||||
"adapterName": "artemisAdapter",
|
|
||||||
"platform": true,
|
|
||||||
"pathParameter": "queue:entaxy.default",
|
|
||||||
"properties": {
|
|
||||||
"url": "(tcp://broker:61616)",
|
|
||||||
"username": "entaxy",
|
|
||||||
"password": "entaxy",
|
|
||||||
"maxConnections": "20",
|
|
||||||
"maxSessionsPerConnection": "100"
|
|
||||||
},
|
|
||||||
"options": {}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"nodeType": "connection",
|
|
||||||
"uuid": "connection-uuid-3",
|
|
||||||
"name": "entaxy-db-storage",
|
|
||||||
"adapterName": "postgresqlAdapter",
|
|
||||||
"platform": true,
|
|
||||||
"pathParameter": "entaxy.esb.storage",
|
|
||||||
"properties": {},
|
|
||||||
"options": {}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"nodeType": "connection",
|
|
||||||
"uuid": "connection-uuid-4",
|
|
||||||
"name": "entaxy-db-cache",
|
|
||||||
"adapterName": "postgresqlAdapter",
|
|
||||||
"platform": true,
|
|
||||||
"pathParameter": "entaxy.esb.cache",
|
|
||||||
"properties": {},
|
|
||||||
"options": {}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
@ -1,21 +0,0 @@
|
|||||||
ESB_ENTAXY_VERSION=1.8.0
|
|
||||||
|
|
||||||
echo "Maven repo=$ESB_ENTAXY_MAVEN_REPO, Version=$ESB_ENTAXY_VERSION"
|
|
||||||
|
|
||||||
# docker.file.repo
|
|
||||||
config:property-set -p org.ops4j.pax.url.mvn org.ops4j.pax.url.mvn.repositories file:/opt/apache-karaf/repo@id=local-repo@snapshots@noreleases,https://repo1.maven.org/maven2@id=central,https://repository.apache.org/content/groups/snapshots-group@id=apache@snapshots@noreleases,https://oss.sonatype.org/content/repositories/ops4j-snapshots@id=ops4j.sonatype.snapshots.deploy@snapshots@noreleases
|
|
||||||
# docker.reposilite
|
|
||||||
#config:property-set -p org.ops4j.pax.url.mvn org.ops4j.pax.url.mvn.repositories http://maven-repo/releases@id=local-releases@update=always,http://maven-repo/snapshots@id=local-snapshots@snapshots@noreleases@update=always,https://repo1.maven.org/maven2@id=central,https://repository.apache.org/content/groups/snapshots-group@id=apache@snapshots@noreleases,https://oss.sonatype.org/content/repositories/ops4j-snapshots@id=ops4j.sonatype.snapshots.deploy@snapshots@noreleases
|
|
||||||
|
|
||||||
feature:repo-add mvn:ru.entaxy.esb/karaf-features/$ESB_ENTAXY_VERSION/xml/features
|
|
||||||
echo "feature:install entaxy-all"
|
|
||||||
feature:install entaxy-all
|
|
||||||
feature:repo-add mvn:ru.entaxy.esb.platform.runtime/base/$ESB_ENTAXY_VERSION/xml/features
|
|
||||||
echo "feature:install base"
|
|
||||||
feature:install base
|
|
||||||
feature:repo-add mvn:ru.entaxy.esb.platform.runtime/core/$ESB_ENTAXY_VERSION/xml/features
|
|
||||||
echo "feature:install core"
|
|
||||||
feature:install core
|
|
||||||
feature:repo-add mvn:ru.entaxy.esb.platform.runtime.modules/uniform-service/$ESB_ENTAXY_VERSION/xml/features
|
|
||||||
echo "feature:install entaxy-uniform-service"
|
|
||||||
feature:install entaxy-uniform-service
|
|
@ -1,725 +0,0 @@
|
|||||||
################################################################################
|
|
||||||
#
|
|
||||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
|
||||||
# contributor license agreements. See the NOTICE file distributed with
|
|
||||||
# this work for additional information regarding copyright ownership.
|
|
||||||
# The ASF licenses this file to You under the Apache License, Version 2.0
|
|
||||||
# (the "License"); you may not use this file except in compliance with
|
|
||||||
# the License. You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
#
|
|
||||||
################################################################################
|
|
||||||
#
|
|
||||||
# Java platform package export properties.
|
|
||||||
#
|
|
||||||
# Standard package set. Note that:
|
|
||||||
# - javax.transaction* is exported with a mandatory attribute
|
|
||||||
jre-1.6=\
|
|
||||||
javax.accessibility, \
|
|
||||||
javax.activation;version="1.1", \
|
|
||||||
javax.activity, \
|
|
||||||
javax.annotation;version="1.0", \
|
|
||||||
javax.annotation.processing;version="1.0", \
|
|
||||||
javax.crypto, \
|
|
||||||
javax.crypto.interfaces, \
|
|
||||||
javax.crypto.spec, \
|
|
||||||
javax.imageio, \
|
|
||||||
javax.imageio.event, \
|
|
||||||
javax.imageio.metadata, \
|
|
||||||
javax.imageio.plugins.bmp, \
|
|
||||||
javax.imageio.plugins.jpeg, \
|
|
||||||
javax.imageio.spi, \
|
|
||||||
javax.imageio.stream, \
|
|
||||||
javax.jws, \
|
|
||||||
javax.jws.soap, \
|
|
||||||
javax.lang.model, \
|
|
||||||
javax.lang.model.element, \
|
|
||||||
javax.lang.model.type, \
|
|
||||||
javax.lang.model.util, \
|
|
||||||
javax.management, \
|
|
||||||
javax.management.loading, \
|
|
||||||
javax.management.modelmbean, \
|
|
||||||
javax.management.monitor, \
|
|
||||||
javax.management.openmbean, \
|
|
||||||
javax.management.relation, \
|
|
||||||
javax.management.remote, \
|
|
||||||
javax.management.remote.rmi, \
|
|
||||||
javax.management.timer, \
|
|
||||||
javax.naming, \
|
|
||||||
javax.naming.directory, \
|
|
||||||
javax.naming.event, \
|
|
||||||
javax.naming.ldap, \
|
|
||||||
javax.naming.spi, \
|
|
||||||
javax.net, \
|
|
||||||
javax.net.ssl, \
|
|
||||||
javax.print, \
|
|
||||||
javax.print.attribute, \
|
|
||||||
javax.print.attribute.standard, \
|
|
||||||
javax.print.event, \
|
|
||||||
javax.rmi, \
|
|
||||||
javax.rmi.CORBA, \
|
|
||||||
javax.rmi.ssl, \
|
|
||||||
javax.script, \
|
|
||||||
javax.security.auth, \
|
|
||||||
javax.security.auth.callback, \
|
|
||||||
javax.security.auth.kerberos, \
|
|
||||||
javax.security.auth.login, \
|
|
||||||
javax.security.auth.spi, \
|
|
||||||
javax.security.auth.x500, \
|
|
||||||
javax.security.cert, \
|
|
||||||
javax.security.sasl, \
|
|
||||||
javax.sound.midi, \
|
|
||||||
javax.sound.midi.spi, \
|
|
||||||
javax.sound.sampled, \
|
|
||||||
javax.sound.sampled.spi, \
|
|
||||||
javax.sql, \
|
|
||||||
javax.sql.rowset, \
|
|
||||||
javax.sql.rowset.serial, \
|
|
||||||
javax.sql.rowset.spi, \
|
|
||||||
javax.swing, \
|
|
||||||
javax.swing.border, \
|
|
||||||
javax.swing.colorchooser, \
|
|
||||||
javax.swing.event, \
|
|
||||||
javax.swing.filechooser, \
|
|
||||||
javax.swing.plaf, \
|
|
||||||
javax.swing.plaf.basic, \
|
|
||||||
javax.swing.plaf.metal, \
|
|
||||||
javax.swing.plaf.multi, \
|
|
||||||
javax.swing.plaf.synth, \
|
|
||||||
javax.swing.table, \
|
|
||||||
javax.swing.text, \
|
|
||||||
javax.swing.text.html, \
|
|
||||||
javax.swing.text.html.parser, \
|
|
||||||
javax.swing.text.rtf, \
|
|
||||||
javax.swing.tree, \
|
|
||||||
javax.swing.undo, \
|
|
||||||
javax.tools, \
|
|
||||||
javax.transaction; javax.transaction.xa; partial=true; mandatory:=partial, \
|
|
||||||
javax.xml, \
|
|
||||||
javax.xml.bind;version="2.2.1", \
|
|
||||||
javax.xml.bind.annotation;version="2.2.1", \
|
|
||||||
javax.xml.bind.annotation.adapters;version="2.2.1", \
|
|
||||||
javax.xml.bind.attachment;version="2.2.1", \
|
|
||||||
javax.xml.bind.helpers;version="2.2.1", \
|
|
||||||
javax.xml.bind.util;version="2.2.1", \
|
|
||||||
javax.xml.crypto, \
|
|
||||||
javax.xml.crypto.dom, \
|
|
||||||
javax.xml.crypto.dsig, \
|
|
||||||
javax.xml.crypto.dsig.dom, \
|
|
||||||
javax.xml.crypto.dsig.keyinfo, \
|
|
||||||
javax.xml.crypto.dsig.spec, \
|
|
||||||
javax.xml.datatype, \
|
|
||||||
javax.xml.namespace, \
|
|
||||||
javax.xml.parsers, \
|
|
||||||
javax.xml.soap;version="1.3", \
|
|
||||||
javax.xml.stream;version="1.2", \
|
|
||||||
javax.xml.stream.events;version="1.2", \
|
|
||||||
javax.xml.stream.util;version="1.2", \
|
|
||||||
javax.xml.transform, \
|
|
||||||
javax.xml.transform.dom, \
|
|
||||||
javax.xml.transform.sax, \
|
|
||||||
javax.xml.transform.stax, \
|
|
||||||
javax.xml.transform.stream, \
|
|
||||||
javax.xml.validation, \
|
|
||||||
javax.xml.ws;version="2.2", \
|
|
||||||
javax.xml.ws.handler;version="2.2", \
|
|
||||||
javax.xml.ws.handler.soap;version="2.2", \
|
|
||||||
javax.xml.ws.http;version="2.2", \
|
|
||||||
javax.xml.ws.soap;version="2.2", \
|
|
||||||
javax.xml.ws.spi;version="2.2", \
|
|
||||||
javax.xml.ws.wsaddressing;version="2.2", \
|
|
||||||
javax.xml.ws.spi.http;version="2.2", \
|
|
||||||
javax.xml.xpath, \
|
|
||||||
org.ietf.jgss, \
|
|
||||||
org.omg.CORBA, \
|
|
||||||
org.omg.CORBA_2_3, \
|
|
||||||
org.omg.CORBA_2_3.portable, \
|
|
||||||
org.omg.CORBA.DynAnyPackage, \
|
|
||||||
org.omg.CORBA.ORBPackage, \
|
|
||||||
org.omg.CORBA.portable, \
|
|
||||||
org.omg.CORBA.TypeCodePackage, \
|
|
||||||
org.omg.CosNaming, \
|
|
||||||
org.omg.CosNaming.NamingContextExtPackage, \
|
|
||||||
org.omg.CosNaming.NamingContextPackage, \
|
|
||||||
org.omg.Dynamic, \
|
|
||||||
org.omg.DynamicAny, \
|
|
||||||
org.omg.DynamicAny.DynAnyFactoryPackage, \
|
|
||||||
org.omg.DynamicAny.DynAnyPackage, \
|
|
||||||
org.omg.IOP, \
|
|
||||||
org.omg.IOP.CodecFactoryPackage, \
|
|
||||||
org.omg.IOP.CodecPackage, \
|
|
||||||
org.omg.Messaging, \
|
|
||||||
org.omg.PortableInterceptor, \
|
|
||||||
org.omg.PortableInterceptor.ORBInitInfoPackage, \
|
|
||||||
org.omg.PortableServer, \
|
|
||||||
org.omg.PortableServer.CurrentPackage, \
|
|
||||||
org.omg.PortableServer.POAManagerPackage, \
|
|
||||||
org.omg.PortableServer.POAPackage, \
|
|
||||||
org.omg.PortableServer.portable, \
|
|
||||||
org.omg.PortableServer.ServantLocatorPackage, \
|
|
||||||
org.omg.SendingContext, \
|
|
||||||
org.omg.stub.java.rmi, \
|
|
||||||
org.omg.stub.javax.management.remote.rmi, \
|
|
||||||
org.w3c.dom, \
|
|
||||||
org.w3c.dom.bootstrap, \
|
|
||||||
org.w3c.dom.css, \
|
|
||||||
org.w3c.dom.events, \
|
|
||||||
org.w3c.dom.html, \
|
|
||||||
org.w3c.dom.ls, \
|
|
||||||
org.w3c.dom.ranges, \
|
|
||||||
org.w3c.dom.stylesheets, \
|
|
||||||
org.w3c.dom.traversal, \
|
|
||||||
org.w3c.dom.views, \
|
|
||||||
org.w3c.dom.xpath, \
|
|
||||||
org.xml.sax, \
|
|
||||||
org.xml.sax.ext, \
|
|
||||||
org.xml.sax.helpers
|
|
||||||
# Standard package set. Note that:
|
|
||||||
# - javax.transaction* is exported with a mandatory attribute
|
|
||||||
jre-1.7=\
|
|
||||||
javax.accessibility, \
|
|
||||||
javax.activation;version="1.1", \
|
|
||||||
javax.activity, \
|
|
||||||
javax.annotation;version="1.0", \
|
|
||||||
javax.annotation.processing;version="1.0", \
|
|
||||||
javax.crypto, \
|
|
||||||
javax.crypto.interfaces, \
|
|
||||||
javax.crypto.spec, \
|
|
||||||
javax.imageio, \
|
|
||||||
javax.imageio.event, \
|
|
||||||
javax.imageio.metadata, \
|
|
||||||
javax.imageio.plugins.bmp, \
|
|
||||||
javax.imageio.plugins.jpeg, \
|
|
||||||
javax.imageio.spi, \
|
|
||||||
javax.imageio.stream, \
|
|
||||||
javax.jws, \
|
|
||||||
javax.jws.soap, \
|
|
||||||
javax.lang.model, \
|
|
||||||
javax.lang.model.element, \
|
|
||||||
javax.lang.model.type, \
|
|
||||||
javax.lang.model.util, \
|
|
||||||
javax.management, \
|
|
||||||
javax.management.loading, \
|
|
||||||
javax.management.modelmbean, \
|
|
||||||
javax.management.monitor, \
|
|
||||||
javax.management.openmbean, \
|
|
||||||
javax.management.relation, \
|
|
||||||
javax.management.remote, \
|
|
||||||
javax.management.remote.rmi, \
|
|
||||||
javax.management.timer, \
|
|
||||||
javax.naming, \
|
|
||||||
javax.naming.directory, \
|
|
||||||
javax.naming.event, \
|
|
||||||
javax.naming.ldap, \
|
|
||||||
javax.naming.spi, \
|
|
||||||
javax.net, \
|
|
||||||
javax.net.ssl, \
|
|
||||||
javax.print, \
|
|
||||||
javax.print.attribute, \
|
|
||||||
javax.print.attribute.standard, \
|
|
||||||
javax.print.event, \
|
|
||||||
javax.rmi, \
|
|
||||||
javax.rmi.CORBA, \
|
|
||||||
javax.rmi.ssl, \
|
|
||||||
javax.script, \
|
|
||||||
javax.security.auth, \
|
|
||||||
javax.security.auth.callback, \
|
|
||||||
javax.security.auth.kerberos, \
|
|
||||||
javax.security.auth.login, \
|
|
||||||
javax.security.auth.spi, \
|
|
||||||
javax.security.auth.x500, \
|
|
||||||
javax.security.cert, \
|
|
||||||
javax.security.sasl, \
|
|
||||||
javax.sound.midi, \
|
|
||||||
javax.sound.midi.spi, \
|
|
||||||
javax.sound.sampled, \
|
|
||||||
javax.sound.sampled.spi, \
|
|
||||||
javax.sql, \
|
|
||||||
javax.sql.rowset, \
|
|
||||||
javax.sql.rowset.serial, \
|
|
||||||
javax.sql.rowset.spi, \
|
|
||||||
javax.swing, \
|
|
||||||
javax.swing.border, \
|
|
||||||
javax.swing.colorchooser, \
|
|
||||||
javax.swing.event, \
|
|
||||||
javax.swing.filechooser, \
|
|
||||||
javax.swing.plaf, \
|
|
||||||
javax.swing.plaf.basic, \
|
|
||||||
javax.swing.plaf.metal, \
|
|
||||||
javax.swing.plaf.multi, \
|
|
||||||
javax.swing.plaf.synth, \
|
|
||||||
javax.swing.table, \
|
|
||||||
javax.swing.text, \
|
|
||||||
javax.swing.text.html, \
|
|
||||||
javax.swing.text.html.parser, \
|
|
||||||
javax.swing.text.rtf, \
|
|
||||||
javax.swing.tree, \
|
|
||||||
javax.swing.undo, \
|
|
||||||
javax.tools, \
|
|
||||||
javax.transaction; javax.transaction.xa; partial=true; mandatory:=partial, \
|
|
||||||
javax.xml, \
|
|
||||||
javax.xml.bind;version="2.2.1", \
|
|
||||||
javax.xml.bind.annotation;version="2.2.1", \
|
|
||||||
javax.xml.bind.annotation.adapters;version="2.2.1", \
|
|
||||||
javax.xml.bind.attachment;version="2.2.1", \
|
|
||||||
javax.xml.bind.helpers;version="2.2.1", \
|
|
||||||
javax.xml.bind.util;version="2.2.1", \
|
|
||||||
javax.xml.crypto, \
|
|
||||||
javax.xml.crypto.dom, \
|
|
||||||
javax.xml.crypto.dsig, \
|
|
||||||
javax.xml.crypto.dsig.dom, \
|
|
||||||
javax.xml.crypto.dsig.keyinfo, \
|
|
||||||
javax.xml.crypto.dsig.spec, \
|
|
||||||
javax.xml.datatype, \
|
|
||||||
javax.xml.namespace, \
|
|
||||||
javax.xml.parsers, \
|
|
||||||
javax.xml.soap;version="1.3", \
|
|
||||||
javax.xml.stream;version="1.2", \
|
|
||||||
javax.xml.stream.events;version="1.2", \
|
|
||||||
javax.xml.stream.util;version="1.2", \
|
|
||||||
javax.xml.transform, \
|
|
||||||
javax.xml.transform.dom, \
|
|
||||||
javax.xml.transform.sax, \
|
|
||||||
javax.xml.transform.stax, \
|
|
||||||
javax.xml.transform.stream, \
|
|
||||||
javax.xml.validation, \
|
|
||||||
javax.xml.xpath, \
|
|
||||||
org.ietf.jgss, \
|
|
||||||
org.omg.CORBA, \
|
|
||||||
org.omg.CORBA_2_3, \
|
|
||||||
org.omg.CORBA_2_3.portable, \
|
|
||||||
org.omg.CORBA.DynAnyPackage, \
|
|
||||||
org.omg.CORBA.ORBPackage, \
|
|
||||||
org.omg.CORBA.portable, \
|
|
||||||
org.omg.CORBA.TypeCodePackage, \
|
|
||||||
org.omg.CosNaming, \
|
|
||||||
org.omg.CosNaming.NamingContextExtPackage, \
|
|
||||||
org.omg.CosNaming.NamingContextPackage, \
|
|
||||||
org.omg.Dynamic, \
|
|
||||||
org.omg.DynamicAny, \
|
|
||||||
org.omg.DynamicAny.DynAnyFactoryPackage, \
|
|
||||||
org.omg.DynamicAny.DynAnyPackage, \
|
|
||||||
org.omg.IOP, \
|
|
||||||
org.omg.IOP.CodecFactoryPackage, \
|
|
||||||
org.omg.IOP.CodecPackage, \
|
|
||||||
org.omg.Messaging, \
|
|
||||||
org.omg.PortableInterceptor, \
|
|
||||||
org.omg.PortableInterceptor.ORBInitInfoPackage, \
|
|
||||||
org.omg.PortableServer, \
|
|
||||||
org.omg.PortableServer.CurrentPackage, \
|
|
||||||
org.omg.PortableServer.POAManagerPackage, \
|
|
||||||
org.omg.PortableServer.POAPackage, \
|
|
||||||
org.omg.PortableServer.portable, \
|
|
||||||
org.omg.PortableServer.ServantLocatorPackage, \
|
|
||||||
org.omg.SendingContext, \
|
|
||||||
org.omg.stub.java.rmi, \
|
|
||||||
org.omg.stub.javax.management.remote.rmi, \
|
|
||||||
org.w3c.dom, \
|
|
||||||
org.w3c.dom.bootstrap, \
|
|
||||||
org.w3c.dom.css, \
|
|
||||||
org.w3c.dom.events, \
|
|
||||||
org.w3c.dom.html, \
|
|
||||||
org.w3c.dom.ls, \
|
|
||||||
org.w3c.dom.ranges, \
|
|
||||||
org.w3c.dom.stylesheets, \
|
|
||||||
org.w3c.dom.traversal, \
|
|
||||||
org.w3c.dom.views, \
|
|
||||||
org.w3c.dom.xpath, \
|
|
||||||
org.xml.sax, \
|
|
||||||
org.xml.sax.ext, \
|
|
||||||
org.xml.sax.helpers, \
|
|
||||||
com.sun.nio.sctp
|
|
||||||
jre-1.8=\
|
|
||||||
javax.accessibility, \
|
|
||||||
javax.activity, \
|
|
||||||
javax.annotation;version="1.0", \
|
|
||||||
javax.annotation.processing;version="1.0", \
|
|
||||||
javax.crypto, \
|
|
||||||
javax.crypto.interfaces, \
|
|
||||||
javax.crypto.spec, \
|
|
||||||
javax.imageio, \
|
|
||||||
javax.imageio.event, \
|
|
||||||
javax.imageio.metadata, \
|
|
||||||
javax.imageio.plugins.bmp, \
|
|
||||||
javax.imageio.plugins.jpeg, \
|
|
||||||
javax.imageio.spi, \
|
|
||||||
javax.imageio.stream, \
|
|
||||||
javax.jws, \
|
|
||||||
javax.jws.soap, \
|
|
||||||
javax.lang.model, \
|
|
||||||
javax.lang.model.element, \
|
|
||||||
javax.lang.model.type, \
|
|
||||||
javax.lang.model.util, \
|
|
||||||
javax.management, \
|
|
||||||
javax.management.loading, \
|
|
||||||
javax.management.modelmbean, \
|
|
||||||
javax.management.monitor, \
|
|
||||||
javax.management.openmbean, \
|
|
||||||
javax.management.relation, \
|
|
||||||
javax.management.remote, \
|
|
||||||
javax.management.remote.rmi, \
|
|
||||||
javax.management.timer, \
|
|
||||||
javax.naming, \
|
|
||||||
javax.naming.directory, \
|
|
||||||
javax.naming.event, \
|
|
||||||
javax.naming.ldap, \
|
|
||||||
javax.naming.spi, \
|
|
||||||
javax.net, \
|
|
||||||
javax.net.ssl, \
|
|
||||||
javax.print, \
|
|
||||||
javax.print.attribute, \
|
|
||||||
javax.print.attribute.standard, \
|
|
||||||
javax.print.event, \
|
|
||||||
javax.rmi, \
|
|
||||||
javax.rmi.CORBA, \
|
|
||||||
javax.rmi.ssl, \
|
|
||||||
javax.script, \
|
|
||||||
javax.security.auth, \
|
|
||||||
javax.security.auth.callback, \
|
|
||||||
javax.security.auth.kerberos, \
|
|
||||||
javax.security.auth.login, \
|
|
||||||
javax.security.auth.spi, \
|
|
||||||
javax.security.auth.x500, \
|
|
||||||
javax.security.cert, \
|
|
||||||
javax.security.sasl, \
|
|
||||||
javax.sound.midi, \
|
|
||||||
javax.sound.midi.spi, \
|
|
||||||
javax.sound.sampled, \
|
|
||||||
javax.sound.sampled.spi, \
|
|
||||||
javax.sql, \
|
|
||||||
javax.sql.rowset, \
|
|
||||||
javax.sql.rowset.serial, \
|
|
||||||
javax.sql.rowset.spi, \
|
|
||||||
javax.swing, \
|
|
||||||
javax.swing.border, \
|
|
||||||
javax.swing.colorchooser, \
|
|
||||||
javax.swing.event, \
|
|
||||||
javax.swing.filechooser, \
|
|
||||||
javax.swing.plaf, \
|
|
||||||
javax.swing.plaf.basic, \
|
|
||||||
javax.swing.plaf.metal, \
|
|
||||||
javax.swing.plaf.multi, \
|
|
||||||
javax.swing.plaf.synth, \
|
|
||||||
javax.swing.table, \
|
|
||||||
javax.swing.text, \
|
|
||||||
javax.swing.text.html, \
|
|
||||||
javax.swing.text.html.parser, \
|
|
||||||
javax.swing.text.rtf, \
|
|
||||||
javax.swing.tree, \
|
|
||||||
javax.swing.undo, \
|
|
||||||
javax.tools, \
|
|
||||||
javax.transaction; javax.transaction.xa; partial=true; mandatory:=partial, \
|
|
||||||
javax.xml, \
|
|
||||||
javax.xml.bind;version="2.2.8", \
|
|
||||||
javax.xml.bind.annotation;version="2.2.8", \
|
|
||||||
javax.xml.bind.annotation.adapters;version="2.2.8", \
|
|
||||||
javax.xml.bind.attachment;version="2.2.8", \
|
|
||||||
javax.xml.bind.helpers;version="2.2.8", \
|
|
||||||
javax.xml.bind.util;version="2.2.8", \
|
|
||||||
javax.xml.crypto, \
|
|
||||||
javax.xml.crypto.dom, \
|
|
||||||
javax.xml.crypto.dsig, \
|
|
||||||
javax.xml.crypto.dsig.dom, \
|
|
||||||
javax.xml.crypto.dsig.keyinfo, \
|
|
||||||
javax.xml.crypto.dsig.spec, \
|
|
||||||
javax.xml.datatype, \
|
|
||||||
javax.xml.namespace, \
|
|
||||||
javax.xml.parsers, \
|
|
||||||
javax.xml.stream;version="1.2", \
|
|
||||||
javax.xml.stream.events;version="1.2", \
|
|
||||||
javax.xml.stream.util;version="1.2", \
|
|
||||||
javax.xml.transform, \
|
|
||||||
javax.xml.transform.dom, \
|
|
||||||
javax.xml.transform.sax, \
|
|
||||||
javax.xml.transform.stax, \
|
|
||||||
javax.xml.transform.stream, \
|
|
||||||
javax.xml.validation, \
|
|
||||||
javax.xml.ws;version="2.2", \
|
|
||||||
javax.xml.ws.handler;version="2.2", \
|
|
||||||
javax.xml.ws.handler.soap;version="2.2", \
|
|
||||||
javax.xml.ws.http;version="2.2", \
|
|
||||||
javax.xml.ws.soap;version="2.2", \
|
|
||||||
javax.xml.ws.spi;version="2.2", \
|
|
||||||
javax.xml.ws.wsaddressing;version="2.2", \
|
|
||||||
javax.xml.ws.spi.http;version="2.2", \
|
|
||||||
javax.xml.xpath, \
|
|
||||||
javafx.animation, \
|
|
||||||
javafx.application, \
|
|
||||||
javafx.beans, \
|
|
||||||
javafx.beans.binding, \
|
|
||||||
javafx.beans.property, \
|
|
||||||
javafx.beans.property.adapter, \
|
|
||||||
javafx.beans.value, \
|
|
||||||
javafx.collections, \
|
|
||||||
javafx.collections.transform, \
|
|
||||||
javafx.concurrent, \
|
|
||||||
javafx.css, \
|
|
||||||
javafx.embed.swing, \
|
|
||||||
javafx.embed.swt, \
|
|
||||||
javafx.event, \
|
|
||||||
javafx.fxml, \
|
|
||||||
javafx.geometry, \
|
|
||||||
javafx.print, \
|
|
||||||
javafx.scene, \
|
|
||||||
javafx.scene.canvas, \
|
|
||||||
javafx.scene.chart, \
|
|
||||||
javafx.scene.control, \
|
|
||||||
javafx.scene.control.cell, \
|
|
||||||
javafx.scene.effect, \
|
|
||||||
javafx.scene.image, \
|
|
||||||
javafx.scene.input, \
|
|
||||||
javafx.scene.layout, \
|
|
||||||
javafx.scene.media, \
|
|
||||||
javafx.scene.paint, \
|
|
||||||
javafx.scene.shape, \
|
|
||||||
javafx.scene.text, \
|
|
||||||
javafx.scene.transform, \
|
|
||||||
javafx.scene.web, \
|
|
||||||
javafx.stage, \
|
|
||||||
javafx.util, \
|
|
||||||
javafx.util.converter, \
|
|
||||||
netscape.javascript, \
|
|
||||||
org.ietf.jgss, \
|
|
||||||
org.omg.CORBA, \
|
|
||||||
org.omg.CORBA_2_3, \
|
|
||||||
org.omg.CORBA_2_3.portable, \
|
|
||||||
org.omg.CORBA.DynAnyPackage, \
|
|
||||||
org.omg.CORBA.ORBPackage, \
|
|
||||||
org.omg.CORBA.portable, \
|
|
||||||
org.omg.CORBA.TypeCodePackage, \
|
|
||||||
org.omg.CosNaming, \
|
|
||||||
org.omg.CosNaming.NamingContextExtPackage, \
|
|
||||||
org.omg.CosNaming.NamingContextPackage, \
|
|
||||||
org.omg.Dynamic, \
|
|
||||||
org.omg.DynamicAny, \
|
|
||||||
org.omg.DynamicAny.DynAnyFactoryPackage, \
|
|
||||||
org.omg.DynamicAny.DynAnyPackage, \
|
|
||||||
org.omg.IOP, \
|
|
||||||
org.omg.IOP.CodecFactoryPackage, \
|
|
||||||
org.omg.IOP.CodecPackage, \
|
|
||||||
org.omg.Messaging, \
|
|
||||||
org.omg.PortableInterceptor, \
|
|
||||||
org.omg.PortableInterceptor.ORBInitInfoPackage, \
|
|
||||||
org.omg.PortableServer, \
|
|
||||||
org.omg.PortableServer.CurrentPackage, \
|
|
||||||
org.omg.PortableServer.POAManagerPackage, \
|
|
||||||
org.omg.PortableServer.POAPackage, \
|
|
||||||
org.omg.PortableServer.portable, \
|
|
||||||
org.omg.PortableServer.ServantLocatorPackage, \
|
|
||||||
org.omg.SendingContext, \
|
|
||||||
org.omg.stub.java.rmi, \
|
|
||||||
org.omg.stub.javax.management.remote.rmi, \
|
|
||||||
org.w3c.dom, \
|
|
||||||
org.w3c.dom.bootstrap, \
|
|
||||||
org.w3c.dom.css, \
|
|
||||||
org.w3c.dom.events, \
|
|
||||||
org.w3c.dom.html, \
|
|
||||||
org.w3c.dom.ls, \
|
|
||||||
org.w3c.dom.ranges, \
|
|
||||||
org.w3c.dom.stylesheets, \
|
|
||||||
org.w3c.dom.traversal, \
|
|
||||||
org.w3c.dom.views, \
|
|
||||||
org.w3c.dom.xpath, \
|
|
||||||
org.xml.sax, \
|
|
||||||
org.xml.sax.ext, \
|
|
||||||
org.xml.sax.helpers, \
|
|
||||||
com.sun.nio.sctp, \
|
|
||||||
sun.nio.ch, \
|
|
||||||
com.sun.management
|
|
||||||
jre-9=\
|
|
||||||
javax.accessibility, \
|
|
||||||
javax.activation;version="1.2", \
|
|
||||||
javax.activity, \
|
|
||||||
javax.annotation;version="1.0", \
|
|
||||||
javax.annotation.processing;version="1.0", \
|
|
||||||
javax.crypto, \
|
|
||||||
javax.crypto.interfaces, \
|
|
||||||
javax.crypto.spec, \
|
|
||||||
javax.imageio, \
|
|
||||||
javax.imageio.event, \
|
|
||||||
javax.imageio.metadata, \
|
|
||||||
javax.imageio.plugins.bmp, \
|
|
||||||
javax.imageio.plugins.jpeg, \
|
|
||||||
javax.imageio.spi, \
|
|
||||||
javax.imageio.stream, \
|
|
||||||
javax.lang.model, \
|
|
||||||
javax.lang.model.element, \
|
|
||||||
javax.lang.model.type, \
|
|
||||||
javax.lang.model.util, \
|
|
||||||
javax.management, \
|
|
||||||
javax.management.loading, \
|
|
||||||
javax.management.modelmbean, \
|
|
||||||
javax.management.monitor, \
|
|
||||||
javax.management.openmbean, \
|
|
||||||
javax.management.relation, \
|
|
||||||
javax.management.remote, \
|
|
||||||
javax.management.remote.rmi, \
|
|
||||||
javax.management.timer, \
|
|
||||||
javax.naming, \
|
|
||||||
javax.naming.directory, \
|
|
||||||
javax.naming.event, \
|
|
||||||
javax.naming.ldap, \
|
|
||||||
javax.naming.spi, \
|
|
||||||
javax.net, \
|
|
||||||
javax.net.ssl, \
|
|
||||||
javax.print, \
|
|
||||||
javax.print.attribute, \
|
|
||||||
javax.print.attribute.standard, \
|
|
||||||
javax.print.event, \
|
|
||||||
javax.rmi, \
|
|
||||||
javax.rmi.CORBA, \
|
|
||||||
javax.rmi.ssl, \
|
|
||||||
javax.script, \
|
|
||||||
javax.security.auth, \
|
|
||||||
javax.security.auth.callback, \
|
|
||||||
javax.security.auth.kerberos, \
|
|
||||||
javax.security.auth.login, \
|
|
||||||
javax.security.auth.spi, \
|
|
||||||
javax.security.auth.x500, \
|
|
||||||
javax.security.cert, \
|
|
||||||
javax.security.sasl, \
|
|
||||||
javax.sound.midi, \
|
|
||||||
javax.sound.midi.spi, \
|
|
||||||
javax.sound.sampled, \
|
|
||||||
javax.sound.sampled.spi, \
|
|
||||||
javax.sql, \
|
|
||||||
javax.sql.rowset, \
|
|
||||||
javax.sql.rowset.serial, \
|
|
||||||
javax.sql.rowset.spi, \
|
|
||||||
javax.swing, \
|
|
||||||
javax.swing.border, \
|
|
||||||
javax.swing.colorchooser, \
|
|
||||||
javax.swing.event, \
|
|
||||||
javax.swing.filechooser, \
|
|
||||||
javax.swing.plaf, \
|
|
||||||
javax.swing.plaf.basic, \
|
|
||||||
javax.swing.plaf.metal, \
|
|
||||||
javax.swing.plaf.multi, \
|
|
||||||
javax.swing.plaf.synth, \
|
|
||||||
javax.swing.table, \
|
|
||||||
javax.swing.text, \
|
|
||||||
javax.swing.text.html, \
|
|
||||||
javax.swing.text.html.parser, \
|
|
||||||
javax.swing.text.rtf, \
|
|
||||||
javax.swing.tree, \
|
|
||||||
javax.swing.undo, \
|
|
||||||
javax.tools, \
|
|
||||||
javax.transaction; javax.transaction.xa; partial=true; mandatory:=partial, \
|
|
||||||
javax.xml, \
|
|
||||||
javax.xml.bind;version="2.3.0", \
|
|
||||||
javax.xml.bind.annotation;version="2.3.0", \
|
|
||||||
javax.xml.bind.annotation.adapters;version="2.3.0", \
|
|
||||||
javax.xml.bind.attachment;version="2.3.0", \
|
|
||||||
javax.xml.bind.helpers;version="2.3.0", \
|
|
||||||
javax.xml.bind.util;version="2.3.0", \
|
|
||||||
javax.xml.crypto, \
|
|
||||||
javax.xml.crypto.dom, \
|
|
||||||
javax.xml.crypto.dsig, \
|
|
||||||
javax.xml.crypto.dsig.dom, \
|
|
||||||
javax.xml.crypto.dsig.keyinfo, \
|
|
||||||
javax.xml.crypto.dsig.spec, \
|
|
||||||
javax.xml.datatype, \
|
|
||||||
javax.xml.namespace, \
|
|
||||||
javax.xml.parsers, \
|
|
||||||
javax.xml.stream;version="1.2", \
|
|
||||||
javax.xml.stream.events;version="1.2", \
|
|
||||||
javax.xml.stream.util;version="1.2", \
|
|
||||||
javax.xml.transform, \
|
|
||||||
javax.xml.transform.dom, \
|
|
||||||
javax.xml.transform.sax, \
|
|
||||||
javax.xml.transform.stax, \
|
|
||||||
javax.xml.transform.stream, \
|
|
||||||
javax.xml.validation, \
|
|
||||||
javax.xml.xpath, \
|
|
||||||
javafx.animation, \
|
|
||||||
javafx.application, \
|
|
||||||
javafx.beans, \
|
|
||||||
javafx.beans.binding, \
|
|
||||||
javafx.beans.property, \
|
|
||||||
javafx.beans.property.adapter, \
|
|
||||||
javafx.beans.value, \
|
|
||||||
javafx.collections, \
|
|
||||||
javafx.collections.transformation, \
|
|
||||||
javafx.concurrent, \
|
|
||||||
javafx.css, \
|
|
||||||
javafx.embed.swing, \
|
|
||||||
javafx.embed.swt, \
|
|
||||||
javafx.event, \
|
|
||||||
javafx.fxml, \
|
|
||||||
javafx.geometry, \
|
|
||||||
javafx.print, \
|
|
||||||
javafx.scene, \
|
|
||||||
javafx.scene.canvas, \
|
|
||||||
javafx.scene.chart, \
|
|
||||||
javafx.scene.control, \
|
|
||||||
javafx.scene.control.cell, \
|
|
||||||
javafx.scene.effect, \
|
|
||||||
javafx.scene.image, \
|
|
||||||
javafx.scene.input, \
|
|
||||||
javafx.scene.layout, \
|
|
||||||
javafx.scene.media, \
|
|
||||||
javafx.scene.paint, \
|
|
||||||
javafx.scene.shape, \
|
|
||||||
javafx.scene.text, \
|
|
||||||
javafx.scene.transform, \
|
|
||||||
javafx.scene.web, \
|
|
||||||
javafx.stage, \
|
|
||||||
javafx.util, \
|
|
||||||
javafx.util.converter, \
|
|
||||||
netscape.javascript, \
|
|
||||||
org.ietf.jgss, \
|
|
||||||
org.omg.CORBA, \
|
|
||||||
org.omg.CORBA_2_3, \
|
|
||||||
org.omg.CORBA_2_3.portable, \
|
|
||||||
org.omg.CORBA.DynAnyPackage, \
|
|
||||||
org.omg.CORBA.ORBPackage, \
|
|
||||||
org.omg.CORBA.portable, \
|
|
||||||
org.omg.CORBA.TypeCodePackage, \
|
|
||||||
org.omg.CosNaming, \
|
|
||||||
org.omg.CosNaming.NamingContextExtPackage, \
|
|
||||||
org.omg.CosNaming.NamingContextPackage, \
|
|
||||||
org.omg.Dynamic, \
|
|
||||||
org.omg.DynamicAny, \
|
|
||||||
org.omg.DynamicAny.DynAnyFactoryPackage, \
|
|
||||||
org.omg.DynamicAny.DynAnyPackage, \
|
|
||||||
org.omg.IOP, \
|
|
||||||
org.omg.IOP.CodecFactoryPackage, \
|
|
||||||
org.omg.IOP.CodecPackage, \
|
|
||||||
org.omg.Messaging, \
|
|
||||||
org.omg.PortableInterceptor, \
|
|
||||||
org.omg.PortableInterceptor.ORBInitInfoPackage, \
|
|
||||||
org.omg.PortableServer, \
|
|
||||||
org.omg.PortableServer.CurrentPackage, \
|
|
||||||
org.omg.PortableServer.POAManagerPackage, \
|
|
||||||
org.omg.PortableServer.POAPackage, \
|
|
||||||
org.omg.PortableServer.portable, \
|
|
||||||
org.omg.PortableServer.ServantLocatorPackage, \
|
|
||||||
org.omg.SendingContext, \
|
|
||||||
org.omg.stub.java.rmi, \
|
|
||||||
org.omg.stub.javax.management.remote.rmi, \
|
|
||||||
org.w3c.dom, \
|
|
||||||
org.w3c.dom.bootstrap, \
|
|
||||||
org.w3c.dom.css, \
|
|
||||||
org.w3c.dom.events, \
|
|
||||||
org.w3c.dom.html, \
|
|
||||||
org.w3c.dom.ls, \
|
|
||||||
org.w3c.dom.ranges, \
|
|
||||||
org.w3c.dom.stylesheets, \
|
|
||||||
org.w3c.dom.traversal, \
|
|
||||||
org.w3c.dom.views, \
|
|
||||||
org.w3c.dom.xpath, \
|
|
||||||
org.xml.sax, \
|
|
||||||
org.xml.sax.ext, \
|
|
||||||
org.xml.sax.helpers, \
|
|
||||||
com.sun.nio.sctp, \
|
|
||||||
sun.nio.ch, \
|
|
||||||
com.sun.management
|
|
||||||
jre-10=${jre-9}
|
|
||||||
jre-11=${jre-10}
|
|
@ -1,68 +0,0 @@
|
|||||||
#
|
|
||||||
# This property stores the cluster groups for which the local node is member
|
|
||||||
#
|
|
||||||
groups = default
|
|
||||||
|
|
||||||
#
|
|
||||||
# Filtering of the bundles in the default cluster group
|
|
||||||
#
|
|
||||||
default.bundle.whitelist.inbound=*
|
|
||||||
default.bundle.whitelist.outbound=*
|
|
||||||
default.bundle.blacklist.inbound=none
|
|
||||||
default.bundle.blacklist.outbound=none
|
|
||||||
|
|
||||||
#
|
|
||||||
# Filtering of the configurations in the default cluster group
|
|
||||||
#
|
|
||||||
default.config.whitelist.inbound=*
|
|
||||||
default.config.whitelist.outbound=*
|
|
||||||
default.config.blacklist.inbound=org.apache.felix.fileinstall*, \
|
|
||||||
org.apache.karaf.management, \
|
|
||||||
org.apache.karaf.shell, \
|
|
||||||
org.ops4j.pax.web, \
|
|
||||||
org.apache.aries.transaction, \
|
|
||||||
org.ops4j.pax.logging, \
|
|
||||||
org.apache.karaf.cellar.node, \
|
|
||||||
org.apache.karaf.cellar.groups.cfg
|
|
||||||
default.config.blacklist.outbound=org.apache.felix.fileinstall*, \
|
|
||||||
org.apache.karaf.management, \
|
|
||||||
org.apache.karaf.shell, \
|
|
||||||
org.ops4j.pax.web, \
|
|
||||||
org.apache.aries.transaction, \
|
|
||||||
org.ops4j.pax.logging, \
|
|
||||||
org.apache.karaf.cellar.node, \
|
|
||||||
org.apache.karaf.cellar.groups.cfg
|
|
||||||
|
|
||||||
|
|
||||||
#
|
|
||||||
# Filtering of the features in the default cluster group
|
|
||||||
#
|
|
||||||
default.feature.whitelist.inbound=*
|
|
||||||
default.feature.whitelist.outbound=*
|
|
||||||
default.feature.blacklist.inbound=none
|
|
||||||
default.feature.blacklist.outbound=none
|
|
||||||
|
|
||||||
#
|
|
||||||
# The following properties define the behavior to use when the node joins the cluster (the usage of the bootstrap
|
|
||||||
# synchronizer), per cluster group and per resource.
|
|
||||||
# The following values are accepted:
|
|
||||||
# disabled: means that the synchronizer doesn't sync cluster group and node states
|
|
||||||
# cluster: the synchronizer retrieves the state from the cluster group first (pull first), and push the node the state
|
|
||||||
# to the cluster group after (push after)
|
|
||||||
# node: the synchronizer push the node state to the cluster group (push first), and pull the state from the cluster group
|
|
||||||
# after (pull after)
|
|
||||||
# clusterOnly: the cluster is the "master", the node only retrieves and applies the cluster group state, nothing is
|
|
||||||
# pushed to the cluster group
|
|
||||||
# nodeOnly: the node is the "master", the node pushes his state to the cluster group, nothing is pulled from the
|
|
||||||
# cluster group
|
|
||||||
#
|
|
||||||
default.bundle.sync = disabled
|
|
||||||
default.config.sync = disabled
|
|
||||||
default.feature.sync = disabled
|
|
||||||
default.obr.urls.sync = disabled
|
|
||||||
default.balanced.servlet.sync = disabled
|
|
||||||
|
|
||||||
default.event.blacklist.inbound = none
|
|
||||||
default.event.blacklist.outbound = none
|
|
||||||
default.event.whitelist.inbound = subscription
|
|
||||||
default.event.whitelist.outbound = subscription
|
|
@ -1,10 +0,0 @@
|
|||||||
dataSourceName=entaxy.esb.cache
|
|
||||||
osgi.jdbc.driver.name=PostgreSQL JDBC Driver
|
|
||||||
serverName=db-postgres
|
|
||||||
portNumber=5432
|
|
||||||
databaseName=cache
|
|
||||||
user=entaxy
|
|
||||||
password=entaxy
|
|
||||||
pool=dbcp2
|
|
||||||
xa=true
|
|
||||||
jdbc.pool.maxTotal=100
|
|
@ -1,10 +0,0 @@
|
|||||||
dataSourceName=entaxy.esb.db_connector
|
|
||||||
osgi.jdbc.driver.name=PostgreSQL JDBC Driver
|
|
||||||
serverName=db-postgres
|
|
||||||
portNumber=5432
|
|
||||||
databaseName=db_connector_test
|
|
||||||
user=entaxy
|
|
||||||
password=entaxy
|
|
||||||
pool=dbcp2
|
|
||||||
xa=true
|
|
||||||
jdbc.pool.maxTotal=100
|
|
@ -1,10 +0,0 @@
|
|||||||
dataSourceName=entaxy.esb.storage
|
|
||||||
osgi.jdbc.driver.name=PostgreSQL JDBC Driver
|
|
||||||
serverName=db-postgres
|
|
||||||
portNumber=5432
|
|
||||||
databaseName=esb_entaxy
|
|
||||||
user=entaxy
|
|
||||||
password=entaxy
|
|
||||||
pool=dbcp2
|
|
||||||
xa=true
|
|
||||||
jdbc.pool.maxTotal=100
|
|
@ -1,20 +0,0 @@
|
|||||||
# адреса кластера брокеров сообщений, задаются:
|
|
||||||
# если tcp в скобках и через запятую: (tcp://192.168.122.81:61616,tcp://192.168.122.82:61616)
|
|
||||||
# если amqp с failover и в скобках через запятую: failover:(amqp://192.168.122.81:5672,amqp://192.168.122.82:5672)
|
|
||||||
common.jms.url=(tcp://broker:61616)
|
|
||||||
# логин для аутентификации в брокере сообщений
|
|
||||||
common.jms.username=entaxy
|
|
||||||
# пароль для аутентификации в брокере сообщений
|
|
||||||
common.jms.password=entaxy
|
|
||||||
# максимальное количество соединений
|
|
||||||
# подробнее можно почитать здесь: https://github.com/messaginghub/pooled-jms/blob/master/pooled-jms-docs/Configuration.md
|
|
||||||
common.jms.maxConnections=20
|
|
||||||
# максимальное количество сессий для каждого соединения
|
|
||||||
# подробнее можно почитать здесь: https://github.com/messaginghub/pooled-jms/blob/master/pooled-jms-docs/Configuration.md
|
|
||||||
common.jms.maxSessionsPerConnection=100
|
|
||||||
|
|
||||||
# наименование драйвера для инициализации фабрики планировщика quartz
|
|
||||||
org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.PostgreSQLDelegate
|
|
||||||
|
|
||||||
# название очереди, через которую ходят большие пакеты и файлы
|
|
||||||
common.bridge.file.queue.name=file.queue
|
|
@ -1,58 +0,0 @@
|
|||||||
# имя локальной шины(<node_name>)
|
|
||||||
jms.local=test1
|
|
||||||
# значение true - мост текущего узла работает в пассивном режиме,
|
|
||||||
# т.е. сообщения для соответствующего удалённого узла складываются в очередь на локальном брокере,
|
|
||||||
# из которой уже читает подключаемый узел (локальный брокер должен быть доступен для соединения)
|
|
||||||
# По умолчанию false - активный режим, запись сообщения идёт сразу в очередь на удалённом брокере,
|
|
||||||
# подключаемого узла (брокеры по обе стороны моста должны быть доступны)
|
|
||||||
jms.local.master=false
|
|
||||||
# имена удаленных шин, задается через запятую(<node_name>,<node_name>)
|
|
||||||
jms.remote.list=test2
|
|
||||||
|
|
||||||
# адреса брокера, задаются чеерез запятую(jms.url.<node_name>)
|
|
||||||
jms.url.test1=broker:61616
|
|
||||||
# логин для подключения к брокеру(jms.username.<node_name>)
|
|
||||||
jms.username.test1=entaxy
|
|
||||||
# пароль для подключения к брокеру(jms.password.<node_name>)
|
|
||||||
jms.password.test1=entaxy
|
|
||||||
# протокол для передачи сообщений внутри шины(jms.protocol.inner.esb.<node_name>)
|
|
||||||
# для корректной работы синхронного режима передачи сообщений: необходимо следить
|
|
||||||
# за одинаковым значением данного параметра в мосту и в самой шине(ru.entaxy.esb.cfg)
|
|
||||||
# возможные значения tcp, amqp
|
|
||||||
jms.protocol.inner.esb.test1=tcp
|
|
||||||
# протокол для передачи сообщений между шинами(jms.protocol.bridge.esb.<node_name>)
|
|
||||||
# для корректной работы синхронного режима передачи сообщений: необходимо следить
|
|
||||||
# за одинаковым значением данного параметра во всех подключенных шинах
|
|
||||||
# возможные значения tcp, amqp
|
|
||||||
jms.protocol.bridge.test1=amqp
|
|
||||||
|
|
||||||
# адреса брокера, задаются чеерез запятую(jms.url.<node_name>)
|
|
||||||
jms.url.test2=broker:61616
|
|
||||||
# логин для подключения к брокеру(jms.username.<node_name>)
|
|
||||||
jms.username.test2=entaxy
|
|
||||||
# пароль для подключения к брокеру(jms.password.<node_name>)
|
|
||||||
jms.password.test2=entaxy
|
|
||||||
# jms.master.<node_name> - выставляем в true, когда соответствующий узел настроен в пассивный режим,
|
|
||||||
# т.е. для него jms.local.master = true (брокер должен быть доступен для соединения)
|
|
||||||
jms.master.test2=true
|
|
||||||
# протокол для передачи сообщений внутри шины(jms.protocol.inner.esb.<node_name>)
|
|
||||||
# для корректной работы синхронного режима передачи сообщений: необходимо следить
|
|
||||||
# за одинаковым значением данного параметра в мосту и в самой шине(ru.entaxy.esb.cfg)
|
|
||||||
# возможные значения tcp, amqp
|
|
||||||
jms.protocol.inner.esb.test2=tcp
|
|
||||||
# протокол для передачи сообщений между шинами(jms.protocol.bridge.esb.<node_name>)
|
|
||||||
# для корректной работы синхронного режима передачи сообщений: необходимо следить
|
|
||||||
# за одинаковым значением данного параметра во всех подключенных шинах
|
|
||||||
# возможные значения tcp, amqp
|
|
||||||
jms.protocol.bridge.test2=amqp
|
|
||||||
|
|
||||||
# максимальное колчичество попыток отправить сообщение в очередь
|
|
||||||
# почитать подробнее можно в https://camel.apache.org/components/latest/eips/dead-letter-channel.html#deadLetterChannel-Redelivery
|
|
||||||
redelivery.maximumRedeliveries=-1
|
|
||||||
# время между попытками отправить сообщение в очередь
|
|
||||||
redelivery.redeliveryDelay=5000
|
|
||||||
# экспоненциальный рост времени между попытками отпрвки сообщений в очередь
|
|
||||||
redelivery.useExponentialBackOff=true
|
|
||||||
|
|
||||||
queue.sender.concurrentConsumers=1
|
|
||||||
queue.receiver.concurrentConsumers=1
|
|
@ -1,3 +0,0 @@
|
|||||||
FROM postgres
|
|
||||||
|
|
||||||
COPY create-db.sql /docker-entrypoint-initdb.d/
|
|
@ -1,4 +0,0 @@
|
|||||||
CREATE DATABASE esb_entaxy;
|
|
||||||
GRANT ALL PRIVILEGES ON DATABASE esb_entaxy TO entaxy;
|
|
||||||
CREATE DATABASE db_connector_test;
|
|
||||||
GRANT ALL PRIVILEGES ON DATABASE db_connector_test TO entaxy;
|
|
@ -1,3 +0,0 @@
|
|||||||
FROM dzikoysk/reposilite:2.9.23
|
|
||||||
|
|
||||||
COPY tokens.dat /app/data
|
|
@ -1,6 +0,0 @@
|
|||||||
!!org.panda_lang.reposilite.auth.TokenCollection
|
|
||||||
"tokens":
|
|
||||||
- "alias": "admin"
|
|
||||||
"path": "/"
|
|
||||||
"permissions": "m"
|
|
||||||
"token": "$2a$10$Xrurah6y4IOijq9EtFlAIe2wlhlUScggEBS88DriZDM9MCrAGwqdS"
|
|
Before Width: | Height: | Size: 51 KiB |
5
documentation/_styles/font-awesome.min.css
vendored
Before Width: | Height: | Size: 60 KiB |
@ -1,203 +0,0 @@
|
|||||||
= План создания коннектора
|
|
||||||
|
|
||||||
Для создания полноценного коннектора необходимо создать bundle с такой структурой:
|
|
||||||
|
|
||||||
. _src/main/resource/template/<название endpoint>-in-connector.ftl_
|
|
||||||
. _src/main/resource/template/<название endpoint>-out-connector.ftl_
|
|
||||||
. _src/main/resource/OSGI-INF/blueprint/camel-context.xml_
|
|
||||||
. _pom.xml_
|
|
||||||
|
|
||||||
== Создание шаблона входного коннектора(in-connector)
|
|
||||||
|
|
||||||
_Входной коннектор_ - это коннектор, который получает сообщения из вне Entaxy.
|
|
||||||
|
|
||||||
_Шаблон входного коннектора_ - ftl файл, на основе которого шина будет создавать индивидуальные входные коннекторы для каждой системы, с помощью подстановки параметров, полученных от пользователя.
|
|
||||||
|
|
||||||
Пример созданного шаблона, где название endpoint - _example_:
|
|
||||||
_src/main/resource/template/example-in-connector.ftl_
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
|
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
||||||
xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 https://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd">
|
|
||||||
|
|
||||||
<bean id="inConnector" class="ru.entaxy.esb.system.profile.commons.connectors.in.DirectVMInConnectorImpl">
|
|
||||||
<property name="endpointName" value="example"/>
|
|
||||||
<property name="systemName" value="[=systemName]"/>
|
|
||||||
</bean>
|
|
||||||
<service ref="inConnector" auto-export="interfaces">
|
|
||||||
<service-properties>
|
|
||||||
<entry key="endpointName" value="example"/>
|
|
||||||
<entry key="systemName" value="[=systemName]"/>
|
|
||||||
</service-properties>
|
|
||||||
</service>
|
|
||||||
|
|
||||||
<camelContext id="example-in-connector-[=systemName]-context" xmlns="http://camel.apache.org/schema/blueprint">
|
|
||||||
<route id="example-[=systemName]-connector">
|
|
||||||
<from uri="direct-vm:example-in-connector-[=systemName]"/>
|
|
||||||
<setHeader name="ESB.Endpoint.Name">
|
|
||||||
<constant>example</constant>
|
|
||||||
</setHeader>
|
|
||||||
<to uri="direct-vm:profile-[=systemName]-exit-dispatcher"/>
|
|
||||||
</route>
|
|
||||||
</camelContext>
|
|
||||||
|
|
||||||
</blueprint>
|
|
||||||
----
|
|
||||||
|
|
||||||
Создание и публикация бина: для связи коннектора с профилем, возможности получить весь список коннекторов определенного типа.
|
|
||||||
[source, xml]
|
|
||||||
----
|
|
||||||
<bean id="inConnector" class="ru.entaxy.esb.system.profile.commons.connectors.in.DirectVMInConnectorImpl">
|
|
||||||
<property name="endpointName" value="example"/>
|
|
||||||
<property name="systemName" value="[=systemName]"/>
|
|
||||||
</bean>
|
|
||||||
<service ref="inConnector" auto-export="interfaces">
|
|
||||||
<service-properties>
|
|
||||||
<entry key="endpointName" value="example"/>
|
|
||||||
<entry key="systemName" value="[=systemName]"/>
|
|
||||||
</service-properties>
|
|
||||||
</service>
|
|
||||||
----
|
|
||||||
|
|
||||||
Маршрут коннектора, который полученные сообщения отправляет на выходную точку профиля, к которой прикрепляется сгенерированный пользователем route.
|
|
||||||
[source, xml]
|
|
||||||
----
|
|
||||||
<route id="example-[=systemName]-in-connector">
|
|
||||||
<from uri="direct-vm:example-in-connector-[=systemName]"/>
|
|
||||||
<setHeader name="ESB.Endpoint.Name">
|
|
||||||
<constant>example</constant>
|
|
||||||
</setHeader>
|
|
||||||
<to uri="direct-vm:profile-[=systemName]-exit-dispatcher"/>
|
|
||||||
</route>
|
|
||||||
----
|
|
||||||
|
|
||||||
Начало маршрута входного коннектора может начинаться не с _"direct-vm:example-in-connector-[=systemName]"_, а получать сообщения, например, через определенную папку на диске.
|
|
||||||
|
|
||||||
Для того чтобы отправить сообщение в коннектор необходимо, получить все коннекторы определенного типа (example):
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<bean id="inConnectorRegistry" class="ru.entaxy.esb.system.profile.commons.ConnectorRegistry" activation="eager"/>
|
|
||||||
|
|
||||||
<reference-list id="inConnector" interface="ru.entaxy.esb.system.profile.commons.connectors.in.InConnector"
|
|
||||||
filter="(endpointName=example)" availability="optional">
|
|
||||||
<reference-listener ref="inConnectorRegistry"
|
|
||||||
bind-method="register" unbind-method="unregister"/>
|
|
||||||
</reference-list>
|
|
||||||
----
|
|
||||||
|
|
||||||
И отправлять сообщения с помощью:
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<bean ref="inConnectorRegistry" method="send"/>
|
|
||||||
----
|
|
||||||
|
|
||||||
== Создание шаблона выходного коннектора(out-connector)
|
|
||||||
|
|
||||||
_Выходной коннектор_ - это коннектор, который отправляет сообщения из Entaxy в систему (вне Entaxy).
|
|
||||||
|
|
||||||
_Шаблон выходного коннектора_ - ftl файл, на основе которого шина будет создавать индивидуальные выходные коннекторы для каждой системы, с помощью подстановки параметров, полученных от пользователя.
|
|
||||||
|
|
||||||
Пример созданного шаблона, где название endpoint - _example_:
|
|
||||||
_src/main/resource/template/example-out-connector.ftl_
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
|
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
||||||
xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 https://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd">
|
|
||||||
|
|
||||||
<reference id="pooledConnectionFactory" interface="javax.jms.ConnectionFactory"/>
|
|
||||||
<bean id="jms" class="org.apache.camel.component.jms.JmsComponent">
|
|
||||||
<property name="connectionFactory" ref="pooledConnectionFactory"/>
|
|
||||||
</bean>
|
|
||||||
|
|
||||||
<bean id="exampleConnector" class="ru.entaxy.esb.system.profile.commons.connectors.out.DirectVMOutConnectorImpl">
|
|
||||||
<property name="endpointName" value="example"/>
|
|
||||||
<property name="systemName" value="[=systemName]"/>
|
|
||||||
</bean>
|
|
||||||
<service ref="exampleConnector" auto-export="interfaces">
|
|
||||||
<service-properties>
|
|
||||||
<entry key="endpointName" value="example"/>
|
|
||||||
<entry key="systemName" value="[=systemName]"/>
|
|
||||||
</service-properties>
|
|
||||||
</service>
|
|
||||||
|
|
||||||
<camelContext id="example-out-connector-[=systemName]-context" xmlns="http://camel.apache.org/schema/blueprint"
|
|
||||||
errorHandlerRef="commonErrorHandler">
|
|
||||||
|
|
||||||
<errorHandler id="commonErrorHandler" redeliveryPolicyRef="noRedelivery"
|
|
||||||
type="DeadLetterChannel" deadLetterUri="direct-vm:commonErrorEndpoint"/>
|
|
||||||
<redeliveryPolicyProfile id="noRedelivery" disableRedelivery="true"/>
|
|
||||||
|
|
||||||
<route id="example-out-connector">
|
|
||||||
<from uri="direct-vm:example-out-connector-[=systemName]"/>
|
|
||||||
<log message="Message ${headers} send to system" loggingLevel="TRACE"/>
|
|
||||||
<toD uri="jms:queue:example-[=systemName]?exchangePattern=InOnly&priority=${headers.SOAPJMS_HEADER_priority}"/>
|
|
||||||
</route>
|
|
||||||
</camelContext>
|
|
||||||
|
|
||||||
</blueprint>
|
|
||||||
----
|
|
||||||
|
|
||||||
Создание и публикация бина: для связи коннектора с профилем, возможности получить весь список коннекторов определенного типа.
|
|
||||||
[source, xml]
|
|
||||||
----
|
|
||||||
<bean id="exampleOutConnector" class="ru.entaxy.esb.system.profile.commons.connectors.out.DirectVMOutConnectorImpl">
|
|
||||||
<property name="endpointName" value="example"/>
|
|
||||||
<property name="systemName" value="[=systemName]"/>
|
|
||||||
</bean>
|
|
||||||
<service ref="exampleOutConnector" auto-export="interfaces">
|
|
||||||
<service-properties>
|
|
||||||
<entry key="endpointName" value="example"/>
|
|
||||||
<entry key="systemName" value="[=systemName]"/>
|
|
||||||
</service-properties>
|
|
||||||
</service>
|
|
||||||
----
|
|
||||||
|
|
||||||
Маршрут выходного коннектора *должен* стартовать с:
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<from uri="direct-vm:example-out-connector-[=systemName]"/>
|
|
||||||
----
|
|
||||||
|
|
||||||
== Публикация созданных шаблонов
|
|
||||||
|
|
||||||
Необходимо опубликовать osgi сервис с информацией об созданных шаблонах для того, чтобы механизм создания коннекторов увидел их.
|
|
||||||
|
|
||||||
_src/main/resource/OSGI-INF/blueprint/camel-context.xml_
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
|
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
||||||
xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 https://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd">
|
|
||||||
|
|
||||||
<!--template in connector-->
|
|
||||||
<bean id="inTemplate" class="ru.entaxy.esb.system.core.template.TemplateImpl">
|
|
||||||
<property name="bundleContext" ref="blueprintBundleContext"/>
|
|
||||||
<property name="templateName" value="example-in-connector"/>
|
|
||||||
<property name="params">
|
|
||||||
<map>
|
|
||||||
<entry key="param" value="false"/>
|
|
||||||
</map>
|
|
||||||
</property>
|
|
||||||
</bean>
|
|
||||||
<service interface="ru.entaxy.esb.system.core.template.Template" ref="inTemplate"/>
|
|
||||||
|
|
||||||
<!--template out connector-->
|
|
||||||
<bean id="outTemplate" class="ru.entaxy.esb.system.core.template.TemplateImpl">
|
|
||||||
<property name="bundleContext" ref="blueprintBundleContext"/>
|
|
||||||
<property name="templateName" value="example-out-connector"/>
|
|
||||||
<property name="params">
|
|
||||||
<map>
|
|
||||||
<entry key="param" value="false"/>
|
|
||||||
</map>
|
|
||||||
</property>
|
|
||||||
</bean>
|
|
||||||
<service interface="ru.entaxy.esb.system.core.template.Template" ref="outTemplate"/>
|
|
||||||
</blueprint>
|
|
||||||
----
|
|
||||||
|
|
||||||
xref:../core/system-managment/Users-manual-System-management.adoc[Информация о создании коннекторов со стороны пользователя]
|
|
Before Width: | Height: | Size: 169 KiB |
@ -1,86 +0,0 @@
|
|||||||
= Используемые служебные заголовки Entaxy
|
|
||||||
|
|
||||||
ENTAXY_ - глобальный формат заголовков, который используется не только в рамках коннектора. Используется во всём процессе прохождения пакета, так же может быть принят извне.
|
|
||||||
|
|
||||||
NTX_ - внутренний формат заголовков в конкретном коннекторе, носит служебный характер.
|
|
||||||
Например _NTX_Origin_ - служит для идентификации имени контура шины при прохождении пакета через мост.
|
|
||||||
|
|
||||||
|===
|
|
||||||
|Имя заголовка |Описание |Возможные значения |Обязательность
|
|
||||||
|
|
||||||
|X-ForwardedUser
|
|
||||||
|логин аккаунта, проставляется с помощью _nginx_
|
|
||||||
|
|
|
||||||
|true
|
|
||||||
|
|
||||||
|X-ForwardedUserId
|
|
||||||
|внутренний id аккаунта, проставляется с помощью _ru.entaxy.esb.system.auth.basic.interceptor.SystemInterceptor_
|
|
||||||
|
|
|
||||||
|true
|
|
||||||
|
|
||||||
|X-SystemName
|
|
||||||
|имя системы, полученное при авторизации с помощью _ru.entaxy.esb.system.auth.basic.interceptor.SystemInterceptor_
|
|
||||||
|
|
|
||||||
|true
|
|
||||||
|
|
||||||
|X-SystemUuid
|
|
||||||
|uuid системы, полученное при авторизации с помощью _ru.entaxy.esb.system.auth.basic.interceptor.SystemInterceptor_
|
|
||||||
|
|
|
||||||
|true
|
|
||||||
|
|
||||||
|X-SystemId
|
|
||||||
|внутренний id системы, полученное при авторизации с помощью _ru.entaxy.esb.system.auth.basic.interceptor.SystemInterceptor_
|
|
||||||
|
|
|
||||||
|true
|
|
||||||
|
|
||||||
|ENTAXY_EndpointName
|
|
||||||
|Имя коннектора, через который было получено сообщение
|
|
||||||
|US-SOAP, US-File, US-JMS, ....
|
|
||||||
|true
|
|
||||||
|
|
||||||
|ENTAXY_ConnectorType
|
|
||||||
|Тип коннектора, через который было получено сообщение
|
|
||||||
|uniform-service
|
|
||||||
|true
|
|
||||||
|
|
||||||
|ENTAXY_ConnectorName
|
|
||||||
|Имя коннектора, через который было получено сообщение
|
|
||||||
|
|
|
||||||
|true
|
|
||||||
|
|
||||||
|ENTAXY_Source
|
|
||||||
|Имя отправителя
|
|
||||||
|
|
|
||||||
|true
|
|
||||||
|
|
||||||
|ENTAXY_SourceType
|
|
||||||
|Tип отправителя
|
|
||||||
|system.name, system-group.name, queue.name, topic.name
|
|
||||||
|false
|
|
||||||
|
|
||||||
|ENTAXY_Destination
|
|
||||||
|Имя получателя
|
|
||||||
|
|
|
||||||
|false
|
|
||||||
|
|
||||||
|ENTAXY_DestinationType
|
|
||||||
|Tип получателя
|
|
||||||
|system.name, system-group.name, queue.name, topic.name
|
|
||||||
|false
|
|
||||||
|
|
||||||
|ENTAXY_Priority
|
|
||||||
|Приоритет сообщения
|
|
||||||
|0-9
|
|
||||||
|false
|
|
||||||
|
|
||||||
|ENTAXY_ContentType
|
|
||||||
|Тип сообщения
|
|
||||||
|application/xml, message/external-body
|
|
||||||
|false
|
|
||||||
|
|
||||||
|ENTAXY_EmptyContent
|
|
||||||
|Является ли сообщение пустым
|
|
||||||
|true; false
|
|
||||||
|false
|
|
||||||
|===
|
|
||||||
|
|
Before Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 44 KiB |
@ -1,76 +0,0 @@
|
|||||||
= Активный режим коннектора
|
|
||||||
|
|
||||||
image::US-active.png[]
|
|
||||||
|
|
||||||
== Сервис для отладки активного коннектора
|
|
||||||
|
|
||||||
Поднимается на endpoint _/active_connector_test_consumer_
|
|
||||||
при выставленной настройке _active.mode.dev=true_ в файле конфигураций _uniform.service.support.cfg_
|
|
||||||
|
|
||||||
|
|
||||||
== Requests Examples
|
|
||||||
|
|
||||||
POST http://192.168.122.83:8181/cxf/uniform-exchange
|
|
||||||
|
|
||||||
==== SEND MESSAGE:
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://www.entaxy.ru/ExchangeTypes/1.0">
|
|
||||||
<soapenv:Header/>
|
|
||||||
<soapenv:Body>
|
|
||||||
<ns:packets>
|
|
||||||
<ns:packet>
|
|
||||||
<ns:header>
|
|
||||||
<ns:messageUUID>b7e6aab7-8f02-443c-8f67-e2d638dd4da0</ns:messageUUID>
|
|
||||||
<ns:source>
|
|
||||||
<ns:id>s1</ns:id>
|
|
||||||
</ns:source>
|
|
||||||
<ns:destination>
|
|
||||||
<ns:id>s2</ns:id>
|
|
||||||
</ns:destination>
|
|
||||||
</ns:header>
|
|
||||||
<ns:content>
|
|
||||||
<test>
|
|
||||||
<hello_world/>
|
|
||||||
</test>
|
|
||||||
</ns:content>
|
|
||||||
</ns:packet>
|
|
||||||
</ns:packets>
|
|
||||||
</soapenv:Body>
|
|
||||||
</soapenv:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
==== GET MESSAGE:
|
|
||||||
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://www.entaxy.ru/ExchangeTypes/1.0">
|
|
||||||
<soapenv:Header/>
|
|
||||||
<soapenv:Body>
|
|
||||||
<ns:request>
|
|
||||||
<ns:destination>
|
|
||||||
<ns:id>s2</ns:id>
|
|
||||||
<ns:type>system.name</ns:type>
|
|
||||||
</ns:destination>
|
|
||||||
<ns:limitCount>1</ns:limitCount>
|
|
||||||
<ns:limitSize>0</ns:limitSize>
|
|
||||||
</ns:request>
|
|
||||||
</soapenv:Body>
|
|
||||||
</soapenv:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
==== ACK MESSAGE:
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://www.entaxy.ru/ExchangeTypes/1.0">
|
|
||||||
<soapenv:Header/>
|
|
||||||
<soapenv:Body>
|
|
||||||
<ns:uuids>
|
|
||||||
<ns:uuid>{{message_uuid}}</ns:uuid>
|
|
||||||
</ns:uuids>
|
|
||||||
</soapenv:Body>
|
|
||||||
</soapenv:Envelope>
|
|
||||||
----
|
|
@ -1,35 +0,0 @@
|
|||||||
= IGNITE
|
|
||||||
|
|
||||||
IgniteAggregationRepository сделано на основе JdbsAggregationRepository
|
|
||||||
документация https://help.talend.com/reader/Uc2IlRuFVfGrjaFPdRI7kA/fBdqK2kf6iIkLHQf9nLh6g
|
|
||||||
|
|
||||||
Есть некоторые внутренние баги karaf, которые не позволяют установить некоторые ignite фичи в караф
|
|
||||||
https://github.com/apache/ignite/blob/fd921a233d35408883695419b6f9979ac674d1b9/modules/osgi-karaf/src/main/resources/features.xml#L87
|
|
||||||
|
|
||||||
В карафе поднимается ignite, с рабочей директорией, прописанной в ru.entaxy.esb.ignite.cfg,
|
|
||||||
в параметре ignite.work.directory.path. Это место, где игнайт
|
|
||||||
создает для себя все, что нужно, и будет хранить данные.
|
|
||||||
|
|
||||||
Ignite настроен с сохранением персисетнтности данных(сохранением их на диск) и
|
|
||||||
созданием реплицации(бэкапов) на других узлах кластера.(при потере одной ноды,
|
|
||||||
другие восстановят данные, которе хранились на текущем узле)
|
|
||||||
|
|
||||||
IGNITE_QUIET=false - параметр необходимый для того, чтобы игнайт не писал информацию о себе в лог,
|
|
||||||
для того что бы параметр применился, необходимо выставить setGridLogger,
|
|
||||||
смогла установить в караф только JclLogger.
|
|
||||||
|
|
||||||
**AggregationProcessor**
|
|
||||||
|
|
||||||
AggregationProcessor стандартный, не расчитан на работу в кластере из-за чего пришлось вытаскивать исходники
|
|
||||||
и редактировать сам процессор.(AggregationProcessorWithRestoreTimeout)
|
|
||||||
Т к теперь AggregationProcessor вызывается как bean, а не как стандартный камеловский процессор,
|
|
||||||
то процесс старта и остановки происходит в отличном порядке.
|
|
||||||
|
|
||||||
Для работы к кластере:
|
|
||||||
- добавлен механизм восстановления работы таймаутов на других нодах,
|
|
||||||
- отредактирован механизм удаления сообщения из репозитория(возникало состояние гонки и появлялись дубликаты),
|
|
||||||
- исправлен механизм продолжения работы с "застрявшими" сообщениями (recoverTask из таблицы _completed)
|
|
||||||
- добавлен безопасный механизм забора сообщений из очереди(восстановление сообщения в очереди, если не пришло подтверждение)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,35 +0,0 @@
|
|||||||
== Работа с artemis, проверка сообщений
|
|
||||||
|
|
||||||
Консоль управления artemis расположена на _http://localhost:8161/console/login_
|
|
||||||
|
|
||||||
* Необходимо аутентифицироваться в artemis(где логин и пароль по умолчанию entaxy/entaxy)
|
|
||||||
|
|
||||||
image::img/image_2021-09-13_21-39-23.png[]
|
|
||||||
|
|
||||||
* После успешного прохождения аутентификации, консоль artemis будет выглядеть так:
|
|
||||||
|
|
||||||
image::img/image_2021-09-13_21-40-11.png[]
|
|
||||||
|
|
||||||
* В левой части интерфейса находятся созданные очереди artemis, где необходимо выбрать очередь, как и показано на скрине:
|
|
||||||
|
|
||||||
image::img/image_2021-09-13_21-40-38.png[]
|
|
||||||
|
|
||||||
* В верхней части artemis необходимо выбрать раздел _Browse_, который отображает находящиеся в очереди сообщения:
|
|
||||||
|
|
||||||
image::img/image_2021-09-13_21-41-56.png[]
|
|
||||||
|
|
||||||
* Выбрав сообщение, отобразится информация о сообщении:
|
|
||||||
|
|
||||||
а) тело сообщения
|
|
||||||
|
|
||||||
image::img/image_2021-09-13_21-42-24.png[]
|
|
||||||
|
|
||||||
б) заголовки сообщения
|
|
||||||
|
|
||||||
image::img/image_2021-09-13_21-42-53.png[]
|
|
||||||
|
|
||||||
* После того как сообщение было прочитано из entaxy, и если оно было там одно, то очередь автоматически удалится из artemis. Иначе сообщение будет забрано из очереди.
|
|
||||||
|
|
||||||
image::img/image_2021-09-13_21-43-15.png[]
|
|
||||||
|
|
||||||
|
|
Before Width: | Height: | Size: 273 KiB |
Before Width: | Height: | Size: 129 KiB |
Before Width: | Height: | Size: 155 KiB |
Before Width: | Height: | Size: 124 KiB |
Before Width: | Height: | Size: 94 KiB |
Before Width: | Height: | Size: 192 KiB |
Before Width: | Height: | Size: 128 KiB |
Before Width: | Height: | Size: 53 KiB |
Before Width: | Height: | Size: 30 KiB |
Before Width: | Height: | Size: 29 KiB |
Before Width: | Height: | Size: 28 KiB |
Before Width: | Height: | Size: 37 KiB |
Before Width: | Height: | Size: 51 KiB |
Before Width: | Height: | Size: 50 KiB |
Before Width: | Height: | Size: 78 KiB |
Before Width: | Height: | Size: 81 KiB |
Before Width: | Height: | Size: 64 KiB |
Before Width: | Height: | Size: 56 KiB |
Before Width: | Height: | Size: 57 KiB |
Before Width: | Height: | Size: 78 KiB |
@ -1,89 +0,0 @@
|
|||||||
= Инструкция для работы с шиной через универсальный коннектор
|
|
||||||
|
|
||||||
=== Преднастройка окружения
|
|
||||||
|
|
||||||
. Скачать и установить postman(https://www.postman.com/downloads/).
|
|
||||||
. Импортировать коллекцию запросов и окружение в postman
|
|
||||||
|
|
||||||
Далее показано как импортироваться коллекцию запросов и окружение в postman Version 8.11.1, если стоит другая версия и возникли сложности с инструкцией, то обратитесь к документации postman(https://learning.postman.com/docs/getting-started/importing-and-exporting-data/).
|
|
||||||
|
|
||||||
=== Импорт коллекции запросов и окружения в postman
|
|
||||||
|
|
||||||
* Если вы на домашней странице postman, то нажмите _Import file_, как показано ниже на скрине.
|
|
||||||
|
|
||||||
image::img/photo5298499320133302025.jpg[]
|
|
||||||
|
|
||||||
* Если вы не на домашней странице postman, то нажмите _File_, _Import..._, как показано ниже на скрине.
|
|
||||||
|
|
||||||
image::img/photo5298499320133302031.jpg[]
|
|
||||||
|
|
||||||
* Далее откроется окно с импортом файла, где нужно нажать на _Upload Files_ и импортировать файлы, по одному или сразу оба(xref:postman/uniform-connector.postman_environment.json[Окружение], xref:postman/uniform-connector.postman_collection.json[Коллекция запросов])
|
|
||||||
|
|
||||||
image::img/photo5298499320133302028.jpg[]
|
|
||||||
|
|
||||||
* Или можно импортировать сразу всю папку с файлами(xref:postman/uniform-connector.postman_environment.json[Окружение], xref:postman/uniform-connector.postman_collection.json[Коллекция запросов])
|
|
||||||
|
|
||||||
image::img/photo5298499320133302034.jpg[]
|
|
||||||
|
|
||||||
image::img/photo5298499320133302035.jpg[]
|
|
||||||
|
|
||||||
* Далее мы увидим импортированную коллекцию запросов слева и необходимо выбрать импортированное ранее окружение
|
|
||||||
|
|
||||||
image::img/photo5298499320133302038.jpg[]
|
|
||||||
image::img/photo5298499320133302039.jpg[]
|
|
||||||
|
|
||||||
* Есть возможность настраивать параметры запросов, документация на данную тему(https://learning.postman.com/docs/sending-requests/managing-environments/)
|
|
||||||
|
|
||||||
image::img/photo5298499320133302041.jpg[]
|
|
||||||
|
|
||||||
* Коллекция запросов и окружение были успешно импортированы в postman и готовы к использованию, можно запустить все запросы в автоматическом режиме или запускать их в ручную по очереди
|
|
||||||
|
|
||||||
=== Запуск всех запросов в автоматическом режиме
|
|
||||||
|
|
||||||
* Необходимо нажать на _Run Collection_ в меню коллекции, как показано ниже
|
|
||||||
|
|
||||||
image::img/photo5298499320133302042.jpg[]
|
|
||||||
image::img/photo5298499320133302043.jpg[]
|
|
||||||
|
|
||||||
* Можно увидеть успешное прохождение коллекции. При успешном прохождении коллекции тестов шина будет очищена. Если не подразумевалось данное поведение, то необходимо снять выделение с запросов(_Remove profile system1_, _Remove profile system2_, _Remove Account system1_, _Remove Account system2_)
|
|
||||||
|
|
||||||
image::img/photo5298499320133302044.jpg[]
|
|
||||||
image::img/photo5298499320133302046.jpg[]
|
|
||||||
|
|
||||||
=== Запуск запросов в ручную по очереди
|
|
||||||
|
|
||||||
* Для запуска конкретного запроса нужно нажать на него в меню слева, затем откроется меню редактирования запроса, где можно посмотреть все параметры запроса и настроить его как необходимо и нажимая на кнопку _Send_ запрос отправляется на шину
|
|
||||||
|
|
||||||
image::img/photo5298499320133302047.jpg[]
|
|
||||||
|
|
||||||
=== Описание окружения
|
|
||||||
|
|
||||||
... _base_url_ - если запросы будут запускаться с машины находящейся с шиной, то данный параметр не нужно менять(http://localhost:8181/cxf), иначе заменить localhost:8181 на необходимый
|
|
||||||
... _system1_id_ - имя/идентификатор системы, то как будет представлена система в шине(по умолчанию s1)
|
|
||||||
... _system1Login_ - логин системы, то как будет аутентифицироваться система в шине(по умолчанию s1)
|
|
||||||
... _system1Password_ - пароль системы, то как будет аутентифицироваться система в шине(по умолчанию s1)
|
|
||||||
... _system2_id_ - имя/идентификатор системы, то как будет представлена система в шине(по умолчанию s1)
|
|
||||||
... _system2Login_ - логин системы, то как будет аутентифицироваться система в шине(по умолчанию s1)
|
|
||||||
... _system2Password_ - пароль системы, то как будет аутентифицироваться система в шине(по умолчанию s1)
|
|
||||||
... _adminLogin_ - админская учетная запись, для произведения настроек в шине(по умолчанию admin)
|
|
||||||
... _adminPassword_ - админская учетная запись, для произведения настроек в шине(по умолчанию admin)
|
|
||||||
|
|
||||||
=== Содержимое тестов
|
|
||||||
. Коллекция запросов содержит следующие шаги:
|
|
||||||
.. _Create profile system1_ - создание профиля системы 1, которая будет отправлять сообщения в шину
|
|
||||||
.. _Create profile system2_ - создание профиля системы 2
|
|
||||||
.. _Add Account system1_ - создание учетной записи для системы 1
|
|
||||||
.. _Add Account system2_ - создание учетной записи для системы 2
|
|
||||||
.. _Create uniform-service-in-connector_ - создание входящего коннектора к универсальному сервису для системы 1
|
|
||||||
.. _Create uniform-service-out-connector_ - создание исходящего коннектора к универсальному сервису для системы 1
|
|
||||||
.. _Create uniform-service-in-connector_ - создание входящего коннектора к универсальному сервису для системы 2
|
|
||||||
.. _Get profile system1_ - запросы для проверки на корректное создания профиля системы1 и коннекторов к нему(uniform-service-in-connector)
|
|
||||||
.. _Get profile system2_ - запросы для проверки на корректное создания профиля системы1 и коннекторов к нему(uniform-service-in-connector, uniform-service-out-connector)
|
|
||||||
.. _Create permission_ - создание разрешения для отправки сообщений из системы 1 в систему 2
|
|
||||||
.. _SEND_ - отправка тестового сообщения из системы 1 в систему 2 (если необходимо, то можно посмотреть как сообщение появилось в xref:artemis.adoc[artemis])
|
|
||||||
.. _GET_ - получение тестового сообщения из системы 1 системой 2(если необходимо, то можно посмотреть как сообщение было получено из xref:artemis.adoc[artemis])
|
|
||||||
.. _ACK_ - отправка подтверждения получения сообщения системы 2(иначе сообщение будет восстановлено)
|
|
||||||
.. _Remove profile system1_ - удаление из шины профиля системы 1 и всех связанных с ней коннекторов
|
|
||||||
.. _Remove profile system2_ - удаление из шины профиля системы 2 и всех связанных с ней коннекторов
|
|
||||||
.. _Remove Account system1_ - удаление учетной записи системы 1 из шины
|
|
||||||
.. _Remove Account system2_ - удаление учетной записи системы 2 из шины
|
|
@ -1,54 +0,0 @@
|
|||||||
{
|
|
||||||
"id": "527e5257-25b4-4246-ac5a-26b88e06eec8",
|
|
||||||
"name": "uniform-connector",
|
|
||||||
"values": [
|
|
||||||
{
|
|
||||||
"key": "base_url",
|
|
||||||
"value": "http://localhost:8181/cxf",
|
|
||||||
"enabled": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "system1_id",
|
|
||||||
"value": "s1",
|
|
||||||
"enabled": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "system2_id",
|
|
||||||
"value": "s2",
|
|
||||||
"enabled": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "adminLogin",
|
|
||||||
"value": "admin",
|
|
||||||
"enabled": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "adminPassword",
|
|
||||||
"value": "admin",
|
|
||||||
"enabled": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "system1Login",
|
|
||||||
"value": "s1",
|
|
||||||
"enabled": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "system1Password",
|
|
||||||
"value": "s1",
|
|
||||||
"enabled": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "system2Login",
|
|
||||||
"value": "s2",
|
|
||||||
"enabled": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "system2Password",
|
|
||||||
"value": "s2",
|
|
||||||
"enabled": true
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"_postman_variable_scope": "environment",
|
|
||||||
"_postman_exported_at": "2021-08-24T14:43:46.375Z",
|
|
||||||
"_postman_exported_using": "Postman/7.36.5"
|
|
||||||
}
|
|
@ -1,38 +0,0 @@
|
|||||||
= Универсальный сервис(US)
|
|
||||||
|
|
||||||
Универсальный сервис разработан для корректного и единообразного взаимодействия с _Entaxy_ из _1С интеграции_.
|
|
||||||
|
|
||||||
image::US.png[]
|
|
||||||
|
|
||||||
=== US endpoint
|
|
||||||
|
|
||||||
Универсальный сервис выставлен с помощью soap (может быть заменен на любой другой способ обмена сообщения, например rest, с сохранением схемы), в котором 3 метода _sendPackets_, _getPackets_ и _confirmPackets_. US endpoint включает в себя: выставленный soap сервис, проверку на существование коннектора и отправку в коннектор(что верно и для uniform-service-service-endpoint)
|
|
||||||
|
|
||||||
=== US connector
|
|
||||||
|
|
||||||
Коннектор занимается обработкой полученного пакета.
|
|
||||||
|
|
||||||
- _sendPackets_ - шина анализирует пакет, создавая служебную информацию(такую как имя системы отправителя, имя и тип получателя и т д) и отправляет в выходную точку профиля.
|
|
||||||
|
|
||||||
- _getPackets_ - шина делает проверку служебной информации(такую как имя системы отправителя, имя и тип получателя и т д) и забирает сообщение из очереди, дополнительно отправляя его в агрегатор. Агрегатор необходим для гарантированной доставки пакета, если в течение заданного таймаута (по умолчанию - 10 минут) не придет подтверждение, то пакет будет считаться не доставленным и будет восстановлен в очереди.
|
|
||||||
|
|
||||||
- _confirmPackets_ - шина делает проверку служебной информации(такую как имя системы отправителя, имя и тип получателя и т д), достает пакет из соответствующего источника (если оно есть) и отдает его системе, дополнительно отправляя в агрегатор, который если собирает пару(пакет и подтверждение) считает его доставленным и удаляет из шины.
|
|
||||||
|
|
||||||
_Агрегатор_ может хранить сообщения в ignite и базе данных, для переключения режима работы агрегатора необходимо установить необходимый параметр acknowledge.aggregation.repository (по умолчанию - jdbcAggregationRepository) в uniform.service.support.cfg
|
|
||||||
|
|
||||||
https://help.talend.com/r/Bejd_\~iSyuyc~nF9XIgDIw/fBdqK2kf6iIkLHQf9nLh6g[Информация по jdbcAggregationRepository]
|
|
||||||
|
|
||||||
xref:ignite.adoc[Информация по igniteAggregationRepository]
|
|
||||||
|
|
||||||
=== US support
|
|
||||||
|
|
||||||
Необходим как вспомогательный элемент. Содержит в себе: настройку агрегатора, маршруты работы агрегатора, маршрут связанный с отправкой в систему в активном режиме коннектора.
|
|
||||||
|
|
||||||
== Режимы универсального сервиса:
|
|
||||||
|
|
||||||
- _Пассивный_ выражен в поднятом на стороне шины сервисе, который "пассивно" ждет запроса от системы.
|
|
||||||
|
|
||||||
- _Активный_ выражен в поднятом на стороне системы сервисе, который с некоторой периодичностью (настраивается при создании коннектора, по умолчанию 1m) опрашивает шина на предмет подготовленных сообщений, и, отправляет полученные сообщения в систему как только они пришли.
|
|
||||||
|
|
||||||
xref:active-mode.adoc#_активный_режим_коннектора[Информация по активному режиму работы универсального сервиса]
|
|
||||||
|
|
@ -1,219 +0,0 @@
|
|||||||
= Общее описание Entaxy
|
|
||||||
|
|
||||||
=== Entaxy обеспечивает следующую функциональность:
|
|
||||||
|
|
||||||
. обеспечение доступа внешних систем к шине через опубликованные сервисы (SOAP, REST, прочее)
|
|
||||||
. поддержка синхронного и асинхронного способа вызова служб;
|
|
||||||
. использование защищённой шины, с гарантированной доставкой сообщений, поддерживающего транзакционную модель;
|
|
||||||
. статическая и алгоритмическая (условная, опирающаяся на значение передаваемых данных) маршрутизация сообщений;
|
|
||||||
. доступ к данным из сторонних информационных систем с помощью готовых или специально разработанных адаптеров;
|
|
||||||
. обработка и преобразование сообщений;
|
|
||||||
. отказоустойчивая конфигурация;
|
|
||||||
. разнообразные механизмы контроля и управления (аудиты, протоколирование);
|
|
||||||
. мониторинг данных и бизнес-процессов
|
|
||||||
|
|
||||||
=== Entaxy решает следующие задачи:
|
|
||||||
|
|
||||||
. обмен сообщениями/данными между приложениями и ИС
|
|
||||||
. организация точек доступа к услугам (сервисам) и данным
|
|
||||||
. унификация взаимодействия с внешними ИС
|
|
||||||
. мониторинг данных и бизнес-процессов
|
|
||||||
. снижение трудоемкости процесса сбора и агрегации информации
|
|
||||||
. повышение оперативности подготовки отчетов
|
|
||||||
. обеспечение автоматизированной проверки данных, используемых в процессе деятельности
|
|
||||||
|
|
||||||
=== Entaxy реализована на следующем наборе ПО:
|
|
||||||
|
|
||||||
- ОС: _Astra Linux 1.6 смоленск_ ?
|
|
||||||
- Программная платформа: _Java 11 (librca)_
|
|
||||||
- СУБД (предоставляется заказчиком): _MS SQL Server_
|
|
||||||
- СУБД (может использоваться): _PostgreSQL JDBC Driver_
|
|
||||||
- Платформа исполнения: _Apache Karaf 4.2.9_
|
|
||||||
- Платформа интеграции: _Apache Camel 3.4.4_
|
|
||||||
- Каркас реализации веб-сервисов: _Apache CXF 3.4.0_
|
|
||||||
- Брокер сообщений: _ActiveMQ Artemis 2.15_
|
|
||||||
- Система мониторинга (предоставляется заказчиком): _Zabbix, Grafana_
|
|
||||||
- Система управления журналами (предоставляется заказчиком): _стек ELK_
|
|
||||||
|
|
||||||
=== Схема развертывания
|
|
||||||
|
|
||||||
Ниже представлена схема развертывания основных компонентов шины, содержащая следующие элементы:
|
|
||||||
|
|
||||||
. кластер _NGINX_ - два узла, обеспечивающих отказоустойчивый балансировщик нагрузки, с одним виртуальным IP-адресом
|
|
||||||
. кластер _Karaf_ - в начальной конфигурации используется 2 узла, в дальнейшем схема масштабируется горизонтально. Наличие кластера обеспечивает отказоустойчивость и производительность, так как нагрузка распределяется между всеми активными узлами
|
|
||||||
. кластер брокера сообщений _ActiveMQ Artemis_ - отказоустойчивая конфигурация "активный - пассивный", в которой все транзакции активного брокера реплицируются на пассивный. При выходе из строя активного брокера, активным становится пассивный. Все вызовы брокера сообщений осуществляются по схеме failover, которая гарантирует переадресацию запроса в случае недоступности основного узла.
|
|
||||||
. отказоустойчивый кластер СУБД - предоставляется заказчиком
|
|
||||||
. _NFS Share_ - подключаемое сетевое файловое хранилище, предоставляется заказчиком
|
|
||||||
. _ELK_ - узел сбора и обработки логов стеком продуктов ELK (ElasticSearch, Logstash, Kibana)
|
|
||||||
. узел сбора и обработки метрик с установленными продуктами Zabbix и Grafana
|
|
||||||
|
|
||||||
image::clustering.png[]
|
|
||||||
|
|
||||||
Ниже представлена схема деплоя профилей/коннекторов в шине:
|
|
||||||
|
|
||||||
image::System-management.png[]
|
|
||||||
|
|
||||||
=== Список и характеристики узлов предпродуктивного контура
|
|
||||||
|
|
||||||
|
|
||||||
|===
|
|
||||||
|Имя сервера |Ресурсы |Назначение |Операционная система |Софт
|
|
||||||
|
|
||||||
| PREPRD_NGINX1
|
|
||||||
| 2xCPU, 4Gb RAM, 40 Gb Local
|
|
||||||
| Балансировщик
|
|
||||||
| AstraLinux SE 1.6
|
|
||||||
| Nginx
|
|
||||||
|
|
||||||
| PREPRD_NGINX2
|
|
||||||
| 2xCPU, 4Gb RAM, 40 Gb Local
|
|
||||||
| Балансировщик
|
|
||||||
| AstraLinux SE 1.6
|
|
||||||
| Nginx
|
|
||||||
|
|
||||||
| PREPRD_KRF1
|
|
||||||
| 8xCPU, 12 Gb RAM, 60 Gb Local
|
|
||||||
| Платформа запуска интеграционных маршрутов
|
|
||||||
| AstraLinux SE 1.6
|
|
||||||
| Apache Karaf, Cellar, java-1.8.0-openjdk
|
|
||||||
|
|
||||||
| PREPRD_KRF2
|
|
||||||
| 8xCPU, 12 Gb RAM, 60 Gb Local
|
|
||||||
| Платформа запуска интеграционных маршрутов
|
|
||||||
| AstraLinux SE 1.6
|
|
||||||
| Apache Karaf, Cellar, java-1.8.0-openjdk
|
|
||||||
|
|
||||||
| PREPRD_NEXUS
|
|
||||||
| 4xCPU, 12 Gb RAM, 60 Gb Local
|
|
||||||
| Хранение артефактов
|
|
||||||
| AstraLinux SE 1.6
|
|
||||||
| Nexus
|
|
||||||
|
|
||||||
| PREPRD_AMQ1
|
|
||||||
| 4xCPU, 16 Gb RAM, 60 Gb Local
|
|
||||||
| Брокер сообщений
|
|
||||||
| AstraLinux SE 1.6
|
|
||||||
| Java, ActiveMQ Artemis
|
|
||||||
|
|
||||||
| PREPRD_AMQ2
|
|
||||||
| 4xCPU, 16 Gb RAM, 60 Gb Local
|
|
||||||
| Брокер сообщений
|
|
||||||
| AstraLinux SE 1.6
|
|
||||||
| Java, ActiveMQ Artemis
|
|
||||||
|===
|
|
||||||
|
|
||||||
=== Схема прохождения пакета _Система1_ - _Система2_
|
|
||||||
|
|
||||||
Ниже представлена схема прохождения пакета на примере обмена данными между двумя экземплярами системами.
|
|
||||||
|
|
||||||
Экземпляры систем соединяются с шиной через _Коннектор_, который взаимодействует с сервисом SOAP, Универсальный коннектор, (контекст/cxf/uniform-exchange), предоставляемым шиной.
|
|
||||||
|
|
||||||
Укрупненно маршрут выглядит следующим образом:
|
|
||||||
|
|
||||||
. доставка сообщения до очереди получателя: CXF-сервис -> маршрут Camel send-to-jms -> очередь в Artemis
|
|
||||||
. получение сообщения: CXF-сервис -> очередь в Artemis
|
|
||||||
. подтверждение получения: CXF-сервис -> маршрут Camel receive-acknowledge
|
|
||||||
|
|
||||||
image::route_packet.png[]
|
|
||||||
|
|
||||||
=== Средства мониторинга и отладки
|
|
||||||
|
|
||||||
Для мониторинга работы и отладки шины для сценария прохождения пакета могут быть использованы следующие инструменты.
|
|
||||||
|
|
||||||
==== Журнал (лог) Nginx
|
|
||||||
|
|
||||||
Логи Nginx’a располагаются в папке по пути “/var/log/nginx”.
|
|
||||||
|
|
||||||
В папке с логами Nginx’a располагаются 2 типа логов:
|
|
||||||
|
|
||||||
. Access - отображает все процессы, которые проходят через Nginx.
|
|
||||||
В случае когда запрос отработал успешно, сервер возвращает код 200 в access.log и записывает строку с URL запроса, кодом, размером ответа и временем получения ответа.
|
|
||||||
. Error - отображает процессы, в которых возникли ошибки
|
|
||||||
В случае когда запрос отработал с ошибкой, сервер возвращает код 400 (например) в error.log и записывает строку с URL запроса, кодом, кратким описанием ошибки, размером ответа, временем получения ответа и юзер-агентом (HTTP-заголовок, который показывает из какого браузера или иного софта был отправлен запрос).
|
|
||||||
|
|
||||||
==== Трассировка маршрутов Camel
|
|
||||||
|
|
||||||
_Apache Сamel_ - это платформа для запуска интеграционных маршрутов (процессов), которые в самой платформе называются “route”. Основными функциями Apache Camel являются подключения по различным протоколам, маршрутизация запросов и сообщений, а также преобразование данных.
|
|
||||||
|
|
||||||
Работа с маршрутами в Apache Camel и самой платформой осуществляется из hawtio. Hawtio - это графическая консоль управления. Hawtio доступна по следующим ссылкам:
|
|
||||||
|
|
||||||
Karaf-1 - http://<<+host+>>:8181/hawtio/
|
|
||||||
|
|
||||||
image::screenshots/screenshot_hawtio_1.png[]
|
|
||||||
|
|
||||||
Трассировка маршрутов в hawtio производится на вкладке “Camel”, путем выбора маршрута (папка route) в левой области экрана и перехода на вкладку “Trace”.
|
|
||||||
|
|
||||||
image::screenshots/screenshot_hawtio_2.png[]
|
|
||||||
image::screenshots/screenshot_hawtio_3.png[]
|
|
||||||
|
|
||||||
После перехода необходимо нажать на кнопку “Start tracing”, платформа запустит трассировку маршрута и выведет на экран схему процесса трассировки.
|
|
||||||
|
|
||||||
image::screenshots/screenshot_hawtio_4.png[]
|
|
||||||
|
|
||||||
В связи с тем что в 3й версии Camel, используемой нами, трассировка по умолчанию отключена потребуется подготовить отлаживаемый контекст. Для этого необходимо включить параметры _backlogTrace_ и _useBreadcrumb_.
|
|
||||||
|
|
||||||
Пример:
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<camelContext id="passive-common-connector-context" xmlns="http://camel.apache.org/schema/blueprint" errorHandlerRef="commonErrorHandler" backlogTrace="true" useBreadcrumb="true">
|
|
||||||
----
|
|
||||||
|
|
||||||
Так же для удобства работы можно включить отображение потоков в текстовом формате.
|
|
||||||
Для этого в Настройках(Preferences) hawtio нужно включить флаг Include trace/debug streams
|
|
||||||
|
|
||||||
image::screenshots/screenshot_hawtio_5.png[]
|
|
||||||
|
|
||||||
В веб-консоли hawtio, помимо работы с маршрутами, есть возможность установки бандлов, плагинов (вкладка OSGI)
|
|
||||||
Возможность просмотра логов и прочее.
|
|
||||||
|
|
||||||
image::screenshots/screenshot_hawtio_6.png[]
|
|
||||||
image::screenshots/screenshot_hawtio_7.png[]
|
|
||||||
|
|
||||||
=== Веб-консоль брокера сообщений
|
|
||||||
|
|
||||||
Добавить описание, урлы (для обоих брокеров) и скриншоты на примере любой очереди. Показать, где содержимое, где рейт и прочее.
|
|
||||||
|
|
||||||
Apache ActiveMQ - это брокер сообщений, основной функцией которого является отправка и получение сообщений.
|
|
||||||
|
|
||||||
Работа с брокером сообщений производится через веб-консоль, перейти на которые можно по следующим ссылкам:
|
|
||||||
|
|
||||||
ActiveMQ-1 - http://<<+host+>>:8161/console/
|
|
||||||
|
|
||||||
image::screenshots/screenshot_artemis_1.png[]
|
|
||||||
|
|
||||||
В веб-консоли можно просматривать очереди сообщений на вкладке “Queues”.
|
|
||||||
|
|
||||||
image::screenshots/screenshot_artemis_2.png[]
|
|
||||||
|
|
||||||
На этой же вкладке можно просмотреть название очереди, адрес очереди.
|
|
||||||
|
|
||||||
image::screenshots/screenshot_artemis_3.png[]
|
|
||||||
|
|
||||||
Посмотреть скорость обмена сообщениями (столбец “Rate”), количество сообщений в очереди.
|
|
||||||
|
|
||||||
image::screenshots/screenshot_artemis_4.png[]
|
|
||||||
|
|
||||||
На вкладке “Producer” можно посмотреть данные об отправленных сообщениях (id сообщений, название адресов, на которые были отправлены сообщения).
|
|
||||||
|
|
||||||
image::screenshots/screenshot_artemis_5.png[]
|
|
||||||
|
|
||||||
На вкладке “Consumers” можно посмотреть данные о полученных сообщениях (id сообщений, из какой очереди пришли сообщения, название адресов, с которых были получены сообщения).
|
|
||||||
|
|
||||||
image::screenshots/screenshot_artemis_6.png[]
|
|
||||||
|
|
||||||
В левой области экрана можно выбрать в списке нужную очередь и посмотреть количество сообщений в ней.
|
|
||||||
|
|
||||||
image::screenshots/screenshot_artemis_7.png[]
|
|
||||||
|
|
||||||
При выборе очереди, автоматически открывается вкладка “Browse”, на которой отображаются все сообщения из выбранной очереди. При нажатии на id сообщения, появится диалоговое окно с сообщением.
|
|
||||||
|
|
||||||
image::screenshots/screenshot_artemis_8.png[]
|
|
||||||
|
|
||||||
При необходимости сообщение можно переместить в другую очередь (кнопка “Move”) или удалить (кнопка “Delete”).
|
|
||||||
|
|
||||||
image::screenshots/screenshot_artemis_9.png[]
|
|
||||||
|
|
||||||
Также в консоли имеется возможность полностью очистить очередь от сообщений или полностью удалить очередь из брокера сообщений, выбрав очередь в левой области экрана и перейдя на вкладку “Delete”.
|
|
||||||
|
|
||||||
image::screenshots/screenshot_artemis_10.png[]
|
|
||||||
|
|
Before Width: | Height: | Size: 107 KiB |
Before Width: | Height: | Size: 104 KiB |
Before Width: | Height: | Size: 80 KiB |
@ -1,169 +0,0 @@
|
|||||||
= Общие положения
|
|
||||||
|
|
||||||
При передаче сообщения от внешней системы в шину происходит процесс аутентификации внешней системы в шине. Т.е. при передаче сообщения шине с помощью сервера _nginX_ по протоколу _basic_ аутентификации сверяет присвоенные сообщению логин и пароль системы, от которой передается сообщение с ее логином, зарегистрированным в шине. При совпадении логина и пароля сообщение проходит от внешней системы через шину к другой системе. Если же пара логин – пароль не совпадает, то система блокирует сообщение.
|
|
||||||
|
|
||||||
image::Authentication.png[Аутентификация с помощью nginx]
|
|
||||||
|
|
||||||
Обновление учетных записей на _nginx_ по данным от сервиса _basic-auth-management_ проходит каждую минуту.
|
|
||||||
|
|
||||||
Для компактной установки шины без _nginx_ модуль реализует интерцептор для basic аутентификации при обращении к сервисам. Включить встроенную аутентификацию можно в конфигурационном файле ru.entaxy.esb.system.basic_auth.cfg -> свойство internal.authentication.enabled.
|
|
||||||
|
|
||||||
Сервис _basic-auth-management_ служит для работы с учетными записями (аккаунтами) через протокол _SOAP_.
|
|
||||||
|
|
||||||
В сервисе существуют три вида запросов:
|
|
||||||
|
|
||||||
* Добавление аккаунтов;
|
|
||||||
* Обновление аккаунтов;
|
|
||||||
* Удаление неактуальных аккаунтов.
|
|
||||||
* Выдача прав аккаунту
|
|
||||||
* Удаление прав аккаунта
|
|
||||||
|
|
||||||
=== Добавление аккаунта
|
|
||||||
|
|
||||||
Метод для добавления учетных записей _(addAccount)_ разработан для добавления новых пользователей в систему.
|
|
||||||
|
|
||||||
Запрос на добавление аккаунта выглядит следующим образом:
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:bas="http://www.entaxy.ru/basic-auth-service/">
|
|
||||||
<soapenv:Header/>
|
|
||||||
<soapenv:Body>
|
|
||||||
<bas:accountList>
|
|
||||||
<!--1 or more repetitions:-->
|
|
||||||
<bas:account>
|
|
||||||
<bas:login>system1login</bas:login>
|
|
||||||
<bas:password>system1pass</bas:password>
|
|
||||||
<!--Optional:-->
|
|
||||||
<bas:systemUUID>system1uuid</bas:systemUUID>
|
|
||||||
</bas:account>
|
|
||||||
</bas:accountList>
|
|
||||||
</soapenv:Body>
|
|
||||||
</soapenv:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
|
|
||||||
В теле содержится список аккаунтов – это повторение элементов _account_ неограниченное число раз. Также в теле содержатся обязательные поля _<login>_ (логин) и _<password>_ (пароль). Поле _<systemUUID>_ (идентефикатор системы) является необязательным.
|
|
||||||
|
|
||||||
Пароль принимается в прямом виде и шифруется непосредственно перед сохранением, чтобы он не хранился в открытом виде.
|
|
||||||
|
|
||||||
=== Обновление аккаунта
|
|
||||||
|
|
||||||
Метод для обновления учетной записи _(updateAccount)_ разработан для обновления следующей информации:
|
|
||||||
|
|
||||||
* новый пароль системы;
|
|
||||||
* присвоение учетной записи к другой системе.
|
|
||||||
|
|
||||||
Запрос на обновление аккаунта выглядит следующим образом:
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:bas="http://www.entaxy.ru/basic-auth-service/">
|
|
||||||
<soapenv:Header/>
|
|
||||||
<soapenv:Body>
|
|
||||||
<bas:accountList>
|
|
||||||
<!--1 or more repetitions:-->
|
|
||||||
<bas:account>
|
|
||||||
<bas:login>system1login</bas:login>
|
|
||||||
<bas:password>system1pass</bas:password>
|
|
||||||
<!--Optional:-->
|
|
||||||
<bas:systemUUID>system1uuid</bas:systemUUID>
|
|
||||||
</bas:account>
|
|
||||||
<bas:account>
|
|
||||||
<bas:login>system2login</bas:login>
|
|
||||||
<bas:password>system2pass</bas:password>
|
|
||||||
</bas:account>
|
|
||||||
</bas:accountList>
|
|
||||||
</soapenv:Body>
|
|
||||||
</soapenv:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
В теле содержится список аккаунтов, который содержит информацию аналогичную из п.2.
|
|
||||||
|
|
||||||
=== Удаление аккаунта
|
|
||||||
|
|
||||||
Метод для удаления аккаунта _(removeAccount)_ служит для удаления аккаунта из системы.
|
|
||||||
|
|
||||||
Запрос на удаление аккаунта выглядит следующим образом:
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:bas="http://www.entaxy.ru/basic-auth-service/">
|
|
||||||
<soapenv:Header/>
|
|
||||||
<soapenv:Body>
|
|
||||||
<bas:loginList>
|
|
||||||
<!--1 or more repetitions:-->
|
|
||||||
<bas:login>system1login</bas:login>
|
|
||||||
<bas:login>system2login</bas:login>
|
|
||||||
</bas:loginList>
|
|
||||||
</soapenv:Body>
|
|
||||||
</soapenv:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
В теле содержится неограниченный список логинов _(loginList)_, которые будут удалены из системы.
|
|
||||||
|
|
||||||
=== Выдача прав аккаунту
|
|
||||||
|
|
||||||
Метод выдачи прав аккаунту _(addAccountPermission)_ служит для создания _permission_ связанных с переданным аккаунтом.
|
|
||||||
|
|
||||||
Запрос на создание права выглядит следующим образом:
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:bas="http://www.entaxy.ru/basic-auth-service/">
|
|
||||||
<soapenv:Header/>
|
|
||||||
<soapenv:Body>
|
|
||||||
<bas:permissionList>
|
|
||||||
<!--1 or more repetitions:-->
|
|
||||||
<bas:permission>
|
|
||||||
<bas:login>dog</bas:login>
|
|
||||||
<bas:subject>topic-management</bas:subject>
|
|
||||||
<bas:subjectType>service</bas:subjectType>
|
|
||||||
<!--Optional:-->
|
|
||||||
<bas:action></bas:action>
|
|
||||||
</bas:permission>
|
|
||||||
<bas:permission>
|
|
||||||
<bas:login>dog</bas:login>
|
|
||||||
<bas:subject>system-management</bas:subject>
|
|
||||||
<bas:subjectType>service</bas:subjectType>
|
|
||||||
<!--Optional:-->
|
|
||||||
<bas:action></bas:action>
|
|
||||||
</bas:permission>
|
|
||||||
</bas:permissionList>
|
|
||||||
</soapenv:Body>
|
|
||||||
</soapenv:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
|
|
||||||
Если параметр action пустой либо отсутствует в сервисе _permission_ по умолчанию подставляется _default_.
|
|
||||||
|
|
||||||
|
|
||||||
=== Удаление прав аккаунта
|
|
||||||
|
|
||||||
Метод удаления прав аккаунта _(removeAccountPermission)_ служит для удаления _permission_ связанных с переданным аккаунтом.
|
|
||||||
|
|
||||||
Запрос на создание права выглядит следующим образом:
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:bas="http://www.entaxy.ru/basic-auth-service/">
|
|
||||||
<soapenv:Header/>
|
|
||||||
<soapenv:Body>
|
|
||||||
<bas:permissionList>
|
|
||||||
<!--1 or more repetitions:-->
|
|
||||||
<bas:permission>
|
|
||||||
<bas:login>dog</bas:login>
|
|
||||||
<bas:subject>topic-management</bas:subject>
|
|
||||||
<bas:subjectType>service</bas:subjectType>
|
|
||||||
<!--Optional:-->
|
|
||||||
<bas:action></bas:action>
|
|
||||||
</bas:permission>
|
|
||||||
<bas:permission>
|
|
||||||
<bas:login>dog</bas:login>
|
|
||||||
<bas:subject>system-management</bas:subject>
|
|
||||||
<bas:subjectType>service</bas:subjectType>
|
|
||||||
<!--Optional:-->
|
|
||||||
<bas:action></bas:action>
|
|
||||||
</bas:permission>
|
|
||||||
</bas:permissionList>
|
|
||||||
</soapenv:Body>
|
|
||||||
</soapenv:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
|
|
||||||
Если параметр _action_ пустой либо отсутствует в сервисе permission по умолчанию подставляется _default_.
|
|
@ -1,79 +0,0 @@
|
|||||||
Связь между двумя независимыми брокерами осуществляется с помощью моста. Карафы подключенные к одному брокеру далее будут именоваться шиной.
|
|
||||||
|
|
||||||
image::Route-in-different-esb.png[Прохождение пакета через группу и мост]
|
|
||||||
|
|
||||||
== Установка и настройка
|
|
||||||
|
|
||||||
Установка модуля происходит через фичу:
|
|
||||||
|
|
||||||
* _feature:install bridge_
|
|
||||||
|
|
||||||
Фича включена в общий установочный скрипт и будет устанавливаться вместе с остальными модулями. Во время установки фичи в караф копируются файлы конфигурации:
|
|
||||||
|
|
||||||
* _ru.entaxy.esb.system.bridge.cfg (основная конфигурация)_
|
|
||||||
|
|
||||||
=== ru.entaxy.esb.system.bridge.cfg (основная конфигурация)
|
|
||||||
[source,properties]
|
|
||||||
----
|
|
||||||
# имя локальной шины(<node_name>)
|
|
||||||
jms.local=test1
|
|
||||||
# значение true - мост текущего узла работает в пассивном режиме,
|
|
||||||
# т.е. сообщения для соответствующего удалённого узла складываются в очередь на локальном брокере,
|
|
||||||
# из которой уже читает подключаемый узел (локальный брокер должен быть доступен для соединения)
|
|
||||||
# По умолчанию false - активный режим, запись сообщения идёт сразу в очередь на удалённом брокере,
|
|
||||||
# подключаемого узла (брокеры по обе стороны моста должны быть доступны)
|
|
||||||
jms.local.master=false
|
|
||||||
# имена удаленных шин, задается через запятую(<node_name>,<node_name>)
|
|
||||||
jms.remote.list=test2
|
|
||||||
|
|
||||||
# адреса брокера, задаются чеерез запятую(jms.url.<node_name>)
|
|
||||||
jms.url.test1=192.168.122.81:61616,192.168.122.82:61616
|
|
||||||
# логин для подключения к брокеру(jms.username.<node_name>)
|
|
||||||
jms.username.test1=input
|
|
||||||
# пароль для подключения к брокеру(jms.password.<node_name>)
|
|
||||||
jms.password.test1=input
|
|
||||||
# протокол для передачи сообщений внутри шины(jms.protocol.inner.esb.<node_name>)
|
|
||||||
# для корректной работы синхронного режима передачи сообщений: необходимо следить
|
|
||||||
# за одинаковым значением данного параметра в мосту и в самой шине(ru.entaxy.esb.cfg)
|
|
||||||
# возможные значения tcp, amqp
|
|
||||||
jms.protocol.inner.esb.test1=tcp
|
|
||||||
# протокол для передачи сообщений между шинами(jms.protocol.bridge.esb.<node_name>)
|
|
||||||
# для корректной работы синхронного режима передачи сообщений: необходимо следить
|
|
||||||
# за одинаковым значением данного параметра во всех подключенных шинах
|
|
||||||
# возможные значения tcp, amqp
|
|
||||||
jms.protocol.bridge.test1=amqp
|
|
||||||
|
|
||||||
# адреса брокера, задаются чеерез запятую(jms.url.<node_name>)
|
|
||||||
jms.url.test2=localhost:61616
|
|
||||||
# логин для подключения к брокеру(jms.username.<node_name>)
|
|
||||||
jms.username.test2=input
|
|
||||||
# пароль для подключения к брокеру(jms.password.<node_name>)
|
|
||||||
jms.password.test2=input
|
|
||||||
# jms.master.<node_name> - выставляем в true, когда соответствующий узел настроен в пассивный режим,
|
|
||||||
# т.е. для него jms.local.master = true (брокер должен быть доступен для соединения)
|
|
||||||
jms.master.test2=true
|
|
||||||
# протокол для передачи сообщений внутри шины(jms.protocol.inner.esb.<node_name>)
|
|
||||||
# для корректной работы синхронного режима передачи сообщений: необходимо следить
|
|
||||||
# за одинаковым значением данного параметра в мосту и в самой шине(ru.entaxy.esb.cfg)
|
|
||||||
# возможные значения tcp, amqp
|
|
||||||
jms.protocol.inner.esb.test2=tcp
|
|
||||||
# протокол для передачи сообщений между шинами(jms.protocol.bridge.esb.<node_name>)
|
|
||||||
# для корректной работы синхронного режима передачи сообщений: необходимо следить
|
|
||||||
# за одинаковым значением данного параметра во всех подключенных шинах
|
|
||||||
# возможные значения tcp, amqp
|
|
||||||
jms.protocol.bridge.test2=amqp
|
|
||||||
|
|
||||||
# максимальное колчичество попыток отправить сообщение в очередь
|
|
||||||
# почитать подробнее можно в https://camel.apache.org/components/latest/eips/dead-letter-channel.html#deadLetterChannel-Redelivery
|
|
||||||
redelivery.maximumRedeliveries=-1
|
|
||||||
# время между попытками отправить сообщение в очередь
|
|
||||||
redelivery.redeliveryDelay=5000
|
|
||||||
# экспоненциальный рост времени между попытками отпрвки сообщений в очередь
|
|
||||||
redelivery.useExponentialBackOff=true
|
|
||||||
|
|
||||||
queue.sender.concurrentConsumers=1
|
|
||||||
queue.receiver.concurrentConsumers=1
|
|
||||||
----
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Before Width: | Height: | Size: 46 KiB |
Before Width: | Height: | Size: 125 KiB |
@ -1,44 +0,0 @@
|
|||||||
= Файловые репозитории
|
|
||||||
|
|
||||||
*Nexus*
|
|
||||||
представлен бандлом SYSTEM :: ENTAXY :: NEXUS :: DEPLOYER, реализует взаимодействие с репозиторием Sonatype Nexus.
|
|
||||||
Конфигурация ru.entaxy.esb.deployer.nexus.cfg
|
|
||||||
[source]
|
|
||||||
----
|
|
||||||
# все смены адреса расположения nexus и изменение наименования репозитория, необходимо фиксировать в файле
|
|
||||||
# org.ops4j.pax.url.mvn.cfg параметр: org.ops4j.pax.url.mvn.repositories
|
|
||||||
|
|
||||||
# url расположения nexus
|
|
||||||
nexus.deployer.url=http://nexusHost
|
|
||||||
# название репозитория в nexus, необходимого для конфигурирования шины из вне(создание профилей, коннекторов и т д)
|
|
||||||
nexus.deployer.repository=entaxy
|
|
||||||
# логин для авторизации в nexus
|
|
||||||
nexus.deployer.username=deployer
|
|
||||||
# пароль для авторизации в nexus
|
|
||||||
nexus.deployer.password=deployer
|
|
||||||
----
|
|
||||||
|
|
||||||
*File-system*
|
|
||||||
представлен бандлом SYSTEM :: ENTAXY :: FILE SYSTEM :: DEPLOYER, реализует взаимодействие с файловой системой, т.е. сохраняет переданные файлы в настроенной папке.
|
|
||||||
Конфигурация ru.entaxy.esb.deployer.file.system.cfg
|
|
||||||
[source]
|
|
||||||
----
|
|
||||||
#Корневая папка репозитория
|
|
||||||
folder.root=/opt/bundle-repository
|
|
||||||
----
|
|
||||||
|
|
||||||
|
|
||||||
=== Настройка системы
|
|
||||||
|
|
||||||
По умолчанию деплоятся оба бандла и система использует репозиторий File-system.
|
|
||||||
|
|
||||||
Для включения нужного репозитория необходимо оставить включённым бандл того репозитория, который требуется использовать.
|
|
||||||
|
|
||||||
_Пример:_
|
|
||||||
По умолчанию включён репозиторий File-system, для включения репозитория Nexus отключаем/удаляем бандл SYSTEM :: ENTAXY :: FILE SYSTEM :: DEPLOYER
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,144 +0,0 @@
|
|||||||
Централизованный обработчик ошибок для формирования кодов ошибок, их синхронного возврата клиенту и для асинхронного дублирования более подробного описания ошибки для клиента и для Центральной Базы Интеграции.
|
|
||||||
|
|
||||||
image::Error-handling-Scheme.jpg[]
|
|
||||||
|
|
||||||
= Установка и настройка
|
|
||||||
|
|
||||||
Установка модуля происходит через фичу:
|
|
||||||
|
|
||||||
* _feature:install error-handler_
|
|
||||||
|
|
||||||
Фича включена в общий установочный скрипт и будет устанавливаться вместе с остальными модулями. Во время установки фичи в караф копируются файлы конфигурации:
|
|
||||||
|
|
||||||
* _ru.entaxy.esb.error.cfg (основная конфигурация)_
|
|
||||||
* _ru.entaxy.esb.error.code.cfg (справочник исключений с маппингом на коды ошибок)_
|
|
||||||
* _ru.entaxy.esb.error.text.cfg (справочник кодов ошибок с маппингом на текстовые сообщения)_
|
|
||||||
|
|
||||||
Есть возможность настройки маппинга уровней журналирования через файл конфигурации ru.entaxy.esb.error.severity.cfg.
|
|
||||||
|
|
||||||
* _ru.entaxy.esb.error.cfg (основная конфигурация)_
|
|
||||||
|
|
||||||
[source,properties]
|
|
||||||
----
|
|
||||||
# асинхронный пакет с ошибкой отправляется от имени:
|
|
||||||
# false - системы, вызвавшей ошибку в шине
|
|
||||||
# true - шины (система с идентификатором "-1")
|
|
||||||
ru.entaxy.esb.error.bus.always_at_source=false
|
|
||||||
|
|
||||||
# асинхронный пакет с ошибкой в поле description содержит:
|
|
||||||
# false - сообщение из маппинга в файле ru.entaxy.esb.error.text.cfg
|
|
||||||
# true - содержит сообщение, сохранённое в исключении
|
|
||||||
ru.entaxy.esb.error.description.exception_message=true
|
|
||||||
|
|
||||||
# имя очереди для отправки пакета с ошибкой при недоступности системы, указанной в свойстве ru.entaxy.esb.error.system.name
|
|
||||||
ru.entaxy.esb.error.queue.name=error
|
|
||||||
|
|
||||||
# имя системы для отправки пакета с ошибкой, подразумевается система ЦБИ
|
|
||||||
ru.entaxy.esb.error.system.name=error
|
|
||||||
|
|
||||||
# true - включает в пакет с ошибкой весь stacktrace исключения
|
|
||||||
ru.entaxy.esb.error.stacktrace.show=true
|
|
||||||
|
|
||||||
# свойство автоматического запуска тестового маршрута, который при старте модуля бросает исключение java.lang.IllegalArgumentException: Test exception thrown
|
|
||||||
ru.entaxy.esb.error.test-route.startup=false
|
|
||||||
----
|
|
||||||
|
|
||||||
* _ru.entaxy.esb.error.code.cfg (справочник исключений с маппингом на коды ошибок)_
|
|
||||||
|
|
||||||
Справочник содержит соответствие имён классов исключений и _http_ кодов ошибок. И будет наполняться по мере использования шины в разных ситуациях. Для исключения, имя которого ещё не указано в этом файле, будет возвращаться _http_ код _520 (Unknown Error)._
|
|
||||||
|
|
||||||
[source,properties]
|
|
||||||
----
|
|
||||||
DefaultException=520
|
|
||||||
com.ctc.wstx.exc.WstxParsingException=400
|
|
||||||
java.security.AccessControlException=403
|
|
||||||
javax.ws.rs.ForbiddenException=403
|
|
||||||
ru.onec.esb.system.common.exception.ConnectorNotFound=424
|
|
||||||
ru.onec.esb.system.common.exception.DefaultException=520
|
|
||||||
ru.onec.esb.system.common.exception.ProfileNotFound=424
|
|
||||||
# и т.д.
|
|
||||||
----
|
|
||||||
|
|
||||||
* _ru.entaxy.esb.error.text.cfg (справочник кодов ошибок с маппингом на текстовые сообщения)_
|
|
||||||
|
|
||||||
Если в основной конфигурации свойство _ru.entaxy.esb.error.description.exception_message_ установлено в _false_, то описание ошибки отправляется из этого файла в соответствие с кодом _http_ ошибки.
|
|
||||||
|
|
||||||
[source,properties]
|
|
||||||
----
|
|
||||||
# 1xx: Informational
|
|
||||||
# 2xx: Success
|
|
||||||
200=OK
|
|
||||||
|
|
||||||
# 3xx: Redirection
|
|
||||||
# 4xx: Client Error
|
|
||||||
400=Bad Request
|
|
||||||
403=Forbidden
|
|
||||||
424=Failed Dependency
|
|
||||||
|
|
||||||
# 5xx: Server Error
|
|
||||||
520=Unknown Error
|
|
||||||
# и т.д.
|
|
||||||
----
|
|
||||||
|
|
||||||
=== Подключение обработчика ошибок
|
|
||||||
|
|
||||||
Для подключения обработчика ошибок к маршрутам какого-либо модуля необходимо выполнить следующие шаги:
|
|
||||||
|
|
||||||
. Добавить в модуль обработки ошибок в директорию _src/main/resources/xslt/operation_ новый _xslt_ для формирования ответа с ошибкой. Файл должен называться по имени операции, для которой будет формироваться ответ. Например _sendToJMS.xsl_.
|
|
||||||
. Добавить в _camelContext_ аттрибут _errorHandlerRef="commonErrorHandler"_ и внутри зарегистрировать обработчик и политику повторной доставки:
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<camelContext id="soap-service-endpoints-camel-context"
|
|
||||||
xmlns="http://camel.apache.org/schema/blueprint"
|
|
||||||
errorHandlerRef="commonErrorHandler" handleFault="true">
|
|
||||||
|
|
||||||
<errorHandler id="commonErrorHandler" redeliveryPolicyRef="noRedelivery"
|
|
||||||
type="DeadLetterChannel" deadLetterUri="direct-vm:commonErrorEndpoint"/>
|
|
||||||
<redeliveryPolicyProfile id="noRedelivery" disableRedelivery="true" />
|
|
||||||
<!-- any content -->
|
|
||||||
</camelContext>
|
|
||||||
----
|
|
||||||
|
|
||||||
Для контекстов, содержащих конечные точки _cxf_, необходимо:
|
|
||||||
|
|
||||||
через _pom.xml_ импортировать интерцептор для перехвата ошибок (_SoapFault_)
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<bundle.osgi.import.pkg>
|
|
||||||
ru.onec.esb.system.core.common.error.handler.interceptor,
|
|
||||||
...
|
|
||||||
</bundle.osgi.import.pkg>
|
|
||||||
----
|
|
||||||
|
|
||||||
добавить интерцептор в _cxfEndpoint_ и _bean_ с указанием в первом аргументе идентификатора _camelContext_
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<camelcxf:cxfEndpoint id="soap-proxy" ...>
|
|
||||||
<!-- any properties and interceptors -->
|
|
||||||
<camelcxf:outFaultInterceptors>
|
|
||||||
<ref component-id="handleOutFaultInterceptor"/>
|
|
||||||
</camelcxf:outFaultInterceptors>
|
|
||||||
</camelcxf:cxfEndpoint>
|
|
||||||
|
|
||||||
<bean id="handleOutFaultInterceptor" class="ru.onec.esb.system.core.common.error.handler.interceptor.HandleOutFaultInterceptor">
|
|
||||||
<argument ref="soap-service-endpoints-camel-context"/>
|
|
||||||
<argument value="direct:error_from_cxf"/>
|
|
||||||
</bean>
|
|
||||||
----
|
|
||||||
|
|
||||||
в _camelContext_ добавить маршрут
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<route id="error_from_cxf">
|
|
||||||
<from uri="direct:error_from_cxf"/>
|
|
||||||
<log message="cxf message: ${body}" loggingLevel="DEBUG"/>
|
|
||||||
<log message="headers: ${headers}\n" loggingLevel="DEBUG"/>
|
|
||||||
<to uri="direct-vm:cxfErrorEndpoint"/>
|
|
||||||
</route>
|
|
||||||
----
|
|
||||||
|
|
||||||
|
|
@ -1,31 +0,0 @@
|
|||||||
= Использование обработчика ошибок
|
|
||||||
|
|
||||||
Для централизованной обработки ошибок будем использовать “процессор” зарегистрированный через _<camelContext errorHandlerRef="...”>_. В частных случаях допустимо использование _try … catch … finally_.
|
|
||||||
_(https://camel.apache.org/manual/latest/error-handler.html)_
|
|
||||||
|
|
||||||
Кроме возврата ошибок вызывающей стороне, необходимо дублировать ошибки в JMS очередь с возможностью их просмотра из веб-консоли Артемиса.
|
|
||||||
|
|
||||||
=== Классификация ошибок
|
|
||||||
|
|
||||||
_Бизнесовые ошибки:_ отсутствие обязательных полей, превышение длины поля и другие нарушения ожиданий принимающей стороны.
|
|
||||||
|
|
||||||
_Серверные ошибки:_ NPE и другие ошибки времени выполнения.
|
|
||||||
|
|
||||||
_Сервис не доступен:_ конечная точка не отвечает и не принимает входящие соединения.
|
|
||||||
|
|
||||||
При этом ошибки могут быть “восстанавливаемыми” - с возможностью успешной обработки повторного запроса, использующего изменённые данные или другие точки доступа, и “не восстанавливаемыми” - у клиента нет возможности обойти причины ошибки для выбранного сервиса.
|
|
||||||
|
|
||||||
=== Обёртка для ошибок
|
|
||||||
|
|
||||||
Ошибки удобно обрабатывать используя дополнительную информацию, которую необходимо передавать вместе с ошибкой:
|
|
||||||
|
|
||||||
* _Timestamp_: время возникновения ошибки;
|
|
||||||
* _Error Code_: код ошибки для удобства автоматизированной обработки ошибок;
|
|
||||||
* _Error Text_: описание возникающей ошибки, допустимо выводить вместе со стектрейсом;
|
|
||||||
* _Severity Level_: уровень журналирования ошибки;
|
|
||||||
* _Notification_: в случае необходимости уведомлений об ошибке поле должно содержать адрес или список адресов систем/пользователей для оповещения;
|
|
||||||
* _Retry_: информация о возможности повторной отправки сообщения;
|
|
||||||
|
|
||||||
_Uuid_ и _id_ сообщения
|
|
||||||
|
|
||||||
|
|
Before Width: | Height: | Size: 82 KiB |
@ -1,318 +0,0 @@
|
|||||||
= SOAP сервис Permission-management
|
|
||||||
|
|
||||||
=== Permission - сущность для описания и хранения прав.
|
|
||||||
|
|
||||||
Поля _Permission_:
|
|
||||||
|
|
||||||
. _permissionId_ (long) - идентификатор объекта permission
|
|
||||||
. _objectId_ (long) - идентификатор объекта, для которого проверяются права
|
|
||||||
. _objectType_ (String) - тип объекта, данный параметр соответствует проектной терминалогии: _system_, _system-group_
|
|
||||||
. _subjectId_ (String) - идентификатор предмета применяемого права
|
|
||||||
. _subjectType_ (String) - тип предмета
|
|
||||||
. _action_ (String)- тип действия, по умолчанию проставляется значение _default_
|
|
||||||
|
|
||||||
=== SOAP Сервис Permission управляет созданием и проверкой объекта Permission.
|
|
||||||
|
|
||||||
Типы объектов в системе ESB.
|
|
||||||
|
|
||||||
- _system_ - система
|
|
||||||
- _system-group_ - группа систем
|
|
||||||
- _service_ - сервис
|
|
||||||
- _account_ - аккаунт
|
|
||||||
- _event-topic_ - топик
|
|
||||||
|
|
||||||
=== Методы сервиса
|
|
||||||
|
|
||||||
_Check_ - проверяет описанное право
|
|
||||||
|
|
||||||
Принимает параметры
|
|
||||||
|
|
||||||
- _objectId_ (long) - идентификатор объекта, для которого проверяются права
|
|
||||||
- _objectType_ (String) - тип объекта
|
|
||||||
- _subjectId_ (String) - идентификатор предмета применяемого права
|
|
||||||
- _subjectType_ (String) - тип предмета
|
|
||||||
- _action_ (String) - тип действия, необязательный по умолчанию проставляется значение _default_
|
|
||||||
|
|
||||||
Пример запроса:
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:per="http://www.entaxy.ru/permission/">
|
|
||||||
<soapenv:Header/>
|
|
||||||
<soapenv:Body>
|
|
||||||
<per:permissionCommon>
|
|
||||||
<per:objectId>1</per:objectId>
|
|
||||||
<per:objectType>system</per:objectType>
|
|
||||||
<per:subjectId>2</per:subjectId>
|
|
||||||
<per:subjectType>system</per:subjectType>
|
|
||||||
<!--Optional:-->
|
|
||||||
<per:action>default</per:action>
|
|
||||||
</per:permissionCommon>
|
|
||||||
</soapenv:Body>
|
|
||||||
</soapenv:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
Пример ответа:
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
|
||||||
<soap:Body>
|
|
||||||
<response xmlns="http://www.entaxy.ru/permission/">false</response>
|
|
||||||
</soap:Body>
|
|
||||||
</soap:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
|
|
||||||
=== Get - получает запись Permission
|
|
||||||
|
|
||||||
Принимает параметры
|
|
||||||
|
|
||||||
_permissionId_ (long) - идентификатор объекта _permission_
|
|
||||||
|
|
||||||
Пример запроса:
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:per="http://www.entaxy.ru/permission/">
|
|
||||||
<soapenv:Header/>
|
|
||||||
<soapenv:Body>
|
|
||||||
<per:permissionId>24</per:permissionId>
|
|
||||||
</soapenv:Body>
|
|
||||||
</soapenv:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
Пример ответа:
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
|
||||||
<soap:Body>
|
|
||||||
<tns:permission xmlns:tns="http://www.entaxy.ru/permission/">
|
|
||||||
<tns:permissionId>24</tns:permissionId>
|
|
||||||
<tns:objectId>7</tns:objectId>
|
|
||||||
<tns:objectType>system</tns:objectType>
|
|
||||||
<tns:subjectId>8</tns:subjectId>
|
|
||||||
<tns:subjectType>system</tns:subjectType>
|
|
||||||
<tns:action>connect</tns:action>
|
|
||||||
</tns:permission>
|
|
||||||
</soap:Body>
|
|
||||||
</soap:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
|
|
||||||
=== GetByAllParams - получает запись Permission
|
|
||||||
|
|
||||||
Принимает параметры
|
|
||||||
|
|
||||||
- _objectId_ (long) - идентификатор объекта, для которого проверяются права
|
|
||||||
- _objectType_ (String) - тип объекта
|
|
||||||
- _subjectId_ (String) - идентификатор предмета применяемого права
|
|
||||||
- _subjectType_ (String) - тип предмета
|
|
||||||
- _action_ (String) - тип действия, необязательный по умолчанию проставляется значение _default_
|
|
||||||
|
|
||||||
Пример запроса:
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:per="http://www.entaxy.ru/permission/">
|
|
||||||
<soapenv:Header/>
|
|
||||||
<soapenv:Body>
|
|
||||||
<per:permissionCommon>
|
|
||||||
<per:objectId>7</per:objectId>
|
|
||||||
<per:objectType>system</per:objectType>
|
|
||||||
<per:subjectId>8</per:subjectId>
|
|
||||||
<per:subjectType>system</per:subjectType>
|
|
||||||
<!--Optional:-->
|
|
||||||
<per:action>connect</per:action>
|
|
||||||
</per:permissionCommon>
|
|
||||||
</soapenv:Body>
|
|
||||||
</soapenv:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
Пример ответа:
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
|
||||||
<soap:Body>
|
|
||||||
<tns:permission xmlns:tns="http://www.entaxy.ru/permission/">
|
|
||||||
<tns:permissionId>24</tns:permissionId>
|
|
||||||
<tns:objectId>7</tns:objectId>
|
|
||||||
<tns:objectType>system</tns:objectType>
|
|
||||||
<tns:subjectId>8</tns:subjectId>
|
|
||||||
<tns:subjectType>system</tns:subjectType>
|
|
||||||
<tns:action>connect</tns:action>
|
|
||||||
</tns:permission>
|
|
||||||
</soap:Body>
|
|
||||||
</soap:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
|
|
||||||
=== Create - создаёт запись Permission
|
|
||||||
|
|
||||||
Принимает параметры
|
|
||||||
|
|
||||||
- _objectId_ (long) - идентификатор объекта, для которого проверяются права
|
|
||||||
- _objectType_ (String) - тип объекта
|
|
||||||
- _subjectId_ (String) - идентификатор предмета применяемого права
|
|
||||||
- _subjectType_ (String) - тип предмета
|
|
||||||
- _action_ (String) - тип действия, необязательный по умолчанию проставляется значение _default_
|
|
||||||
|
|
||||||
Пример запроса:
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:per="http://www.entaxy.ru/permission/">
|
|
||||||
<soapenv:Header/>
|
|
||||||
<soapenv:Body>
|
|
||||||
<per:permissionCommon>
|
|
||||||
<per:objectId>7</per:objectId>
|
|
||||||
<per:objectType>account</per:objectType>
|
|
||||||
<per:subjectId>1234</per:subjectId>
|
|
||||||
<per:subjectType>system-group</per:subjectType>
|
|
||||||
<!--Optional:-->
|
|
||||||
<per:action>send</per:action>
|
|
||||||
</per:permissionCommon>
|
|
||||||
</soapenv:Body>
|
|
||||||
</soapenv:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
Пример ответа:
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
|
||||||
<soap:Body>
|
|
||||||
<tns:permission xmlns:tns="http://www.entaxy.ru/permission/">
|
|
||||||
<tns:permissionId>25</tns:permissionId>
|
|
||||||
<tns:objectId>7</tns:objectId>
|
|
||||||
<tns:objectType>account</tns:objectType>
|
|
||||||
<tns:subjectId>1234</tns:subjectId>
|
|
||||||
<tns:subjectType>system-group</tns:subjectType>
|
|
||||||
<tns:action>send</tns:action>
|
|
||||||
</tns:permission>
|
|
||||||
</soap:Body>
|
|
||||||
</soap:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
В случае если запись уже создана возвращается ошибка
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
|
||||||
<soap:Body>
|
|
||||||
<soap:Fault>
|
|
||||||
<faultcode>soap:Server</faultcode>
|
|
||||||
<faultstring>org.hibernate.exception.ConstraintViolationException: could not execute statement</faultstring>
|
|
||||||
</soap:Fault>
|
|
||||||
</soap:Body>
|
|
||||||
</soap:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
=== Update - изменяет запись Permission
|
|
||||||
|
|
||||||
Принимает параметры
|
|
||||||
|
|
||||||
- _permissionId_ (long) - идентификатор объекта permission
|
|
||||||
- _objectId_ (long) - идентификатор объекта, для которого проверяются права
|
|
||||||
- _objectType_ (String) - тип объекта, данный параметр соответствует проектной терминалогии: system, system-group
|
|
||||||
- _subjectId_ (String) - идентификатор предмета применяемого права
|
|
||||||
- _subjectType_ (String) - тип предмета
|
|
||||||
- _action_ (String) - тип действия, необязательный по умолчанию проставляется значение _default_
|
|
||||||
|
|
||||||
Пример запроса:
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:per="http://www.entaxy.ru/permission/">
|
|
||||||
<soapenv:Header/>
|
|
||||||
<soapenv:Body>
|
|
||||||
<per:permission>
|
|
||||||
<per:permissionId>23</per:permissionId>
|
|
||||||
<per:objectId>8</per:objectId>
|
|
||||||
<per:objectType>account</per:objectType>
|
|
||||||
<per:subjectId>1234</per:subjectId>
|
|
||||||
<per:subjectType>system-group</per:subjectType>
|
|
||||||
<!--Optional:-->
|
|
||||||
<per:action>send</per:action>
|
|
||||||
</per:permission>
|
|
||||||
</soapenv:Body>
|
|
||||||
</soapenv:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
|
|
||||||
Пример ответа:
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
|
||||||
<soap:Body>
|
|
||||||
<tns:permission xmlns:tns="http://www.entaxy.ru/permission/">
|
|
||||||
<tns:permissionId>23</tns:permissionId>
|
|
||||||
<tns:objectId>8</tns:objectId>
|
|
||||||
<tns:objectType>account</tns:objectType>
|
|
||||||
<tns:subjectId>1234</tns:subjectId>
|
|
||||||
<tns:subjectType>system-group</tns:subjectType>
|
|
||||||
<tns:action>send</tns:action>
|
|
||||||
</tns:permission>
|
|
||||||
</soap:Body>
|
|
||||||
</soap:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
В случае если запись не найдена возвращается ошибка
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
|
||||||
<soap:Body>
|
|
||||||
<soap:Fault>
|
|
||||||
<faultcode>soap:Server</faultcode>
|
|
||||||
<faultstring>No entity found for query</faultstring>
|
|
||||||
</soap:Fault>
|
|
||||||
</soap:Body>
|
|
||||||
</soap:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
|
|
||||||
=== _Delete_ - удаляет запись _Permission_
|
|
||||||
|
|
||||||
Принимает параметры
|
|
||||||
|
|
||||||
- _objectId_ (long) - идентификатор объекта, для которого проверяются права
|
|
||||||
- _objectType_ (String) - тип объекта
|
|
||||||
- _subjectId_ (String) - идентификатор предмета применяемого права
|
|
||||||
- _subjectType_ (String) - тип предмета
|
|
||||||
- _action_ (String) - тип действия, необязательный по умолчанию проставляется значение _default_
|
|
||||||
|
|
||||||
Пример запроса:
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:per="http://www.entaxy.ru/permission/">
|
|
||||||
<soapenv:Header/>
|
|
||||||
<soapenv:Body>
|
|
||||||
<per:permissionCommon>
|
|
||||||
<per:objectId>7</per:objectId>
|
|
||||||
<per:objectType>account</per:objectType>
|
|
||||||
<per:subjectId>1234</per:subjectId>
|
|
||||||
<per:subjectType>system-group</per:subjectType>
|
|
||||||
<!--Optional:-->
|
|
||||||
<per:action>send</per:action>
|
|
||||||
</per:permissionCommon>
|
|
||||||
</soapenv:Body>
|
|
||||||
</soapenv:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
Пример ответа:
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
|
||||||
<soap:Body>
|
|
||||||
<response xmlns="http://www.entaxy.ru/permission/">true</response>
|
|
||||||
</soap:Body>
|
|
||||||
</soap:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
В случае если запись не найдена возвращается ошибка
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
|
||||||
<soap:Body>
|
|
||||||
<soap:Fault>
|
|
||||||
<faultcode>soap:Server</faultcode>
|
|
||||||
<faultstring>No entity found for query</faultstring>
|
|
||||||
</soap:Fault>
|
|
||||||
</soap:Body>
|
|
||||||
</soap:Envelope>
|
|
||||||
----
|
|
||||||
|
|
Before Width: | Height: | Size: 184 KiB |
@ -1,462 +0,0 @@
|
|||||||
= Sсhema
|
|
||||||
|
|
||||||
Есть три типа ресурсов, которые можно загружать в шину и использовать в маршрутах:
|
|
||||||
|
|
||||||
. Валидационные типы ресурсов (нпрм xsd). Необходимы для валидации сообщения на соответствие той или иной схеме.
|
|
||||||
. Трансформационные типы ресурсов (нпрм xslt, amd). Необходимы для трасформации сообщений из одной схемы в другую.
|
|
||||||
. Ресурсы используемые для генерации сервисов (нпрм wsdl). Необходимы для поднятия сервиса на шине.
|
|
||||||
|
|
||||||
Для загрузки трансформационных ресурсов необходимо указывать, является ли данный трансформатор конвертором и схему-источник и схему-результат для неявного преобразования сообщения(конвертор может быть один и только один для пары: схема источник, схема результат)
|
|
||||||
Схему-источник и схему-результат необходимо указывать только для конверторов, используемых в неявных преобразованиях
|
|
||||||
|
|
||||||
Желательно указывать или определять схему для коннектора, если предполагается использовать функционал неявных преобразований. Неявное преобразование будет работать, если:
|
|
||||||
|
|
||||||
- в заголовке указана схема-источник
|
|
||||||
- в заголовке указана схема-приемник
|
|
||||||
- в реестре есть конвертор для этой пары схем
|
|
||||||
|
|
||||||
Указание схемы может попадать в заголовок неявно (из свойств коннектора или из тела сообщения) или явно через медиатор.
|
|
||||||
|
|
||||||
== Схема работы с ресурсами.
|
|
||||||
|
|
||||||
Сначала загружаем сам ресурс в шину, который мы будем использовать в маршрутах.
|
|
||||||
|
|
||||||
Загружаем ресурс и получаем id, с помощью которого можно и _нужно_ добавить служебную информацию!
|
|
||||||
Также можно перезагрузить данный ресурс и удалять его из шины.
|
|
||||||
|
|
||||||
Также можно загружать служебную информацию, такую как название ресурса, его расширение и т д.
|
|
||||||
Выгружать весь список ресурсов, и по отдельности выкачивать сам ресурс для анализа.
|
|
||||||
Также использовать различные сортировки для поиска определенного типа ресурс.
|
|
||||||
|
|
||||||
== Руководство по загрузке ресурсов в шину.
|
|
||||||
|
|
||||||
*LoadResource.*
|
|
||||||
|
|
||||||
Для загрузки ресурса в шину нужно использовать метод loadResource.
|
|
||||||
|
|
||||||
параметры:
|
|
||||||
|
|
||||||
- resourceValue - сам ресурс, в формате base64
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:reg="http://www.entaxy.ru/registry-schema-service/">
|
|
||||||
<soapenv:Body>
|
|
||||||
<reg:loadResourceRequest>
|
|
||||||
<reg:resourceValue></reg:resourceValue>
|
|
||||||
</reg:loadResourceRequest>
|
|
||||||
</soapenv:Body>
|
|
||||||
</soapenv:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
ответ
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
|
||||||
<soap:Body>
|
|
||||||
<response xmlns="http://www.entaxy.ru/registry-schema-service/">1</response>
|
|
||||||
</soap:Body>
|
|
||||||
</soap:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
*GetResource.*
|
|
||||||
|
|
||||||
Для выгрузки заранее загруженного ресурса в шину нужно использовать метод getResource.
|
|
||||||
|
|
||||||
параметры:
|
|
||||||
|
|
||||||
- getResourceRequest - id ресурса, который вернулся при вызове метода LoadResource
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:reg="http://www.entaxy.ru/registry-schema-service/">
|
|
||||||
<soapenv:Header/>
|
|
||||||
<soapenv:Body>
|
|
||||||
<reg:getResourceRequest>1</reg:getResourceRequest>
|
|
||||||
</soapenv:Body>
|
|
||||||
</soapenv:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
ответ
|
|
||||||
|
|
||||||
параметры:
|
|
||||||
|
|
||||||
- id - это id ресурса
|
|
||||||
- createdDate - дата создания ресурса
|
|
||||||
- createdBy - логин, загрузивший ресурс в шину
|
|
||||||
- editedDate - дата перезагрузки ресурса
|
|
||||||
- editedBy - логин, перезагрузивший ресурс в шине
|
|
||||||
- resourceValue - сам ресурс, в формате base64
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
|
||||||
<soap:Body>
|
|
||||||
<FullResourceType xmlns="http://www.entaxy.ru/registry-schema-service/">
|
|
||||||
<id>1</id>
|
|
||||||
<createdDate>12/15/20, 1:11 AM</createdDate>
|
|
||||||
<createdBy>12/15/20, 1:11 AM</createdBy>
|
|
||||||
<editedDate>12/15/20, 1:18 AM</editedDate>
|
|
||||||
<editedBy>12/15/20, 1:18 AM</editedBy>
|
|
||||||
<resourceValue></resourceValue>
|
|
||||||
</FullResourceType>
|
|
||||||
</soap:Body>
|
|
||||||
</soap:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
*ReloadResource.*
|
|
||||||
|
|
||||||
Для перезагрузки ресурса в шину есть метод reloadResource.
|
|
||||||
|
|
||||||
параметры:
|
|
||||||
|
|
||||||
- id - id ресурса, который вернулся при вызове метода LoadResource
|
|
||||||
- resourceValue - сам ресурс, в формате base64
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:reg="http://www.entaxy.ru/registry-schema-service/">
|
|
||||||
<soapenv:Body>
|
|
||||||
<reg:ResourceType>
|
|
||||||
<reg:id>1</reg:id>
|
|
||||||
<reg:resourceValue></reg:resourceValue>
|
|
||||||
</reg:ResourceType>
|
|
||||||
</soapenv:Body>
|
|
||||||
</soapenv:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
ответ
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
|
||||||
<soap:Body>
|
|
||||||
<response xmlns="http://www.entaxy.ru/registry-schema-service/">1</response>
|
|
||||||
</soap:Body>
|
|
||||||
</soap:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
*RemoveResource.*
|
|
||||||
|
|
||||||
Для удаления ресурса в шине есть метод removeResource.
|
|
||||||
|
|
||||||
параметры:
|
|
||||||
|
|
||||||
- id - id ресурса, который вернулся при вызове метода LoadResource
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:reg="http://www.entaxy.ru/registry-schema-service/">
|
|
||||||
<soapenv:Header/>
|
|
||||||
<soapenv:Body>
|
|
||||||
<reg:removeResourceRequest>1</reg:removeResourceRequest>
|
|
||||||
</soapenv:Body>
|
|
||||||
</soapenv:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
ответ
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
|
||||||
<soap:Body>
|
|
||||||
<response xmlns="http://www.entaxy.ru/registry-schema-service/">1</response>
|
|
||||||
</soap:Body>
|
|
||||||
</soap:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
*LoadResourceInfo.*
|
|
||||||
|
|
||||||
Для загрузки мета информации ресурса в шине есть метод loadResourceInfo.
|
|
||||||
|
|
||||||
параметры:
|
|
||||||
|
|
||||||
- idResource - id ресурса, который вернулся при вызове метода LoadResource
|
|
||||||
- name - имя ресурса вместе с расширением
|
|
||||||
- version - версия ресурса
|
|
||||||
- description - описание ресурса
|
|
||||||
- convertor - является ли ресурс конвертором из одной схемы в другую
|
|
||||||
- namespace - входное пространство имен
|
|
||||||
- namespaceOut - выходное пространство имен, используется для трансформаций из одной схемы в другую
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:reg="http://www.entaxy.ru/registry-schema-service/">
|
|
||||||
<soapenv:Body>
|
|
||||||
<reg:loadResourceInfoRequest>
|
|
||||||
<reg:name>lama.xsd</reg:name>
|
|
||||||
<reg:idResource>1</reg:idResource>
|
|
||||||
<reg:version>1.0</reg:version>
|
|
||||||
<reg:description>lama test</reg:description>
|
|
||||||
<reg:convertor>false</reg:convertor>
|
|
||||||
<reg:namespace>http:lama.xsd</reg:namespace>
|
|
||||||
<reg:namespaceOut>l</reg:namespaceOut>
|
|
||||||
</reg:loadResourceInfoRequest>
|
|
||||||
</soapenv:Body>
|
|
||||||
</soapenv:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
ответ
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
|
||||||
<soap:Body>
|
|
||||||
<response xmlns="http://www.entaxy.ru/registry-schema-service/">1</response>
|
|
||||||
</soap:Body>
|
|
||||||
</soap:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
*GetResourceInfo.*
|
|
||||||
|
|
||||||
Для получения мета информации ресурса в шине есть метод getResourceInfo.
|
|
||||||
|
|
||||||
параметры:
|
|
||||||
|
|
||||||
- getResourceInfoRequest - id мета информации ресурса, который вернулся при вызове метода LoadResourceInfo
|
|
||||||
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:reg="http://www.entaxy.ru/registry-schema-service/">
|
|
||||||
<soapenv:Header/>
|
|
||||||
<soapenv:Body>
|
|
||||||
<reg:getResourceInfoRequest>1</reg:getResourceInfoRequest>
|
|
||||||
</soapenv:Body>
|
|
||||||
</soapenv:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
ответ
|
|
||||||
|
|
||||||
параметры:
|
|
||||||
|
|
||||||
- id - id мета информации ресурса, который вернулся при вызове метода LoadResourceInfo
|
|
||||||
- idResource - id ресурса, который вернулся при вызове метода LoadResource
|
|
||||||
- name - имя ресурса вместе с расширением
|
|
||||||
- version - версия ресурса
|
|
||||||
- description - описание ресурса
|
|
||||||
- convertor - является ли ресурс конвертором из одной схемы в другую
|
|
||||||
- namespace - входное пространство имен
|
|
||||||
- namespaceOut - выходное пространство имен, используется для трансформаций из одной схемы в другую
|
|
||||||
- createdDate - дата создания мета информации ресурса
|
|
||||||
- createdBy - логин, загрузивший мета информацию ресурса в шину
|
|
||||||
- editedDate - дата перезагрузки мета информации ресурса
|
|
||||||
- editedBy - логин, перезагрузивший мета информацию ресурса в шине
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
|
||||||
<soap:Body>
|
|
||||||
<getResourceInfoResponse xmlns="http://www.entaxy.ru/registry-schema-service/">
|
|
||||||
<id>14</id>
|
|
||||||
<name>lama.xsd</name>
|
|
||||||
<idResource>14</idResource>
|
|
||||||
<version>1.0</version>
|
|
||||||
<description>lama test</description>
|
|
||||||
<convertor>false</convertor>
|
|
||||||
<namespace>http:lama.xsd</namespace>
|
|
||||||
<namespaceOut>false</namespaceOut>
|
|
||||||
<createdBy>?</createdBy>
|
|
||||||
<createdDate>12/15/20, 1:33 AM</createdDate>
|
|
||||||
<editedBy>?</editedBy>
|
|
||||||
<editedDate>12/15/20, 1:35 AM</editedDate>
|
|
||||||
</getResourceInfoResponse>
|
|
||||||
</soap:Body>
|
|
||||||
</soap:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
*EditResourceInfo.*
|
|
||||||
|
|
||||||
Для корректирования мета информации ресурса в шине есть метод еditResourceInfo.
|
|
||||||
|
|
||||||
параметры:
|
|
||||||
|
|
||||||
- id - id мета информации ресурса, который вернулся при вызове метода LoadResourceInfo
|
|
||||||
- idResource - id ресурса, который вернулся при вызове метода LoadResource
|
|
||||||
- name - имя ресурса вместе с расширением
|
|
||||||
- version - версия ресурса
|
|
||||||
- description - описание ресурса
|
|
||||||
- convertor - является ли ресурс конвертором из одной схемы в другую
|
|
||||||
- namespace - входное пространство имен
|
|
||||||
- namespaceOut - выходное пространство имен, используется для трансформаций из одной схемы в другую
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:reg="http://www.entaxy.ru/registry-schema-service/">
|
|
||||||
<soapenv:Body>
|
|
||||||
<reg:editResourceInfoRequest>
|
|
||||||
<reg:id>1</reg:id>
|
|
||||||
<reg:name>lama.xsd</reg:name>
|
|
||||||
<reg:idResource>1</reg:idResource>
|
|
||||||
<reg:version>1.0</reg:version>
|
|
||||||
<reg:description>lama test</reg:description>
|
|
||||||
<reg:convertor>false</reg:convertor>
|
|
||||||
<reg:namespace>http:lama.xsd</reg:namespace>
|
|
||||||
<reg:namespaceOut>l</reg:namespaceOut>
|
|
||||||
</reg:editResourceInfoRequest>
|
|
||||||
</soapenv:Body>
|
|
||||||
</soapenv:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
ответ
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
|
||||||
<soap:Body>
|
|
||||||
<response xmlns="http://www.entaxy.ru/registry-schema-service/">14</response>
|
|
||||||
</soap:Body>
|
|
||||||
</soap:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
*RemoveResourceInfo.*
|
|
||||||
|
|
||||||
Для удаления мета информации ресурса в шине есть метод removeResourceInfo.
|
|
||||||
|
|
||||||
параметры:
|
|
||||||
|
|
||||||
- id - id мета информации ресурса, который вернулся при вызове метода LoadResourceInfo
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:reg="http://www.entaxy.ru/registry-schema-service/">
|
|
||||||
<soapenv:Header/>
|
|
||||||
<soapenv:Body>
|
|
||||||
<reg:removeResourceInfoRequest>1</reg:removeResourceInfoRequest>
|
|
||||||
</soapenv:Body>
|
|
||||||
</soapenv:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
ответ
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
|
||||||
<soap:Body>
|
|
||||||
<response xmlns="http://www.entaxy.ru/registry-schema-service/">1</response>
|
|
||||||
</soap:Body>
|
|
||||||
</soap:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
*GetResourceInfoList.*
|
|
||||||
|
|
||||||
Для получения списка мета информации ресурсов в шине есть метод getResourceInfoList.
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:reg="http://www.entaxy.ru/registry-schema-service/">
|
|
||||||
<soapenv:Header/>
|
|
||||||
<soapenv:Body>
|
|
||||||
<reg:getResourceInfoListRequest/>
|
|
||||||
</soapenv:Body>
|
|
||||||
</soapenv:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
ответ
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
|
||||||
<soap:Body>
|
|
||||||
<getResourceInfoListResponse xmlns="http://www.entaxy.ru/registry-schema-service/">
|
|
||||||
<ResourceInfoFullType>
|
|
||||||
<id>1</id>
|
|
||||||
<name>lama.xsd</name>
|
|
||||||
<idResource>1</idResource>
|
|
||||||
<version>1.0</version>
|
|
||||||
<description>lama test</description>
|
|
||||||
<convertor>false</convertor>
|
|
||||||
<namespace>http:lama.xsd</namespace>
|
|
||||||
<namespaceOut>l</namespaceOut>
|
|
||||||
<createdBy>?</createdBy>
|
|
||||||
<createdDate>12/14/20, 10:00 PM</createdDate>
|
|
||||||
</ResourceInfoFullType>
|
|
||||||
</getResourceInfoListResponse>
|
|
||||||
</soap:Body>
|
|
||||||
</soap:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
*GetResourceInfoListByName.*
|
|
||||||
|
|
||||||
Для получения списка мета информации ресурсов по имени ресурса в шине есть метод getResourceInfoListByName.
|
|
||||||
|
|
||||||
параметры:
|
|
||||||
|
|
||||||
- name - часть имени мета информации ресурса
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:reg="http://www.entaxy.ru/registry-schema-service/">
|
|
||||||
<soapenv:Header/>
|
|
||||||
<soapenv:Body>
|
|
||||||
<reg:getResourceInfoListByNameRequest>
|
|
||||||
<reg:name>.xsd</reg:name>
|
|
||||||
</reg:getResourceInfoListByNameRequest>
|
|
||||||
</soapenv:Body>
|
|
||||||
</soapenv:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
ответ
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
|
||||||
<soap:Body>
|
|
||||||
<getResourceInfoListResponse xmlns="http://www.entaxy.ru/registry-schema-service/">
|
|
||||||
<ResourceInfoFullType>
|
|
||||||
<id>1</id>
|
|
||||||
<name>lama.xsd</name>
|
|
||||||
<idResource>1</idResource>
|
|
||||||
<version>1.0</version>
|
|
||||||
<description>lama test</description>
|
|
||||||
<convertor>false</convertor>
|
|
||||||
<namespace>http:lama.xsd</namespace>
|
|
||||||
<namespaceOut>l</namespaceOut>
|
|
||||||
<createdBy>?</createdBy>
|
|
||||||
<createdDate>12/14/20, 10:00 PM</createdDate>
|
|
||||||
</ResourceInfoFullType>
|
|
||||||
</getResourceInfoListResponse>
|
|
||||||
</soap:Body>
|
|
||||||
</soap:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
*GetResourceInfoListByNamespace.*
|
|
||||||
|
|
||||||
Для получения списка мета информации ресурсов по namespace ресурса в шине есть метод getResourceInfoListByNamespace.
|
|
||||||
|
|
||||||
параметры:
|
|
||||||
|
|
||||||
- namespace - часть namespace мета информации ресурса
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:reg="http://www.entaxy.ru/registry-schema-service/">
|
|
||||||
<soapenv:Header/>
|
|
||||||
<soapenv:Body>
|
|
||||||
<reg:getResourceInfoListByNamespaceRequest>
|
|
||||||
<reg:namespace>lama</reg:namespace>
|
|
||||||
</reg:getResourceInfoListByNamespaceRequest>
|
|
||||||
</soapenv:Body>
|
|
||||||
</soapenv:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
ответ
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
|
||||||
<soap:Body>
|
|
||||||
<getResourceInfoListResponse xmlns="http://www.entaxy.ru/registry-schema-service/">
|
|
||||||
<ResourceInfoFullType>
|
|
||||||
<id>1</id>
|
|
||||||
<name>lama.xsd</name>
|
|
||||||
<idResource>1</idResource>
|
|
||||||
<version>1.0</version>
|
|
||||||
<description>lama test</description>
|
|
||||||
<convertor>false</convertor>
|
|
||||||
<namespace>http:lama.xsd</namespace>
|
|
||||||
<namespaceOut>l</namespaceOut>
|
|
||||||
<createdBy>?</createdBy>
|
|
||||||
<createdDate>12/14/20, 10:00 PM</createdDate>
|
|
||||||
</ResourceInfoFullType>
|
|
||||||
</getResourceInfoListResponse>
|
|
||||||
</soap:Body>
|
|
||||||
</soap:Envelope>
|
|
||||||
----
|
|
Before Width: | Height: | Size: 166 KiB |
Before Width: | Height: | Size: 181 KiB |
Before Width: | Height: | Size: 288 KiB |
Before Width: | Height: | Size: 288 KiB |
Before Width: | Height: | Size: 288 KiB |
Before Width: | Height: | Size: 407 KiB |
Before Width: | Height: | Size: 452 KiB |
Before Width: | Height: | Size: 232 KiB |
Before Width: | Height: | Size: 367 KiB |
Before Width: | Height: | Size: 365 KiB |
Before Width: | Height: | Size: 155 KiB |
Before Width: | Height: | Size: 261 KiB |
Before Width: | Height: | Size: 207 KiB |
Before Width: | Height: | Size: 170 KiB |
Before Width: | Height: | Size: 170 KiB |
Before Width: | Height: | Size: 213 KiB |
Before Width: | Height: | Size: 338 KiB |
@ -1,836 +0,0 @@
|
|||||||
= Руководство по управлению коннекторами и профилями в шине.
|
|
||||||
|
|
||||||
_Профиль(profile)_ - это описание внешней системы в шине.(Например s1).
|
|
||||||
|
|
||||||
_Мостовой профиль(bridge-profile)_ - это профиль на другой стороне шины, ведущий через мост в профиль.
|
|
||||||
(Например s1)
|
|
||||||
|
|
||||||
_Коннектор(connector)_ - это связь между интерфейсом, через который может работать система, и профилем.(Например uniform-service, nsi)
|
|
||||||
|
|
||||||
_Доступ(permission)_ - это разрешение на взаимодействие двух систем.(Например для того чтобы система s1 смогла отправить сообщение s2)(/permission-management)
|
|
||||||
|
|
||||||
_Учетная запись(account)_ - это учетная запись системы для взаимодействия с шиной.
|
|
||||||
Для каждой системы должна быть учетная запись для возможности отправления сообщений в шину.
|
|
||||||
Также есть учетные записи для возможности взаимодействия с управленческим слоем(т. е. для того чтобы управлять коннекторами/профилями/учетными записями/топиками нужна учетная запись с соответствующими правами)(/basic-auth-management)
|
|
||||||
|
|
||||||
Коннекторы делятся на входящие и исходящие(in, out), которые отвечают за отправку сообщения в определенный интерфейс и на получение ответа из определенного интерфейса соответственно.
|
|
||||||
Например, для того чтобы иметь возможность отправить сообщение в soap нужно создать коннектор uniform-service-in-connector, а для того чтобы получить сообщение из soap нужно создать коннектор uniform-service-out-connector.
|
|
||||||
|
|
||||||
По адресу _/system-management-service_ находится сам сервис управления коннекторами и профилями в шине.
|
|
||||||
|
|
||||||
Для работы внешней системы в шине нужно сначала создать профиль данной системы в шине, потом добавлять к нему необходимые коннекторы и пробрасывать его в необходимые шины.
|
|
||||||
|
|
||||||
=== Управление профилями
|
|
||||||
|
|
||||||
*СreateProfile.*
|
|
||||||
|
|
||||||
Для создания профиля системы нужно вызвать метод createProfile, где вместо “system_uuid” нужно подставить uuid системы, вместо “system_name” - имя системы, “description” описание системы:
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sys="http://www.entaxy.ru/system-management-service/">
|
|
||||||
<soapenv:Header/>
|
|
||||||
<soapenv:Body>
|
|
||||||
<sys:createProfileRequest>
|
|
||||||
<sys:profileName>{{system_uuid}}</sys:profileName>
|
|
||||||
<sys:uuid>{{system_uuid}}</sys:uuid>
|
|
||||||
<!--Optional:-->
|
|
||||||
<sys:description>{{description}}</sys:description>
|
|
||||||
</sys:createProfileRequest>
|
|
||||||
</soapenv:Body>
|
|
||||||
|
|
||||||
</soapenv:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
Где ответом будет (“true” - если профиль успешно создался, ошибка и ее описание):
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
|
||||||
<soap:Body>
|
|
||||||
<response xmlns="http://www.entaxy.ru/system-management-service/">true</response>
|
|
||||||
</soap:Body>
|
|
||||||
</soap:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
*GetProfile.*
|
|
||||||
|
|
||||||
Проверить созданный профиль можно с помощью метода getProfile, где вместо “system_uuid” нужно подставить uuid системы:
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sys="http://www.entaxy.ru/system-management-service/">
|
|
||||||
<soapenv:Header/>
|
|
||||||
<soapenv:Body>
|
|
||||||
<sys:getProfileRequest>
|
|
||||||
<sys:uuid>{{system_uuid}}</sys:uuid>
|
|
||||||
</sys:getProfileRequest>
|
|
||||||
</soapenv:Body>
|
|
||||||
</soapenv:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
Где ответом будет (профиль со всеми зависимостями, либо ошибка и ее описание):
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
|
||||||
<soap:Body>
|
|
||||||
<fullProfileType xmlns="http://www.entaxy.ru/system-management-service/">
|
|
||||||
<profileName>w6</profileName>
|
|
||||||
<uuid>w6</uuid>
|
|
||||||
<description>description</description>
|
|
||||||
<createDate>2020-01-22+03:00</createDate>
|
|
||||||
<createdBy>System</createdBy>
|
|
||||||
<type>false</type>
|
|
||||||
<status>ACTIVE</status>
|
|
||||||
<connectorList/>
|
|
||||||
<esbNames/>
|
|
||||||
</fullProfileType>
|
|
||||||
</soap:Body>
|
|
||||||
</soap:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
*GetProfiles*
|
|
||||||
|
|
||||||
Получить список профилей, зарегистрированных в шине, можно с помощью метода getProfiles:
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sys="http://www.entaxy.ru/system-management-service/">
|
|
||||||
<soapenv:Header/>
|
|
||||||
<soapenv:Body>
|
|
||||||
<sys:listProfileRequest/>
|
|
||||||
</soapenv:Body>
|
|
||||||
</soapenv:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
Где ответом будет (список профилей со всеми зависимостями, либо ошибка и ее описание):
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
|
||||||
<soap:Body>
|
|
||||||
<listProfile xmlns="http://www.entaxy.ru/system-management-service/">
|
|
||||||
<fullProfileType>
|
|
||||||
<profileName>w6</profileName>
|
|
||||||
<uuid>w6</uuid>
|
|
||||||
<description>description</description>
|
|
||||||
<createDate>2020-01-22+03:00</createDate>
|
|
||||||
<createdBy>System</createdBy>
|
|
||||||
<type>false</type>
|
|
||||||
<status>ACTIVE</status>
|
|
||||||
<connectorList/>
|
|
||||||
<esbNames/>
|
|
||||||
</fullProfileType>
|
|
||||||
</listProfile>
|
|
||||||
</soap:Body>
|
|
||||||
</soap:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
*StopProfile*
|
|
||||||
|
|
||||||
Остановить профиль и все его зависимости можно с помощью метода stopProfile, где вместо “system_uuid” нужно подставить uuid системы:
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sys="http://www.entaxy.ru/system-management-service/">
|
|
||||||
<soapenv:Header/>
|
|
||||||
<soapenv:Body>
|
|
||||||
<sys:stopProfileRequest>
|
|
||||||
<sys:uuid>{{system_uuid}}</sys:uuid>
|
|
||||||
</sys:stopProfileRequest>
|
|
||||||
</soapenv:Body>
|
|
||||||
</soapenv:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
Где ответом будет (“true” - если профиль и его зависимости успешно остановились, ошибка и ее описание):
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
|
||||||
<soap:Body>
|
|
||||||
<response xmlns="http://www.entaxy.ru/system-management-service/">true</response>
|
|
||||||
</soap:Body>
|
|
||||||
</soap:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
*StartProfile*
|
|
||||||
|
|
||||||
Запустить профиль и все его зависимости можно с помощью метода startProfile, где вместо “system_uuid” нужно подставить uuid системы:
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sys="http://www.entaxy.ru/system-management-service/">
|
|
||||||
<soapenv:Header/>
|
|
||||||
<soapenv:Body>
|
|
||||||
<sys:stopProfileRequest>
|
|
||||||
<sys:uuid>{{system_uuid}}</sys:uuid>
|
|
||||||
</sys:stopProfileRequest>
|
|
||||||
</soapenv:Body>
|
|
||||||
</soapenv:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
Где ответом будет (“true” - если профиль успешно запустился, ошибка и ее описание):
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
|
||||||
<soap:Body>
|
|
||||||
<response xmlns="http://www.entaxy.ru/system-management-service/">true</response>
|
|
||||||
</soap:Body>
|
|
||||||
</soap:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
*RemoveProfile*
|
|
||||||
|
|
||||||
Удалить профиль и все его зависимости можно с помощью метода removeProfile, где вместо “system_uuid” нужно подставить uuid системы(ВНИМАНИЕ!
|
|
||||||
При удалении профиля также удаляются все связанные с ним коннекторы):
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sys="http://www.entaxy.ru/system-management-service/">
|
|
||||||
<soapenv:Header/>
|
|
||||||
<soapenv:Body>
|
|
||||||
<sys:stopProfileRequest>
|
|
||||||
<sys:uuid>{{system_uuid}}</sys:uuid>
|
|
||||||
</sys:stopProfileRequest>
|
|
||||||
</soapenv:Body>
|
|
||||||
</soapenv:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
Где ответом будет (“true” - если профиль и его зависимости успешно удалился, ошибка и ее описание):
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
|
||||||
<soap:Body>
|
|
||||||
<response xmlns="http://www.entaxy.ru/system-management-service/">true</response>
|
|
||||||
</soap:Body>
|
|
||||||
</soap:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
=== Управление коннекторами
|
|
||||||
|
|
||||||
*GetTemplates*
|
|
||||||
|
|
||||||
Для создания коннектора в шине нужно получить список шаблонов(требуются для создания коннекторов) методом getTemplates:
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sys="http://www.entaxy.ru/system-management-service/">
|
|
||||||
<soapenv:Header/>
|
|
||||||
<soapenv:Body>
|
|
||||||
<sys:listTemplateRequest/>
|
|
||||||
</soapenv:Body>
|
|
||||||
</soapenv:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
Где ответом будет (список шаблонов с параметрами):
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
|
||||||
<soap:Body>
|
|
||||||
<listTemplate xmlns="http://www.entaxy.ru/system-management-service/">
|
|
||||||
<template>
|
|
||||||
<templateName>file-out-connector</templateName>
|
|
||||||
<paramList>
|
|
||||||
<param>
|
|
||||||
<name>directionTo</name>
|
|
||||||
<value>file-to</value>
|
|
||||||
</param>
|
|
||||||
</paramList>
|
|
||||||
</template>
|
|
||||||
<template>
|
|
||||||
<templateName>nsi-in-connector</templateName>
|
|
||||||
<paramList/>
|
|
||||||
</template>
|
|
||||||
<template>
|
|
||||||
<templateName>uniform-service-in-connector</templateName>
|
|
||||||
<paramList/>
|
|
||||||
</template>
|
|
||||||
<template>
|
|
||||||
<templateName>uniform-service-out-connector</templateName>
|
|
||||||
<paramList>
|
|
||||||
<param>
|
|
||||||
<name>isActive</name>
|
|
||||||
<value>false</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<name>queue</name>
|
|
||||||
<value>soap-root-default</value>
|
|
||||||
</param>
|
|
||||||
</paramList>
|
|
||||||
</template>
|
|
||||||
</listTemplate>
|
|
||||||
</soap:Body>
|
|
||||||
</soap:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
*GetTemplate*
|
|
||||||
|
|
||||||
Для создания коннектора в шине нужно получить список шаблонов(требуются для создания коннекторов) методом getTemplate, где “template_name” имя шаблона по которому будет сделан коннектор:
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sys="http://www.entaxy.ru/system-management-service/">
|
|
||||||
<soapenv:Header/>
|
|
||||||
<soapenv:Body>
|
|
||||||
<sys:getTemplateRequest>
|
|
||||||
<sys:templateName>{{template_name}}</sys:templateName>
|
|
||||||
</sys:getTemplateRequest>
|
|
||||||
</soapenv:Body>
|
|
||||||
</soapenv:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
Где ответом будет (шаблон с параметрами):
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
|
||||||
<soap:Body>
|
|
||||||
<template xmlns="http://www.entaxy.ru/system-management-service/">
|
|
||||||
<templateName>nsi-in-connector</templateName>
|
|
||||||
<paramList/>
|
|
||||||
</template>
|
|
||||||
</soap:Body>
|
|
||||||
</soap:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
*СreateConnector*
|
|
||||||
|
|
||||||
Для создания коннектора в шине нужно вызвать метод createConnector, где templateName - это имя шаблона, полученное из метода getTemplates, system_uuid - это uuid профиля, зарегистрированного в системе ранее, также нужно заполнить список параметров необходимый для создания коннектора(ВНИМАНИЕ! если не заполнить список параметров, то установятся значения по умолчанию) :
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sys="http://www.entaxy.ru/system-management-service/">
|
|
||||||
<soapenv:Header/>
|
|
||||||
<soapenv:Body>
|
|
||||||
<sys:createConnectorRequest>
|
|
||||||
<sys:templateName>{{template_name}}</sys:templateName>
|
|
||||||
<sys:profileUuid>{{system_uuid}}</sys:profileUuid>
|
|
||||||
<sys:paramList>
|
|
||||||
<!--Zero or more repetitions:-->
|
|
||||||
</sys:paramList>
|
|
||||||
</sys:createConnectorRequest>
|
|
||||||
</soapenv:Body>
|
|
||||||
</soapenv:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
Где ответом будет (“true” - если коннектор успешно создался, ошибка и ее описание):
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
|
||||||
<soap:Body>
|
|
||||||
<response xmlns="http://www.entaxy.ru/system-management-service/">true</response>
|
|
||||||
</soap:Body>
|
|
||||||
</soap:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
*GetConnectors*
|
|
||||||
|
|
||||||
Можно просматривать список подключенных коннекторов в шине методом getConnectors:
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sys="http://www.entaxy.ru/system-management-service/">
|
|
||||||
<soapenv:Header/>
|
|
||||||
<soapenv:Body>
|
|
||||||
<sys:listConnectorRequest/>
|
|
||||||
</soapenv:Body>
|
|
||||||
</soapenv:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
Где ответом будет (список коннкторов с параметрами):
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
|
||||||
<soap:Body>
|
|
||||||
<listConnector xmlns="http://www.entaxy.ru/system-management-service/">
|
|
||||||
<connector>
|
|
||||||
<name>nsi-in-connector-w6</name>
|
|
||||||
<status>ACTIVE</status>
|
|
||||||
<paramList/>
|
|
||||||
</connector>
|
|
||||||
</listConnector>
|
|
||||||
</soap:Body>
|
|
||||||
</soap:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
*StartConnector*
|
|
||||||
|
|
||||||
Запустить коннектор можно с помощью метода startConnector, где вместо “system_uuid” нужно подставить uuid системы, “template_name” это имя шаблона:
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sys="http://www.entaxy.ru/system-management-service/">
|
|
||||||
<soapenv:Header/>
|
|
||||||
<soapenv:Body>
|
|
||||||
<sys:startConnectorRequest>
|
|
||||||
<sys:templateName>{{template_name}}</sys:templateName>
|
|
||||||
<sys:profileUuid>{{system_uuid}}</sys:profileUuid>
|
|
||||||
</sys:startConnectorRequest>
|
|
||||||
</soapenv:Body>
|
|
||||||
</soapenv:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
Где ответом будет (“true” - если коннектор успешно запустился, ошибка и ее описание):
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
|
||||||
<soap:Body>
|
|
||||||
<response xmlns="http://www.entaxy.ru/system-management-service/">true</response>
|
|
||||||
</soap:Body>
|
|
||||||
</soap:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
*StopConnector*
|
|
||||||
|
|
||||||
Остановить коннектор можно с помощью метода stopConnector, где вместо “system_uuid” нужно подставить uuid системы, “template_name” это имя шаблона:
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sys="http://www.entaxy.ru/system-management-service/">
|
|
||||||
<soapenv:Header/>
|
|
||||||
<soapenv:Body>
|
|
||||||
<sys:stopConnectorRequest>
|
|
||||||
<sys:templateName>{{template_name}}</sys:templateName>
|
|
||||||
<sys:profileUuid>{{system_uuid}}</sys:profileUuid>
|
|
||||||
</sys:stopConnectorRequest>
|
|
||||||
</soapenv:Body>
|
|
||||||
</soapenv:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
Где ответом будет (“true” - если коннектор успешно остановилась, ошибка и ее описание):
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
|
||||||
<soap:Body>
|
|
||||||
<response xmlns="http://www.entaxy.ru/system-management-service/">true</response>
|
|
||||||
</soap:Body>
|
|
||||||
</soap:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
*RemoveConnector*
|
|
||||||
|
|
||||||
Удалить коннектор можно с помощью метода removeConnector, где вместо “system_uuid” нужно подставить uuid системы, “template_name” это имя шаблона:
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sys="http://www.entaxy.ru/system-management-service/">
|
|
||||||
<soapenv:Header/>
|
|
||||||
<soapenv:Body>
|
|
||||||
<sys:removeConnectorRequest>
|
|
||||||
<sys:templateName>{{template_name}}</sys:templateName>
|
|
||||||
<sys:profileUuid>{{system_uuid}}</sys:profileUuid>
|
|
||||||
</sys:removeConnectorRequest>
|
|
||||||
</soapenv:Body>
|
|
||||||
</soapenv:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
Где ответом будет (“true” - если коннектор успешно удалился, ошибка и ее описание):
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
|
||||||
<soap:Body>
|
|
||||||
<response xmlns="http://www.entaxy.ru/system-management-service/">true</response>
|
|
||||||
</soap:Body>
|
|
||||||
</soap:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
=== Управление мостовыми профилями
|
|
||||||
|
|
||||||
*GetListEsb*
|
|
||||||
|
|
||||||
Для получения списка подключенных шин можно с помощью метода getListEsb:
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sys="http://www.entaxy.ru/system-management-service/">
|
|
||||||
<soapenv:Header/>
|
|
||||||
<soapenv:Body>
|
|
||||||
<sys:listEsbRequest/>
|
|
||||||
</soapenv:Body>
|
|
||||||
</soapenv:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
Где ответом будет (список подключенных шин, ошибка и ее описание):
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
|
||||||
<soap:Body>
|
|
||||||
<listEsb xmlns="http://www.entaxy.ru/system-management-service/">
|
|
||||||
<esbName>test1</esbName>
|
|
||||||
</listEsb>
|
|
||||||
</soap:Body>
|
|
||||||
</soap:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
*CreateBridgeProfile*
|
|
||||||
|
|
||||||
Создать профиль, ведущий на мост, можно с помощью метода createBridgeProfile, где “system_uuid” uuid системы, “esb_name” имя подключенной шины:
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sys="http://www.entaxy.ru/system-management-service/">
|
|
||||||
<soapenv:Header/>
|
|
||||||
<soapenv:Body>
|
|
||||||
<sys:createBridgeProfileRequest>
|
|
||||||
<sys:profileUuid>{{system_uuid}}</sys:profileUuid>
|
|
||||||
<sys:profileName>{{system_uuid}}</sys:profileName>
|
|
||||||
<sys:esbName>{{esb_name}}</sys:esbName>
|
|
||||||
</sys:createBridgeProfileRequest>
|
|
||||||
</soapenv:Body>
|
|
||||||
</soapenv:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
Где ответом будет (“true” - если профиль, ведущий на мост, успешно создался, ошибка и ее описание):
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
|
||||||
<soap:Body>
|
|
||||||
<response xmlns="http://www.entaxy.ru/system-management-service/">true</response>
|
|
||||||
</soap:Body>
|
|
||||||
</soap:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
*StopBridgeProfile*
|
|
||||||
|
|
||||||
Остановить профиль, ведущий на мост, можно с помощью метода stopBridgeProfile, где “system_uuid” uuid системы, “esb_name” имя подключенной шины:
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sys="http://www.entaxy.ru/system-management-service/">
|
|
||||||
<soapenv:Header/>
|
|
||||||
<soapenv:Body>
|
|
||||||
<sys:stopBridgeProfileRequest>
|
|
||||||
<sys:profileUuid>{{system_uuid}}</sys:profileUuid>
|
|
||||||
<sys:profileName>{{system_uuid}}</sys:profileName>
|
|
||||||
<sys:esbName>{{esb_name}}</sys:esbName>
|
|
||||||
</sys:stopBridgeProfileRequest>
|
|
||||||
</soapenv:Body>
|
|
||||||
</soapenv:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
Где ответом будет (“true” - если профиль, ведущий на мост, успешно остановился, ошибка и ее описание):
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
|
||||||
<soap:Body>
|
|
||||||
<response xmlns="http://www.entaxy.ru/system-management-service/">true</response>
|
|
||||||
</soap:Body>
|
|
||||||
</soap:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
*StartBridgeProfile*
|
|
||||||
|
|
||||||
Запустить профиль, ведущий на мост, можно с помощью метода startBridgeProfile, где “system_uuid” uuid системы, “esb_name” имя подключенной шины:
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sys="http://www.entaxy.ru/system-management-service/">
|
|
||||||
<soapenv:Header/>
|
|
||||||
<soapenv:Body>
|
|
||||||
<sys:startBridgeProfileRequest>
|
|
||||||
<sys:profileUuid>{{system_uuid}}</sys:profileUuid>
|
|
||||||
<sys:profileName>{{system_uuid}}</sys:profileName>
|
|
||||||
<sys:esbName>{{esb_name}}</sys:esbName>
|
|
||||||
</sys:startBridgeProfileRequest>
|
|
||||||
</soapenv:Body>
|
|
||||||
</soapenv:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
Где ответом будет (“true” - если профиль, ведущий на мост, успешно запустился, ошибка и ее описание):
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
|
||||||
<soap:Body>
|
|
||||||
<response xmlns="http://www.entaxy.ru/system-management-service/">true</response>
|
|
||||||
</soap:Body>
|
|
||||||
</soap:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
*GetBridgeProfile*
|
|
||||||
|
|
||||||
Получить профиль, ведущий на мост, можно с помощью метода getBridgeProfile, где “system_uuid” uuid системы, “esb_name” имя подключенной шины:
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sys="http://www.entaxy.ru/system-management-service/">
|
|
||||||
<soapenv:Header/>
|
|
||||||
<soapenv:Body>
|
|
||||||
<sys:getBridgeProfileRequest>
|
|
||||||
<sys:profileUuid>{{system_uuid}}</sys:profileUuid>
|
|
||||||
<sys:profileName>{{system_uuid}}</sys:profileName>
|
|
||||||
<sys:esbName>{{esb_name}}</sys:esbName>
|
|
||||||
</sys:getBridgeProfileRequest>
|
|
||||||
</soapenv:Body>
|
|
||||||
</soapenv:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
Где ответом будет (профиль, ведущий на мост, пустой ответ):
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
|
||||||
<soap:Body>
|
|
||||||
<fullBridgeProfileType xmlns="http://www.entaxy.ru/system-management-service/">
|
|
||||||
<profileName>w6</profileName>
|
|
||||||
<status>ACTIVE</status>
|
|
||||||
<esbName>test1</esbName>
|
|
||||||
</fullBridgeProfileType>
|
|
||||||
</soap:Body>
|
|
||||||
</soap:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
*RemoveBridgeProfile*
|
|
||||||
|
|
||||||
Удалить профиль, ведущий на мост, можно с помощью метода removeBridgeProfile, где “system_uuid” uuid системы, “esb_name” имя подключенной шины:
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sys="http://www.entaxy.ru/system-management-service/">
|
|
||||||
<soapenv:Header/>
|
|
||||||
<soapenv:Body>
|
|
||||||
<sys:removeBridgeProfileRequest>
|
|
||||||
<sys:profileUuid>{{system_uuid}}</sys:profileUuid>
|
|
||||||
<sys:profileName>{{system_uuid}}</sys:profileName>
|
|
||||||
<sys:esbName>{{esb_name}}</sys:esbName>
|
|
||||||
</sys:removeBridgeProfileRequest>
|
|
||||||
</soapenv:Body>
|
|
||||||
</soapenv:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
Где ответом будет (“true” - если профиль, ведущий на мост, успешно удален, ошибка и ее описание):
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
|
||||||
<soap:Body>
|
|
||||||
<response xmlns="http://www.entaxy.ru/system-management-service/">true</response>
|
|
||||||
</soap:Body>
|
|
||||||
</soap:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
*GetBridgeProfiles*
|
|
||||||
|
|
||||||
Для получения списка профилей, ведущих на мост, можно использовать метод getBridgeProfiles:(ВНИМАНИЕ! запрос покажет список проброшенных профилей на ТЕКУЩЕЙ шине)
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sys="http://www.entaxy.ru/system-management-service/">
|
|
||||||
<soapenv:Header/>
|
|
||||||
<soapenv:Body>
|
|
||||||
<sys:getBridgeProfilesRequest/>
|
|
||||||
</soapenv:Body>
|
|
||||||
</soapenv:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
Где ответом будет (список профиль, ведущих на мост, пустой ответ):
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
|
||||||
<soap:Body>
|
|
||||||
<getBridgeProfilesResponse xmlns="http://www.entaxy.ru/system-management-service/">
|
|
||||||
<fullBridgeProfileType>
|
|
||||||
<profileName>w6</profileName>
|
|
||||||
<status>ACTIVE</status>
|
|
||||||
<esbName>test1</esbName>
|
|
||||||
</fullBridgeProfileType>
|
|
||||||
</getBridgeProfilesResponse>
|
|
||||||
</soap:Body>
|
|
||||||
</soap:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
=== Управление доступами
|
|
||||||
|
|
||||||
*CreatePermission*
|
|
||||||
|
|
||||||
Создать доступ одной системы к другой, можно с помощью метода createPermission, где “objectUuid” uuid системы, которой нужно дать доступ, “subjectUuid” - uuid системы, к которой нужно дать доступ:
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sys="http://www.entaxy.ru/system-management-service/">
|
|
||||||
<soapenv:Header/>
|
|
||||||
<soapenv:Body>
|
|
||||||
<sys:createPermissionRequest>
|
|
||||||
<sys:objectUuid>{{objectUuid}}</sys:objectUuid>
|
|
||||||
<sys:subjectUuid>{{subjectUuid}}</sys:subjectUuid>
|
|
||||||
</sys:createPermissionRequest>
|
|
||||||
</soapenv:Body>
|
|
||||||
</soapenv:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
Где ответом будет (“true” - если доступ, успешно создался, ошибка и ее описание):
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
|
||||||
<soap:Body>
|
|
||||||
<response xmlns="http://www.entaxy.ru/system-management-service/">true</response>
|
|
||||||
</soap:Body>
|
|
||||||
</soap:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
*RemovePermission*
|
|
||||||
|
|
||||||
Удалить доступ одной системы к другой, можно с помощью метода removePermission, где “objectUuid” uuid системы, которой нужно дать доступ, “subjectUuid” - uuid системы, к которой нужно дать доступ:
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sys="http://www.entaxy.ru/system-management-service/">
|
|
||||||
<soapenv:Header/>
|
|
||||||
<soapenv:Body>
|
|
||||||
<sys:removePermissionRequest>
|
|
||||||
<sys:objectUuid>{{objectUuid}}</sys:objectUuid>
|
|
||||||
<sys:subjectUuid>{{subjectUuid}}</sys:subjectUuid>
|
|
||||||
</sys:removePermissionRequest>
|
|
||||||
</soapenv:Body>
|
|
||||||
</soapenv:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
Где ответом будет (“true” - если доступ, успешно удалился, ошибка и ее описание):
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
|
||||||
<soap:Body>
|
|
||||||
<response xmlns="http://www.entaxy.ru/system-management-service/">true</response>
|
|
||||||
</soap:Body>
|
|
||||||
</soap:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
*GetPermissionsByObject*
|
|
||||||
|
|
||||||
Получить список систем, доступ к которым от данной системы разрешен, можно с помощью метода getPermissionByObject, где “objectUuid” uuid системы:
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sys="http://www.entaxy.ru/system-management-service/">
|
|
||||||
<soapenv:Header/>
|
|
||||||
<soapenv:Body>
|
|
||||||
<sys:getPermissionsByObjectRequest>
|
|
||||||
<sys:uuid>{{objectUuid}}</sys:uuid>
|
|
||||||
</sys:getPermissionsByObjectRequest>
|
|
||||||
</soapenv:Body>
|
|
||||||
</soapenv:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
Где ответом будет (список систем, которым данная система может отправлять сообщения, ошибка и ее описание):
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
|
||||||
<soap:Body>
|
|
||||||
<getPermissionsByObjectResponse xmlns="http://www.entaxy.ru/system-management-service/">
|
|
||||||
<profileType>
|
|
||||||
<uuid>r2</uuid>
|
|
||||||
</profileType>
|
|
||||||
<profileType>
|
|
||||||
<uuid>active</uuid>
|
|
||||||
</profileType>
|
|
||||||
</getPermissionsByObjectResponse>
|
|
||||||
</soap:Body>
|
|
||||||
</soap:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
*GetPermissionsBySubject*
|
|
||||||
|
|
||||||
Получить список систем, доступ которым разрешен к данной системе, можно с помощью метода getPermissionBySubject, где “subjectUuid” uuid системы:
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sys="http://www.entaxy.ru/system-management-service/">
|
|
||||||
<soapenv:Header/>
|
|
||||||
<soapenv:Body>
|
|
||||||
<sys:getPermissionsBySubjectRequest>
|
|
||||||
<sys:uuid>{{subjectUuid}}</sys:uuid>
|
|
||||||
</sys:getPermissionsBySubjectRequest>
|
|
||||||
</soapenv:Body>
|
|
||||||
</soapenv:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
Где ответом будет (список систем, для которых данная система доступна для отправки сообщений, ошибка и ее описание):
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
|
||||||
<soap:Body>
|
|
||||||
<getPermissionsBySubjectResponse xmlns="http://www.entaxy.ru/system-management-service/">
|
|
||||||
<profileType>
|
|
||||||
<uuid>r2</uuid>
|
|
||||||
</profileType>
|
|
||||||
</getPermissionsBySubjectResponse>
|
|
||||||
</soap:Body>
|
|
||||||
</soap:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
*CreatePermissionForObjectRequest*
|
|
||||||
|
|
||||||
Создать сразу несколько доступов, которым разрешено отправлять сообщения от данной системы, можно с помощью метода сreatePermissionForObjectRequest, где “objectUuid” это uuid системы, от которой буду исходить сообщения, ‘“subjectUuid1”, “subjectUuid2” и т д, это uuid систем, которым будут отправлять сообщения:
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sys="http://www.entaxy.ru/system-management-service/">
|
|
||||||
<soapenv:Header/>
|
|
||||||
<soapenv:Body>
|
|
||||||
<sys:createPermissionForObjectRequest>
|
|
||||||
<sys:objectUuid>{{objectUuid}}</sys:objectUuid>
|
|
||||||
<!--Zero or more repetitions:-->
|
|
||||||
<sys:subjectUuid>{{subjectUuid1}}</sys:subjectUuid>
|
|
||||||
<sys:subjectUuid>{{subjectUuid2}}</sys:subjectUuid>
|
|
||||||
</sys:createPermissionForObjectRequest>
|
|
||||||
</soapenv:Body>
|
|
||||||
</soapenv:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
Где ответом будет (“true” - если доступа, успешно создались, ошибка и ее описание):
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
|
||||||
<soap:Body>
|
|
||||||
<response xmlns="http://www.entaxy.ru/system-management-service/">true</response>
|
|
||||||
</soap:Body>
|
|
||||||
</soap:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
*CreatePermissionForSubjectRequest*
|
|
||||||
|
|
||||||
Создать сразу несколько доступов, которым разрешено отправлять сообщения в данную систему, можно с помощью метода сreatePermissionForSubjectRequest, где “objectUuid1”, “objectUuid2” и т д - это uuid систем, от которых буду исходить сообщения, ‘“subjectUuid” - это uuid системы, которой будут отправлять сообщения:
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sys="http://www.entaxy.ru/system-management-service/">
|
|
||||||
<soapenv:Header/>
|
|
||||||
<soapenv:Body>
|
|
||||||
<sys:createPermissionForSubjectRequest>
|
|
||||||
<!--Zero or more repetitions:-->
|
|
||||||
<sys:objectUuid>{{objectUuid1}}</sys:objectUuid>
|
|
||||||
<sys:objectUuid>{{objectUuid2}}</sys:objectUuid>
|
|
||||||
<sys:subjectUuid>{{subjectUuid}}</sys:subjectUuid>
|
|
||||||
</sys:createPermissionForSubjectRequest>
|
|
||||||
</soapenv:Body>
|
|
||||||
</soapenv:Envelope>
|
|
||||||
----
|
|
||||||
|
|
||||||
Где ответом будет (“true” - если доступа, успешно создались, ошибка и ее описание):
|
|
||||||
|
|
||||||
[source,xml]
|
|
||||||
----
|
|
||||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
|
||||||
<soap:Body>
|
|
||||||
<response xmlns="http://www.entaxy.ru/system-management-service/">true</response>
|
|
||||||
</soap:Body>
|
|
||||||
</soap:Envelope>
|
|
||||||
----
|
|
Before Width: | Height: | Size: 69 KiB |
@ -1,555 +0,0 @@
|
|||||||
= Rest сервис Topic-management
|
|
||||||
|
|
||||||
=== Rest сервис для работы с топиками.
|
|
||||||
|
|
||||||
Сервис состоит из 2-х контекстов:
|
|
||||||
|
|
||||||
- _topic-management_ - управление топиками (создание/изменение/удаление)
|
|
||||||
- _topic-subscription_ - клиентский сервис подписки и публикации сообщения
|
|
||||||
|
|
||||||
При смене контекста в конфигурационных файлах требуется перераздать права на данный сервис.
|
|
||||||
|
|
||||||
Схема работы подписок
|
|
||||||
|
|
||||||
image::Topic_publish_diagram.png[]
|
|
||||||
|
|
||||||
Схема работы нотификаций
|
|
||||||
|
|
||||||
image::Scheme_of_work_notifications(events).png[]
|
|
||||||
|
|
||||||
=== Права
|
|
||||||
|
|
||||||
Право доступа в сервис _topic-management_
|
|
||||||
|
|
||||||
Для доступа к сервису _topic-management_ у аккаунта должно быть право доступа в данный сервис.
|
|
||||||
|
|
||||||
По умолчанию право на доступ к сервису есть у пользователя _admin_.
|
|
||||||
|
|
||||||
Используя данного пользователя в сервисе _permission-management_ можно раздать права на аккаунты систем.
|
|
||||||
|
|
||||||
Параметры для выдачи аккаунту прав на сервис:
|
|
||||||
|
|
||||||
- _objectId_: идентификатор учётной записи
|
|
||||||
- _objectType_: account
|
|
||||||
- _subjectId_: topic-management
|
|
||||||
- _subjectType_: service
|
|
||||||
|
|
||||||
Право manage сервиса _topic-subscription_
|
|
||||||
|
|
||||||
Для доступа к менеджерским функциям сервиса _topic-subscription_ у аккаунта должно быть право manage - данное право открывает доступ к управлению подписками.
|
|
||||||
|
|
||||||
Функционал управления подписками реализован в методах _subscribe_ и _unsubscribe_, пример использования приведён в подпунктах “Массовая обработка при наличии права manage для данного сервиса”.
|
|
||||||
|
|
||||||
Параметры для выдачи аккаунту права _manage_:
|
|
||||||
|
|
||||||
- _objectId_: идентификатор учётной записи
|
|
||||||
- _objectType_: account
|
|
||||||
- _subjectId_: topic-subscription
|
|
||||||
- _subjectType_: service
|
|
||||||
- _action_: manage
|
|
||||||
|
|
||||||
=== Конфигурационные файлы
|
|
||||||
|
|
||||||
Конфигурационные файлы по умолчанию хранятся в папке сервера <karaf_home>\etc\
|
|
||||||
|
|
||||||
- _ru.entaxy.esb.system.event.handler.cfg_
|
|
||||||
|
|
||||||
[source,properties]
|
|
||||||
----
|
|
||||||
# максимальное колчичество попыток отправить сообщение в очередь
|
|
||||||
# почитать подробнее можно в https://camel.apache.org/components/latest/eips/dead-letter-channel.html#deadLetterChannel-Redelivery
|
|
||||||
redelivery.maximumRedeliveries=-1
|
|
||||||
# время между попытками отправить сообщение в очередь
|
|
||||||
redelivery.redeliveryDelay=5000
|
|
||||||
|
|
||||||
#cron - по умолчанию запускается каждые 00:00:00,
|
|
||||||
#cron выражение использует знак "+" как разделитель для модуля quartz2l
|
|
||||||
quartz.job.clean.cron=0+0+0+*+*+?+*
|
|
||||||
----
|
|
||||||
|
|
||||||
- _ru.entaxy.esb.system.event.rest.cfg_
|
|
||||||
|
|
||||||
[source,properties]
|
|
||||||
----
|
|
||||||
service.host=http://0.0.0.0
|
|
||||||
|
|
||||||
service.port.management=9090
|
|
||||||
#Рутовый контекст управляющего сервиса, при изменении требуется перераздать права для данного сервиса
|
|
||||||
service.root.path.management=/topic-management
|
|
||||||
|
|
||||||
service.port.subscription=9092
|
|
||||||
#Рутовый контекст клиентского сервиса, при изменении требуется перераздать права для данного сервиса
|
|
||||||
service.root.path.subscription=/topic-subscription
|
|
||||||
----
|
|
||||||
|
|
||||||
=== Методы topic-management:
|
|
||||||
|
|
||||||
- _create_ - создать топик
|
|
||||||
При создании и изменении топика, есть возможность передать списки систем, которым доступна подписка или публикация в данном топике.
|
|
||||||
|
|
||||||
Запрос:
|
|
||||||
|
|
||||||
_POST server:9090/topic-management/create_
|
|
||||||
|
|
||||||
Тело
|
|
||||||
[source,json]
|
|
||||||
----
|
|
||||||
{
|
|
||||||
"topicName": "boomNews",
|
|
||||||
"possibleSubscribers" : ["systemUuid1", "systemUuid2"],
|
|
||||||
"possiblePublishers" : ["systemUuid3", "systemUuid4"]
|
|
||||||
}
|
|
||||||
----
|
|
||||||
|
|
||||||
Ответ:
|
|
||||||
|
|
||||||
Статус 201
|
|
||||||
|
|
||||||
Тело
|
|
||||||
[source,json]
|
|
||||||
----
|
|
||||||
{
|
|
||||||
"title": "Topic created",
|
|
||||||
"topicName": "<topic_name>",
|
|
||||||
"subscriberErrors": {
|
|
||||||
"systemNotFound": [
|
|
||||||
"<system_uuid>"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"publisherErrors": {
|
|
||||||
"systemNotFound": []
|
|
||||||
}
|
|
||||||
}
|
|
||||||
----
|
|
||||||
|
|
||||||
- update - изменить топик (название не меняется, так как на него завязана сама очередь в брокере)
|
|
||||||
|
|
||||||
Запрос:
|
|
||||||
|
|
||||||
_POST server:9090/topic-management/update_
|
|
||||||
|
|
||||||
Тело
|
|
||||||
|
|
||||||
[source,json]
|
|
||||||
----
|
|
||||||
{
|
|
||||||
"topicName": "boomNews",
|
|
||||||
"possibleSubscribers" : ["systemUuid1", "systemUuid2"],
|
|
||||||
"possiblePublishers" : ["systemUuid3", "systemUuid4"]
|
|
||||||
}
|
|
||||||
----
|
|
||||||
|
|
||||||
Ответ:
|
|
||||||
|
|
||||||
Статус 201
|
|
||||||
|
|
||||||
Тело
|
|
||||||
[source,json]
|
|
||||||
----
|
|
||||||
{
|
|
||||||
"title": "Topic updated",
|
|
||||||
"topicName": "<topic_name>",
|
|
||||||
"subscriberErrors": {
|
|
||||||
"systemNotFound": [
|
|
||||||
"<system_uuid>"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"publisherErrors": {
|
|
||||||
"systemNotFound": []
|
|
||||||
}
|
|
||||||
}
|
|
||||||
----
|
|
||||||
|
|
||||||
- delete - топик помечается как удалённый
|
|
||||||
|
|
||||||
Запрос:
|
|
||||||
|
|
||||||
_POST server:9090/topic-management/delete_
|
|
||||||
|
|
||||||
Тело
|
|
||||||
[source,json]
|
|
||||||
----
|
|
||||||
{
|
|
||||||
"topicName": "boomNews"
|
|
||||||
}
|
|
||||||
----
|
|
||||||
|
|
||||||
Ответ:
|
|
||||||
|
|
||||||
Статус 200
|
|
||||||
|
|
||||||
Тело
|
|
||||||
[source,json]
|
|
||||||
----
|
|
||||||
{
|
|
||||||
"title": "Topic deleted",
|
|
||||||
"topicName": "<topic_name>"
|
|
||||||
}
|
|
||||||
----
|
|
||||||
|
|
||||||
|
|
||||||
- clean - очистка хранилища топиков
|
|
||||||
|
|
||||||
Окончательное удаление топиков, помеченных как удалённые.
|
|
||||||
|
|
||||||
Запрос:
|
|
||||||
|
|
||||||
_POST server:9090/topic-management/clean_
|
|
||||||
|
|
||||||
Ответ:
|
|
||||||
|
|
||||||
Статус 200
|
|
||||||
|
|
||||||
Тело
|
|
||||||
[source,json]
|
|
||||||
----
|
|
||||||
{
|
|
||||||
"title": "Cleaned",
|
|
||||||
"topicDeleted": "<count_of_deleted_topics>"
|
|
||||||
}
|
|
||||||
----
|
|
||||||
|
|
||||||
|
|
||||||
=== Методы topic-subscription:
|
|
||||||
|
|
||||||
- _subscribe_ - подписаться на топик
|
|
||||||
|
|
||||||
Запрос:
|
|
||||||
|
|
||||||
_POST server:9090/topic-subscription/subscribe_
|
|
||||||
|
|
||||||
Тело
|
|
||||||
[source,json]
|
|
||||||
----
|
|
||||||
{
|
|
||||||
"topicName": "boomNews",
|
|
||||||
"subscriptionType": "PUSH"
|
|
||||||
}
|
|
||||||
----
|
|
||||||
|
|
||||||
Ответ:
|
|
||||||
|
|
||||||
Статус 201
|
|
||||||
|
|
||||||
Тело
|
|
||||||
[source,json]
|
|
||||||
----
|
|
||||||
{
|
|
||||||
"title": "Subscription created",
|
|
||||||
"topicName": "<topic_name>",
|
|
||||||
"systemName": "<system_name>",
|
|
||||||
"subscriptionType": "<subscription_type>"
|
|
||||||
}
|
|
||||||
----
|
|
||||||
|
|
||||||
=== Массовая обработка при наличии права manage для данного сервиса.
|
|
||||||
|
|
||||||
- _subscribe_ - подписаться на топик
|
|
||||||
|
|
||||||
Запрос:
|
|
||||||
|
|
||||||
_POST server:9092/topic-subscription/subscribe_
|
|
||||||
|
|
||||||
Тело
|
|
||||||
[source,json]
|
|
||||||
----
|
|
||||||
{
|
|
||||||
"topicName": "boomNews",
|
|
||||||
"systemUuids": [
|
|
||||||
{
|
|
||||||
"systemUuid": "NNNNNNNN-NNNN-NNNN-NNNN-NNNNNNNNNNNN",
|
|
||||||
"subscriptionType": "PUSH"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"systemUuid": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
|
|
||||||
"subscriptionType": "PULL"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"systemUuid": "YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY",
|
|
||||||
"subscriptionType": "PULL"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
----
|
|
||||||
|
|
||||||
Ответ:
|
|
||||||
|
|
||||||
Статус 200
|
|
||||||
|
|
||||||
Тело
|
|
||||||
[source,json]
|
|
||||||
----
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"title": "Internal Server Error",
|
|
||||||
"detail": "System not found NNNNNNNN-NNNN-NNNN-NNNN-NNNNNNNNNNNN",
|
|
||||||
"reason": "javax.persistence.NoResultException: No entity found for query"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"title": "Subscription created",
|
|
||||||
"topicName": "ooooo111-ff6e-4219-a878-bff120c495f1",
|
|
||||||
"systemUUID": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
|
|
||||||
"subscriptionType": "PULL"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"title": "Forbidden",
|
|
||||||
"detail": "No permission to subscribe for system YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
----
|
|
||||||
|
|
||||||
|
|
||||||
- _unsubscribe_ - отписаться от топика
|
|
||||||
|
|
||||||
Запрос:
|
|
||||||
|
|
||||||
_POST server:9090/topic-subscription/unsubscribe_
|
|
||||||
|
|
||||||
Тело
|
|
||||||
[source,json]
|
|
||||||
----
|
|
||||||
{
|
|
||||||
"topicName": "boomNews"
|
|
||||||
}
|
|
||||||
----
|
|
||||||
|
|
||||||
Ответ:
|
|
||||||
|
|
||||||
Статус 200
|
|
||||||
|
|
||||||
Тело
|
|
||||||
[source,json]
|
|
||||||
----
|
|
||||||
{
|
|
||||||
"title": "Subscription deleted",
|
|
||||||
"topicName": "<topic_name>",
|
|
||||||
"systemName": "<system_name>"
|
|
||||||
}
|
|
||||||
----
|
|
||||||
|
|
||||||
=== Массовая обработка при наличии права manage для данного сервиса.
|
|
||||||
|
|
||||||
Запрос:
|
|
||||||
|
|
||||||
_POST server:9092/topic-subscription/unsubscribe_
|
|
||||||
|
|
||||||
Тело
|
|
||||||
[source,json]
|
|
||||||
----
|
|
||||||
{
|
|
||||||
"topicName": "boomNews",
|
|
||||||
"systemUuids": [
|
|
||||||
{
|
|
||||||
"systemUuid":"NNNNNNNN-NNNN-NNNN-NNNN-NNNNNNNNNNNN",
|
|
||||||
"subscriptionType": "PUSH"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"systemUuid": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
|
|
||||||
"subscriptionType": "PULL"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"systemUuid": "YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY",
|
|
||||||
"subscriptionType": "PULL"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
----
|
|
||||||
|
|
||||||
Ответ:
|
|
||||||
|
|
||||||
Статус 200
|
|
||||||
|
|
||||||
Тело
|
|
||||||
[source,json]
|
|
||||||
----
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"title": "Internal Server Error",
|
|
||||||
"detail": "System not found NNNNNNNN-NNNN-NNNN-NNNN-NNNNNNNNNNNN",
|
|
||||||
"reason": "javax.persistence.NoResultException: No entity found for query"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"title": "Subscription deleted",
|
|
||||||
"topicName": "ooooo111-ff6e-4219-a878-bff120c495f1",
|
|
||||||
"systemUUID": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"title": "Subscription not found",
|
|
||||||
"topicName": "ooooo111-ff6e-4219-a878-bff120c495f1",
|
|
||||||
"systemUUID": "YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
----
|
|
||||||
|
|
||||||
- _publish_ - опубликовать событие
|
|
||||||
|
|
||||||
Запрос:
|
|
||||||
|
|
||||||
_POST server:9090/topic-subscription/publish_
|
|
||||||
|
|
||||||
Тело
|
|
||||||
[source,json]
|
|
||||||
----
|
|
||||||
{
|
|
||||||
"topicName": "boomNews", "message": "messageText2"
|
|
||||||
}
|
|
||||||
----
|
|
||||||
|
|
||||||
Ответ:
|
|
||||||
Статус 200
|
|
||||||
Тело
|
|
||||||
{
|
|
||||||
"title": "Message published",
|
|
||||||
"topicName": "<topic_name>"
|
|
||||||
}
|
|
||||||
|
|
||||||
=== Примеры ответов при ошибке
|
|
||||||
|
|
||||||
- _Передан некорректный JSON или логин не определён_
|
|
||||||
|
|
||||||
Статус 400
|
|
||||||
|
|
||||||
Тело
|
|
||||||
[source,json]
|
|
||||||
----
|
|
||||||
{
|
|
||||||
"title": "Incorrect input parameters",
|
|
||||||
"detail": "Cannot parse incoming JSON or login/system not defined"
|
|
||||||
}
|
|
||||||
----
|
|
||||||
|
|
||||||
- _Подписка не найдена_
|
|
||||||
|
|
||||||
Статус 404
|
|
||||||
|
|
||||||
Тело
|
|
||||||
[source,json]
|
|
||||||
----
|
|
||||||
{
|
|
||||||
"title": "Subscription not found",
|
|
||||||
"topicName": "${exchangeProperty.topicName}",
|
|
||||||
"systemUUID": "${header.X-SystemUuid}"
|
|
||||||
}
|
|
||||||
----
|
|
||||||
|
|
||||||
- _Топик не зарегистрирован_
|
|
||||||
|
|
||||||
Статус 400
|
|
||||||
|
|
||||||
Тело
|
|
||||||
[source,json]
|
|
||||||
----
|
|
||||||
{
|
|
||||||
"title": "Topic not registered",
|
|
||||||
"topicName": "${exchangeProperty.topicName}"
|
|
||||||
}
|
|
||||||
----
|
|
||||||
|
|
||||||
- _Система не найдена_
|
|
||||||
|
|
||||||
Статус 500
|
|
||||||
|
|
||||||
Тело
|
|
||||||
[source,json]
|
|
||||||
----
|
|
||||||
{
|
|
||||||
"title": "Internal Server Error",
|
|
||||||
"detail": "System not found ${header.X-SystemUuid}",
|
|
||||||
"reason": "${exception.stacktrace}"
|
|
||||||
}
|
|
||||||
----
|
|
||||||
|
|
||||||
- _Неизвестный тип подписки_
|
|
||||||
|
|
||||||
Статус 500
|
|
||||||
|
|
||||||
Тело
|
|
||||||
[source,json]
|
|
||||||
----
|
|
||||||
{
|
|
||||||
"title": "Internal Server Error",
|
|
||||||
"detail": "Unknown subscription type ${exchangeProperty.subscriptionType}",
|
|
||||||
"reason": "${exception.stacktrace}"
|
|
||||||
}
|
|
||||||
----
|
|
||||||
|
|
||||||
- _Нет прав на выполнение запрошенной операции_
|
|
||||||
|
|
||||||
Статус 403
|
|
||||||
|
|
||||||
Тело
|
|
||||||
[source,json]
|
|
||||||
----
|
|
||||||
{
|
|
||||||
"title": "Forbidden",
|
|
||||||
"detail": "No permission to subscribe"
|
|
||||||
}
|
|
||||||
----
|
|
||||||
|
|
||||||
- _Неизвестная ошибка_
|
|
||||||
|
|
||||||
Статус 500
|
|
||||||
|
|
||||||
Тело
|
|
||||||
[source,json]
|
|
||||||
----
|
|
||||||
{
|
|
||||||
"title": "Internal Server Error",
|
|
||||||
"detail": "Unknown exception",
|
|
||||||
"reason": "${exception.stacktrace}"
|
|
||||||
}
|
|
||||||
----
|
|
||||||
|
|
||||||
== Работа модуля топиков в кластере
|
|
||||||
|
|
||||||
=== Подписки
|
|
||||||
|
|
||||||
*PULL подписки не реализованы!*
|
|
||||||
|
|
||||||
Для реализации подписки используются _durable shareable_ подписчики _Apache Artemis_ топиков, а для доставки сообщений из топиков создаются специальные маршруты отправляющие сообщения в подписанную систему(PUSH-подписка). При работе в кластере системой создаются дублирующие маршруты на каждом узле, которые работают в конкурентном режиме, т.е. при падении одного из узлов доставка сообщений будет производиться оставшимися узлами.
|
|
||||||
|
|
||||||
Работа в кластере обеспечивается через компоненты _Apache Felix Event Admin_, реализующий рассылку служебных событий по топикам внутри узла,
|
|
||||||
и _Apache Karaf Cellar_ с интеграцией с _Event Admin_, реализующий рассылку данного события по всем узлам кластера. При создании/удалении подписки система создаёт соответствующее событие и отправляет в специальный топик _subscription_, далее подписчики на всех узлах, входящих в кластер, получают и обрабатывают данное событие.
|
|
||||||
|
|
||||||
=== Настройки
|
|
||||||
|
|
||||||
Настройки производятся на любом узле либо на мастер узле, в зависимости от настроек кластера.
|
|
||||||
|
|
||||||
Для синхронизации топика _subscription_ в конфигурационном файле _org.apache.karaf.cellar.groups.cfg_, нужно добавить строки:
|
|
||||||
|
|
||||||
[source,properties]
|
|
||||||
----
|
|
||||||
default.event.blacklist.inbound = none
|
|
||||||
default.event.blacklist.outbound = none
|
|
||||||
default.event.whitelist.inbound = subscription
|
|
||||||
default.event.whitelist.outbound = subscription
|
|
||||||
----
|
|
||||||
|
|
||||||
Далее если _Apache Karaf Cellar_ настроен правильно, то конфигурационные файлы _org.apache.karaf.cellar.groups.cfg_ должны синхронизироваться и строки, представленные выше, появятся на всех узлах.
|
|
||||||
|
|
||||||
Если синхронизация конфигурационных файлов не проходит, можно проверить статус _cellar_ продюсера командой:
|
|
||||||
|
|
||||||
cluster:producer-status
|
|
||||||
|
|
||||||
если выключен, то можно включить командой:
|
|
||||||
|
|
||||||
cluster:producer-start
|
|
||||||
|
|
||||||
=== Удаление топиков
|
|
||||||
|
|
||||||
Удаление топиков происходит в 2 этапа
|
|
||||||
|
|
||||||
- При вызове метода _delete_ топик помечается в БД, как удалённый
|
|
||||||
|
|
||||||
- По расписанию запускается задача (по умолчанию раз в сутки в 00:00), которая удаляет топик окончательно вместе с подписками, правами и консьюмерами.
|
|
||||||
Либо очистка запускается вручную вызовом метода _clean_ сервиса _topic-management_
|
|
||||||
|
|
||||||
Если до очистки системы изменить топик помеченный как удалённый или попытаться создать его заново, то восстановится старый топик
|
|
||||||
|
|
||||||
=== Плановая задача по очистке топиков
|
|
||||||
|
|
||||||
Т.к. удаление топиков происходит в 2 этапа, с помощью планировщика _Quartz2_, работающего в кластере, запускается задача по очистке. Запуск происходит в конкурентном режиме, узел первый запустивший задачу получает приоритет, на остальных узлах задача останавливается до следующего запуска.
|
|
||||||
|
|
||||||
Частота запуска задачи настраивается в конфигурационном файле _ru.entaxy.esb.system.event.handler.cfg_ в свойстве quartz.job.clean.cron=0+0+0+*+*+?+*
|
|
||||||
с помощью cron выражения. Особенность cron выражения для quartz в том что “++” используется, как разделитель.
|
|
||||||
|
|
Before Width: | Height: | Size: 44 KiB |
@ -1,171 +0,0 @@
|
|||||||
= Хранилище данных EAV
|
|
||||||
|
|
||||||
== Описание модуля EXTRAS :: ENTAXY :: EAV (Entity, Attribute, Value)
|
|
||||||
|
|
||||||
Хранилище данных EAV реализует модель _Сущность-Атрибут-Значение_ - это модель данных, предназначенная для описания сущностей, в которых количество атрибутов (свойств, параметров) не ограничено или не известно заранее.
|
|
||||||
|
|
||||||
|
|
||||||
== Объекты модуля ЕАV
|
|
||||||
|
|
||||||
image::eav_objects.png[]
|
|
||||||
|
|
||||||
*Внешняя сущность*(External Entity) - любая внешняя сущность относительно модуля EAV.
|
|
||||||
|
|
||||||
*Сущность EAV*(Entity EAV) - именованная сущность, связывающая аттрибуты с внешней сущностью.
|
|
||||||
Модуль предоставляет возможность объединять сущности EAV в одноуровневую иерархию.
|
|
||||||
|
|
||||||
*Атрибут*(Attribute) - именованный атрибут сущности EAV, содержит значение и его тип.
|
|
||||||
|
|
||||||
*Типы значений:*
|
|
||||||
|
|
||||||
* DOUBLE
|
|
||||||
* LONG
|
|
||||||
* TEXT
|
|
||||||
* JSON
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
== Использование хранилища EAV
|
|
||||||
|
|
||||||
В BLUEPRINT подключаем OSGI-сервис EAVProcessor
|
|
||||||
[source]
|
|
||||||
----
|
|
||||||
<reference id="eavProcessor" interface="ru.entaxy.eav.service.EAVProcessor"/>
|
|
||||||
----
|
|
||||||
|
|
||||||
в маршрутах или java коде осуществляем необходимые вызовы для создания/получения/изменения значений.
|
|
||||||
|
|
||||||
*Примеры вызовов из маршрута Apache Camel XMLDSL*
|
|
||||||
|
|
||||||
Создание атрибута для внешней сущности
|
|
||||||
[source]
|
|
||||||
----
|
|
||||||
<bean ref="eavProcessor" method="createPrimitive('externalIdTest', 'externalTypeTest', 'entityNameTest', 'attributeNameTest', 'textValue', 'testLogin')"/>
|
|
||||||
----
|
|
||||||
|
|
||||||
Получить все значения сохранённой сущности
|
|
||||||
[source]
|
|
||||||
----
|
|
||||||
<bean ref="eavProcessor" method="getEntityWithValues('externalIdTest', 'externalTypeTest', 'entityNameTest')"/>
|
|
||||||
----
|
|
||||||
|
|
||||||
Удалить сохранённые значения
|
|
||||||
[source]
|
|
||||||
----
|
|
||||||
<bean ref="eavProcessor" method="deleteExternalEntity('externalIdTest', 'externalTypeTest')"/>
|
|
||||||
----
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
== OSGI-сервис EAVProcessor.
|
|
||||||
Сервис, выставляющий api для работы с EAV хранилищем.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
*Методы:*
|
|
||||||
|
|
||||||
* _createPrimitive_ - простой метод сохранения примитивного значения(числового, строкового)
|
|
||||||
* _createComplex_ - простой метод сохранения комплексного значения(JSON)
|
|
||||||
* _getEntityWithValues_ - получение значений сущности EAV по имени
|
|
||||||
* _fetchEntityWithValues_ - получение значений сущности EAV по имени либо null, без исключений
|
|
||||||
* _getEntityNamedAttributes_ - получение значений с определённым именем для сущности EAV
|
|
||||||
* _getEntityByNameAndAttributeValue_ - получение сущности EAV по атрибуту
|
|
||||||
* _getParentEntity_ - получение родительской сущности EAV для внешней связанной сущности
|
|
||||||
* _getChildEntities_ - получение дочерних сущностей EAV для внешней связанной сущности с именем сущности EAV по умолчанию(PARENT)
|
|
||||||
* _getChildEntitiesByName_ - получение дочерних сущностей EAV для внешней связанной сущности с указанным именем сущности EAV
|
|
||||||
* _getByExternalEntity_ - получение всех сущностей EAV для внешней связанной сущности
|
|
||||||
* _getByAttributeSet_ - получение сущностей EAV по множественным наборов параметров, каждый набор составляется из значений элементов с одним порядковым номером всех списков
|
|
||||||
* _updateAttribute_ - метод для изменения значения аттрибута
|
|
||||||
* _deleteExternalEntity_ - удаление всех записей связанных с внешней сущностью
|
|
||||||
* _deleteEntity_ - удаление именованной сущности EAV
|
|
||||||
* _deleteAllEntityAttributes_ - удаление атрибутов именованной сущности EAV
|
|
||||||
* _deleteAllEntityAttributesByName_ - удаление аттрибута сущности EAV с определённым наименованием
|
|
||||||
* _combineEntities_ - метод для объединения внешних сущностей под 1 родителем
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
== Схема базы данных(БД).
|
|
||||||
|
|
||||||
Схема БД при таком подходе остаётся неизменной независимо от состава и структуры хранимых данных.
|
|
||||||
Бандл eav-storage разворачивает структуру из 2 таблиц:
|
|
||||||
|
|
||||||
*Таблица eav_entity*
|
|
||||||
|===
|
|
||||||
|Слолбец |Параметры |Описание
|
|
||||||
//----------------------
|
|
||||||
|id
|
|
||||||
|bigint, not null
|
|
||||||
|идентификатор сущности модуля EAV
|
|
||||||
|
|
||||||
|external_id
|
|
||||||
|text, not null
|
|
||||||
|внешний идентификатор связываемой сущности
|
|
||||||
|
|
||||||
|external_type
|
|
||||||
|text, not null
|
|
||||||
|тип связываемой сущности
|
|
||||||
|
|
||||||
|name
|
|
||||||
|text
|
|
||||||
|наименование сущности модуля EAV
|
|
||||||
|
|
||||||
|parent_id
|
|
||||||
|bigint, not null, default 0
|
|
||||||
|идентификатор(поле id) родительской сущности модуля EAV
|
|
||||||
|
|
||||||
|create_date
|
|
||||||
|timestamp, not null
|
|
||||||
|служебное поле, дата создания
|
|
||||||
|
|
||||||
|edit_date
|
|
||||||
|timestamp
|
|
||||||
|служебное поле, дата изменения
|
|
||||||
|
|
||||||
|created_by
|
|
||||||
|text, not null
|
|
||||||
|служебное поле, логин автора записи
|
|
||||||
|
|
||||||
|external_type
|
|
||||||
|text
|
|
||||||
|служебное поле, логин последнего изменившего сущность
|
|
||||||
|===
|
|
||||||
|
|
||||||
|
|
||||||
*Таблица eav_attribute*
|
|
||||||
|===
|
|
||||||
|Слолбец |Параметры |Описание
|
|
||||||
//----------------------
|
|
||||||
|id
|
|
||||||
|bigint, not null
|
|
||||||
|идентификатор атрибута
|
|
||||||
|
|
||||||
|entity_id
|
|
||||||
|text, not null
|
|
||||||
|идентификатор сущности eav_entity
|
|
||||||
|
|
||||||
|name
|
|
||||||
|text, not null
|
|
||||||
|наименование аттрибута
|
|
||||||
|
|
||||||
|type
|
|
||||||
|text
|
|
||||||
|тип аттрибута
|
|
||||||
|
|
||||||
|double
|
|
||||||
|double
|
|
||||||
|служебное поле для хранения значения
|
|
||||||
|
|
||||||
|long
|
|
||||||
|bigint
|
|
||||||
|служебное поле для хранения значения
|
|
||||||
|
|
||||||
|text
|
|
||||||
|text
|
|
||||||
|служебное поле для хранения значения
|
|
||||||
|
|
||||||
|text2
|
|
||||||
|text
|
|
||||||
|служебное поле для хранения значения
|
|
||||||
|
|
||||||
|===
|
|
Before Width: | Height: | Size: 21 KiB |
@ -1,177 +0,0 @@
|
|||||||
= Entaxy
|
|
||||||
:imagesdir: .
|
|
||||||
:hardbreaks:
|
|
||||||
|
|
||||||
Entaxy - шина, которую можно конфигурировать извне с помощью графического интерфейса или API, состоящая из модулей:
|
|
||||||
|
|
||||||
image::Entaxy.png[]
|
|
||||||
|
|
||||||
== *Управленческий слой(core):*
|
|
||||||
|
|
||||||
=== basic-auth
|
|
||||||
|
|
||||||
модуль, отвечающий за аутентификацию в шине. Tак же занимается хранением, созданием, редактированием и удалением учетных записей.
|
|
||||||
|
|
||||||
xref:core/auth/Authorization.adoc[Более полную информации о basic-auth найдете по этой ссылке]
|
|
||||||
|
|
||||||
_Для разработчиков:
|
|
||||||
-имеет Api, который занимается Crud операциями,
|
|
||||||
-хранит учетные записи в базе данных,
|
|
||||||
-предоставляет файл с актуальной информацией для nginx,
|
|
||||||
-выставляет interceptor для аутентификации в других сервисах,
|
|
||||||
-выставляет interceptor для определения принадлежности аккаунта определённой системе._
|
|
||||||
|
|
||||||
|
|
||||||
=== permission
|
|
||||||
|
|
||||||
модуль, отвечающий за управление правами доступа.
|
|
||||||
|
|
||||||
xref:core/permission/SOAP-service-Permission-management.adoc[Более полную информации о permission найдете по этой ссылке]
|
|
||||||
|
|
||||||
_Для разработчиков:
|
|
||||||
-имеет Api, который занимается Crud операциями
|
|
||||||
- хранит права в базе данных,
|
|
||||||
-(camel)компонент, который используется в маршрутах, для проверки возможности отправки из системы a в систему b.
|
|
||||||
-выставляет interceptor для авторизации в служебных сервисах._
|
|
||||||
|
|
||||||
|
|
||||||
=== system-management-api
|
|
||||||
|
|
||||||
модуль, отвечающий за создание систем и разнообразных коннекторов. (коннекторы бывают разных типов, будет описано далее)
|
|
||||||
|
|
||||||
xref:core/system-managment/Users-manual-System-management.adoc[Более полную информации о system-management найдете по этой ссылке]
|
|
||||||
|
|
||||||
__Для разработчиков:
|
|
||||||
-имеет Api, который занимается Crud операциями
|
|
||||||
-хранит параметры в базе данных,
|
|
||||||
-генерирует профиля и коннекторы на основе переданных через Api параметров и деплоит их через репозиторий nexus или файловую систему и cellar (блок Deployer) в шину.
|
|
||||||
-также имеет возможность Crud прав доступа над учетными записями систем.
|
|
||||||
__
|
|
||||||
|
|
||||||
=== system-registry
|
|
||||||
|
|
||||||
модуль, осуществляющий поддержку динамического управления профилями систем(профиль - это отражение параметров системы в шине)
|
|
||||||
|
|
||||||
__Для разработчиков:
|
|
||||||
-хранит информацию о системах в базе данных,
|
|
||||||
-(camel)компонент, который используется в маршрутах для определения нужной системы и коннектора для отправки сообщения в нее.
|
|
||||||
__
|
|
||||||
|
|
||||||
=== system-group-registry
|
|
||||||
|
|
||||||
модуль, осуществляющий поддержку динамического управления группами систем, которые определяют логику отправки в необходимую систему в определенной группе.
|
|
||||||
|
|
||||||
__Для разработчиков:
|
|
||||||
-хранит информацию о группах в базе данных,
|
|
||||||
-(camel)компонент, который используется в маршрутах для определения нужной системы из группы.
|
|
||||||
__
|
|
||||||
|
|
||||||
=== events
|
|
||||||
|
|
||||||
модуль, для работы с топиками(по схеме Publisher (издатель)-Subscriber (подписчик)) для систем.
|
|
||||||
|
|
||||||
xref:core/topic/Topic-management-Rest-service.adoc[Более полную информации о events найдете по этой ссылке]
|
|
||||||
|
|
||||||
__Для разработчиков:
|
|
||||||
-хранит информацию о топиках в базе данных,
|
|
||||||
-имеет Api(Rest), который занимается Crud операциями
|
|
||||||
__
|
|
||||||
|
|
||||||
=== schema
|
|
||||||
|
|
||||||
модуль, осуществляющий хранение всех схем, через которые делаются преобразования сообщений, валидация, поднятие сервиса в шине.
|
|
||||||
|
|
||||||
xref:core/schema/Schema.adoc[Более полную информации о schema найдете по этой ссылке]
|
|
||||||
|
|
||||||
__Для разработчиков:
|
|
||||||
-имеет Api, который занимается Crud операциями
|
|
||||||
-хранит информацию о загруженных схемах в базе данных,
|
|
||||||
-(camel)компонент, который используется в маршрутах для валидации xml через xsd, которую загрузили в бд.
|
|
||||||
-service, который подключается к xslt компоненту для подгрузки xsl из бд
|
|
||||||
-service, который подключается к cxf компоненту для подгрузки xsd и wsdl из бд
|
|
||||||
__
|
|
||||||
|
|
||||||
=== bridge
|
|
||||||
|
|
||||||
модуль, осуществляющий передачу сообщений в другую шину.
|
|
||||||
|
|
||||||
xref:core/bridge/Bridge-Description-and-Configuration.adoc[Более полную информации о bridge найдете по этой ссылке]
|
|
||||||
|
|
||||||
__Для разработчиков:
|
|
||||||
-знает о всех подключенных шинах и их именах в рамках всей системы
|
|
||||||
-осуществляет передачу сообщений через artemis, также получает сообщения из другой шины.
|
|
||||||
-в перспективе будет создан компонент который по названию будет определять в какую шину отправить, а не напрямую через очереди, как это сделано сейчас.
|
|
||||||
__
|
|
||||||
|
|
||||||
=== Error Handler
|
|
||||||
|
|
||||||
модуль, осуществляющий за обработку ошибок в шине.
|
|
||||||
|
|
||||||
Централизованный обработчик ошибок для формирования кодов ошибок, их синхронного возврата клиенту и для асинхронного дублирования более подробного описания ошибки (для клиента и для Центральной Базы Интеграции).
|
|
||||||
|
|
||||||
xref:core/exception/Centralized-error-handler.adoc[Более полную информации о централизованном обработчике ошибок найдете по этой ссылке]
|
|
||||||
|
|
||||||
xref:core/exception/Error-description.adoc[Более полную информации о классификации ошибок найдете по этой ссылке]
|
|
||||||
|
|
||||||
__Для разработчиков:
|
|
||||||
-знает о всех подключенных шинах и их именах в рамках всей системы
|
|
||||||
-осуществляет передачу сообщений через artemis, также получает сообщения из другой шины.
|
|
||||||
-в перспективе будет создан компонент, который по названию будет определять в какую шину отправить, а не напрямую через очереди, как это сделано сейчас.
|
|
||||||
__
|
|
||||||
|
|
||||||
=== Deployer
|
|
||||||
|
|
||||||
набор модулей осуществляющих работу с бандлами
|
|
||||||
|
|
||||||
xref:core/deployer/deployer-common.adoc[Более полную информации о Deployer найдете по этой ссылке]
|
|
||||||
|
|
||||||
__Для разработчиков:
|
|
||||||
-deployer-api - интерфейс репозитория для хранения артефактов
|
|
||||||
-file-system-deployer - реализация репозитория в папке
|
|
||||||
-nexus-deployer - реализация репозитория в Sonartype Nexus
|
|
||||||
-cellar-deployer - система управления бандлами через Apache Cellar
|
|
||||||
__
|
|
||||||
|
|
||||||
== Также как вспомогательные инструменты используется следующие модули:
|
|
||||||
|
|
||||||
_сellar_ - модуль для загрузки сгенерированных blueprint в шину(в несколько карафов).
|
|
||||||
_ignite_ - модуль для создания распределенного хранилища ключ-значение.(используется для более быстрой работы некоторых компонентов, которым нужно хранилище)
|
|
||||||
_liquibase_ - модуль для поддержки актуальной схемы бд.
|
|
||||||
|
|
||||||
== Клиентский слой
|
|
||||||
|
|
||||||
_US_ - универсальный коннектор, через который можно отправлять сообщения в другие системы.
|
|
||||||
_(делится на обычный и служебный)_
|
|
||||||
xref:connectors/uniform-exchange-service/uniform-exchange-service.adoc[Универсальный сервис]
|
|
||||||
|
|
||||||
_file-connector_ - коннектор, который сообщения для определенной системы отправляет с помощью файла(получая сообщение, проводит необходимые преобразования, нпрм архивацию, и складывает в определенную папку).
|
|
||||||
|
|
||||||
_db-connector_ - коннектор, который осуществляет обмен сообщениями с системой через бд. (сообщение полученное из другой системы конвертируется в запись в бд, и для отправки сообщения в шину необходимо сделать запись в бд)
|
|
||||||
|
|
||||||
xref:connectors/create_new_connectors.adoc[Информация о создании новых коннекторов]
|
|
||||||
|
|
||||||
image::connectors/db-connector/deployment_schema.png[]
|
|
||||||
|
|
||||||
_nsi_ - soap коннектор, который был поднят с помощью клиентской wsdl и работает по специальной схеме, определенной клиентом с помощью бд.
|
|
||||||
_big-packets-connector_ - soap коннектор, через который можно отправлять сообщения в другие системы, предназначенный для отправки больших сообщений, которые отправляются по частям.
|
|
||||||
|
|
||||||
=== Необходимые для шины внешние модули
|
|
||||||
|
|
||||||
nginx(опционально) - балансировщик нагрузки, также занимается предварительной аутентификацией.
|
|
||||||
nexus(опционально) - необходим для хранения и динамической развертки блюпринтов.
|
|
||||||
db(поддерживается mssql и postgresql) esb_entaxy - необходима для хранения служебных данных(связанных с настройкой маршрутов в шине).
|
|
||||||
db(поддерживается mssql и postgresql) cache - необходима для хранения временных данных, связанных с определенным сообщением.
|
|
||||||
artemis - брокер сообщений.
|
|
||||||
file-storage(nfs) - необходим для работы сервиса больших пакетов, nginx и тд.
|
|
||||||
|
|
||||||
=== Схема прохождения пакета
|
|
||||||
|
|
||||||
Для разработчиков:
|
|
||||||
|
|
||||||
image::connectors/Message.png[]
|
|
||||||
|
|
||||||
_Все сообщения отправляемые в шину будут отправляться из входного коннектора в выходную точку профиля._
|
|
||||||
|
|
||||||
Общее описание Entaxy:
|
|
||||||
|
|
||||||
xref:core/Common-description-of-the-transport-layer.adoc[Общее описание Entaxy]
|
|
Before Width: | Height: | Size: 168 KiB |
@ -1,633 +0,0 @@
|
|||||||
= Руководство по установке Entaxy
|
|
||||||
:nofooter:
|
|
||||||
:toc: left
|
|
||||||
:toc-title: Содержание
|
|
||||||
:sectnums:
|
|
||||||
:icons: font
|
|
||||||
:title-page:
|
|
||||||
:revnumber: 1.0
|
|
||||||
|
|
||||||
<<<
|
|
||||||
|
|
||||||
== Цель руководства
|
|
||||||
|
|
||||||
Данное руководство описывает процесс установки системы Entaxy (далее Система) на сервер или рабочую станцию в демонстрационных целях.
|
|
||||||
|
|
||||||
<<<
|
|
||||||
|
|
||||||
== Требования и замечания
|
|
||||||
|
|
||||||
Для установки Системы требуется:
|
|
||||||
|
|
||||||
- Установленная на сервер или рабочую станцию операционная система LTS: AstraLinux 2.12 (Orel), RHEL (CentOS), Ubuntu с настроенными репозиториями для установки программного обеспечения, входящего в состав поставки ОС
|
|
||||||
- Созданный в системе пользователь с правами sudo. Под этим пользователем будет производиться установка Системы. Далее по инструкции имя пользователя обозначено как `<username>`. Вместо `<username>` нужно подставить имя пользователя, который будет производить установку.
|
|
||||||
- Опыт работы с Debian/Ubuntu/AstraLinux системами
|
|
||||||
|
|
||||||
<<<
|
|
||||||
|
|
||||||
== Дистрибутивы программных продуктов
|
|
||||||
|
|
||||||
Вместе с инструкцией поставляются все дистрибутивы, необходимые для установки Системы. Их распространение разрешено лицензиями.
|
|
||||||
|
|
||||||
Дистрибутивы доступны в каталоге `distrib`. Перед установкой Системы нужно скопировать этот каталог на сервер или рабочую станцию, куда будет производиться установка в каталог `/home/<username>`.
|
|
||||||
|
|
||||||
Вся дальнейшая установка Системы будет производиться из файлов, скопированных в `/home/<username>/distrib`
|
|
||||||
|
|
||||||
<<<
|
|
||||||
|
|
||||||
== Установка PostgresPro 11 Standard Edition
|
|
||||||
|
|
||||||
Система использует СУБД PostgresPro 11 Standard для хранения конфигураций, справочников и т.д. Указанная СУБД входит в Реестр программных продуктов.
|
|
||||||
|
|
||||||
Для установки PostgresPro 11 Standard Edition необходимо перейти в каталог с дистрибутивом PostgresPro 11 Standard Edition, и установить пакеты в следующей последовательности:
|
|
||||||
|
|
||||||
[source,bash]
|
|
||||||
----
|
|
||||||
cd /home/<username>/distrib/postgrespro-std-11
|
|
||||||
sudo apt install ./postgrespro-std-11-libs_11.12.1-1.orel_amd64.deb
|
|
||||||
sudo apt install ./postgrespro-std-11-client_11.12.1-1.orel_amd64.deb
|
|
||||||
sudo apt install ./postgrespro-std-11-server_11.12.1-1.orel_amd64.deb
|
|
||||||
sudo apt install ./postgrespro-std-11-contrib_11.12.1-1.orel_amd64.deb
|
|
||||||
sudo apt install ./postgrespro-std-11_11.12.1-1.orel_amd64.deb
|
|
||||||
----
|
|
||||||
|
|
||||||
При установке последнего пакета производится автоматическая инициализация кластера СУБД, поэтому никаких действий по начальной инициализации PostgresPro 11 Standard Edition производить не требуется.
|
|
||||||
|
|
||||||
<<<
|
|
||||||
|
|
||||||
== Подготовка СУБД для работы с Entaxy
|
|
||||||
|
|
||||||
Перед установкой Системы нужно подготовить СУБД для работы с ней.
|
|
||||||
|
|
||||||
Подготовка заключается в создании пользователя СУБД и создании баз данных.
|
|
||||||
|
|
||||||
Для работы с СУБД используется инструмент `psql` с правами администратора. Для запуска инструмента выполнить следующие команды:
|
|
||||||
|
|
||||||
[source,bash]
|
|
||||||
----
|
|
||||||
sudo su - postgres
|
|
||||||
psql
|
|
||||||
----
|
|
||||||
|
|
||||||
После запуска иструмента выполняются следующие действия:
|
|
||||||
|
|
||||||
. Создание пользователя:
|
|
||||||
+
|
|
||||||
[source,sql]
|
|
||||||
----
|
|
||||||
CREATE USER entaxy WITH ENCRYPTED PASSWORD 'entaxy';
|
|
||||||
----
|
|
||||||
+
|
|
||||||
. Создание баз данных
|
|
||||||
+
|
|
||||||
[source,sql]
|
|
||||||
----
|
|
||||||
CREATE DATABASE cache;
|
|
||||||
CREATE DATABASE storage;
|
|
||||||
----
|
|
||||||
+
|
|
||||||
. Назначение прав пользователю `entaxy` на только что созданные базы `cache` и `storage`:
|
|
||||||
+
|
|
||||||
[source,sql]
|
|
||||||
----
|
|
||||||
GRANT ALL ON DATABASE cache TO entaxy;
|
|
||||||
GRANT ALL ON DATABASE storage TO entaxy;
|
|
||||||
----
|
|
||||||
|
|
||||||
После создания пользователя и БД выйти из инструмента `psql` с помощью ввода команды `\q`
|
|
||||||
|
|
||||||
После выхода из инструмента для работы с PostgresPro 11 Standard Edition `psql` требуется выйти из консоли пользователя `postgres`. Для этого выполнить команду:
|
|
||||||
|
|
||||||
[source,bash]
|
|
||||||
----
|
|
||||||
exit
|
|
||||||
----
|
|
||||||
|
|
||||||
<<<
|
|
||||||
|
|
||||||
== Установка OpenJDK 11
|
|
||||||
|
|
||||||
Установка OpenJDK 11 производится в каталог `/opt/openjdk`
|
|
||||||
|
|
||||||
Для установки OpenJDK 11 нужно перейти в каталог `/home/<username>/distrib/openjdk`, распаковать дистрибутив OpenJDK 11 в каталог установки и назначить на распакованные файлы права пользователя `root`:
|
|
||||||
|
|
||||||
[source,bash]
|
|
||||||
----
|
|
||||||
cd /home/<username>/distrib/openjdk
|
|
||||||
sudo mkdir -p /opt/openjdk
|
|
||||||
sudo tar xvf bellsoft-jdk11.0.11+9-linux-amd64.tar.gz -C /opt/openjdk
|
|
||||||
sudo chown -R root:root /opt/openjdk
|
|
||||||
sudo chmod 755 /opt/openjdk/jdk-11.0.11
|
|
||||||
----
|
|
||||||
|
|
||||||
<<<
|
|
||||||
|
|
||||||
== Установка и настройка nginx
|
|
||||||
|
|
||||||
Для аутентификации пользователей и маршрутизации запросов в Системе используется `nginx`, работающий как реверсивный прокси.
|
|
||||||
Перед настройкой конфигурации `nginx` необходимо его установить командой:
|
|
||||||
|
|
||||||
[source,bash]
|
|
||||||
----
|
|
||||||
sudo apt install nginx
|
|
||||||
----
|
|
||||||
|
|
||||||
Затем удалить конфигурацию nginx по-умолчанию, скопировать предварительно настроенный файл конфигурации `nginx` из каталога `/home/<username>/distrib/nginx/sites-available` в `/etc/nginx/sites-available`, создать символьную ссылку на конфигурацию в каталоге разрешённых конфигураций:
|
|
||||||
|
|
||||||
[source,bash]
|
|
||||||
----
|
|
||||||
sudo rm -rf /etc/nginx/sites-enabled/default
|
|
||||||
sudo cp /home/<username>/distrib/nginx/sites-available/entaxy.conf /etc/nginx/sites-available
|
|
||||||
sudo ln -s /etc/nginx/sites-available/entaxy.conf /etc/nginx/sites-enabled/entaxy.conf
|
|
||||||
----
|
|
||||||
|
|
||||||
После установки новой конфигурации и её разрешения, необходимо перезагрузить конфигурацию `nginx` командой:
|
|
||||||
|
|
||||||
[source,bash]
|
|
||||||
----
|
|
||||||
sudo nginx -t <1>
|
|
||||||
sudo systemctl reload nginx <2>
|
|
||||||
----
|
|
||||||
<1> - валидация конфигурации nginx (если команда вернёт строку `syntax is ok`, то конфигурация валидна)
|
|
||||||
<2> - перезагрузка конфигурации nginx
|
|
||||||
|
|
||||||
Затем необходимо создать файл паролей Basic аутентификации `htpasswd` в каталоге `/opt/nginx`
|
|
||||||
|
|
||||||
=== Управление сервисом nginx
|
|
||||||
|
|
||||||
Запуск `nginx` выполняется командой:
|
|
||||||
|
|
||||||
[source,bash]
|
|
||||||
----
|
|
||||||
sudo systemctl start nginx
|
|
||||||
----
|
|
||||||
|
|
||||||
Остановка `nginx` выполняется командой:
|
|
||||||
|
|
||||||
[source,bash]
|
|
||||||
----
|
|
||||||
sudo systemctl stop nginx
|
|
||||||
----
|
|
||||||
|
|
||||||
Перезапуск `nginx` выполняется командой:
|
|
||||||
|
|
||||||
[source,bash]
|
|
||||||
----
|
|
||||||
sudo systemctl restart nginx
|
|
||||||
----
|
|
||||||
|
|
||||||
Перезагрузка конфигурации `nginx` выполняется командой:
|
|
||||||
|
|
||||||
[source,bash]
|
|
||||||
----
|
|
||||||
sudo systemctl reload nginx
|
|
||||||
----
|
|
||||||
|
|
||||||
<<<
|
|
||||||
|
|
||||||
== Установка Apache Artemis
|
|
||||||
|
|
||||||
Установка Apache Artemis производится в каталог `/opt/artemis`
|
|
||||||
|
|
||||||
Для установки Apache Artemis необходимо выполнить следующие шаги:
|
|
||||||
|
|
||||||
. Создать пользователя `artemis`, под которым будет работать Artemis. При создании пользователя создаётся домашний каталог пользователя `/opt/artemis`, в котором будет установлен сам Artemis:
|
|
||||||
+
|
|
||||||
[source,bash]
|
|
||||||
----
|
|
||||||
sudo useradd -d /opt/artemis -m -r artemis -s /usr/sbin/nologin
|
|
||||||
----
|
|
||||||
+
|
|
||||||
. Распаковать дистрибутив Artemis в домашний каталог Artemis и назначить распакованным файлам права пользователя `artemis`:
|
|
||||||
+
|
|
||||||
[source,bash]
|
|
||||||
----
|
|
||||||
cd /home/<username>/distrib/artemis
|
|
||||||
sudo tar xvf apache-artemis-2.17.0-bin.tar.gz -C /opt/artemis
|
|
||||||
sudo cp -a /opt/artemis/apache-artemis-2.17.0/. /opt/artemis/
|
|
||||||
sudo rm -rf /opt/artemis/apache-artemis-2.17.0
|
|
||||||
sudo chown -R artemis:artemis /opt/artemis
|
|
||||||
----
|
|
||||||
+
|
|
||||||
. Создать каталог для брокера:
|
|
||||||
+
|
|
||||||
[source,bash]
|
|
||||||
----
|
|
||||||
sudo mkdir -p /opt/artemis/brokers
|
|
||||||
sudo chown artemis:artemis /opt/artemis/brokers
|
|
||||||
----
|
|
||||||
+
|
|
||||||
. Создать брокер:
|
|
||||||
+
|
|
||||||
[source,bash]
|
|
||||||
----
|
|
||||||
sudo su -s /bin/sh -c \
|
|
||||||
"export JAVACMD=/opt/openjdk/jdk-11.0.11/bin/java; \
|
|
||||||
export ARTEMIS_HOME=/opt/artemis; \
|
|
||||||
/opt/artemis/bin/artemis create \
|
|
||||||
--name entaxy-broker \
|
|
||||||
--user artemis \
|
|
||||||
--password artemis \
|
|
||||||
--require-login \
|
|
||||||
/opt/artemis/brokers/entaxy-broker" \
|
|
||||||
artemis
|
|
||||||
----
|
|
||||||
+
|
|
||||||
После выполнения команды создаётся новый брокер в каталоге `/opt/artemis/brokers/entaxy-broker` с именем `entaxy-broker`. Имя брокера задаётся в параметре `--name`.
|
|
||||||
Имя пользователя и пароль для входа в Web консоль брокера задаётся в параметрах `--user` и `--password` соответственно.
|
|
||||||
+
|
|
||||||
. Создать файл сервиса `/etc/systemd/system/entaxy@artemis.service`:
|
|
||||||
+
|
|
||||||
.entaxy-broker@artemis.service
|
|
||||||
[source,bash]
|
|
||||||
----
|
|
||||||
[Unit]
|
|
||||||
Description=Artemis ActiveMQ Message Broker
|
|
||||||
After=syslog.target network.target
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Type=forking
|
|
||||||
ExecStart=/opt/artemis/brokers/entaxy-broker/bin/artemis-service start
|
|
||||||
ExecStop=/opt/artemis/brokers/entaxy-broker/bin/artemis-service stop
|
|
||||||
|
|
||||||
User=artemis
|
|
||||||
Group=artemis
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
||||||
----
|
|
||||||
+
|
|
||||||
. Отредактировать переменную окружения `JAVA_HOME` для сервиса брокера:
|
|
||||||
+
|
|
||||||
[source,bash]
|
|
||||||
----
|
|
||||||
sudo systemctl edit entaxy@artemis.service
|
|
||||||
----
|
|
||||||
+
|
|
||||||
При выполнении предыдущей команды откроется текстовый редактор, в который надо добавить следующее содержимое, после чего сохранить файл:
|
|
||||||
+
|
|
||||||
[source,bash]
|
|
||||||
----
|
|
||||||
[Service]
|
|
||||||
Environment="JAVA_HOME=/opt/openjdk/jdk-11.0.11"
|
|
||||||
----
|
|
||||||
|
|
||||||
После создания файла сервиса и определения переменных окружения, выполнить команду
|
|
||||||
[source,bash]
|
|
||||||
----
|
|
||||||
sudo systemctl daemon-reload
|
|
||||||
----
|
|
||||||
|
|
||||||
Выполнение команды перезагрузит конфигурацию `systemd`, и сервис для запуска Artemis станет доступен
|
|
||||||
|
|
||||||
Включить автозапуск сервиса Artemis при старте системы:
|
|
||||||
|
|
||||||
[source,bash]
|
|
||||||
----
|
|
||||||
sudo systemctl enable entaxy@artemis.service
|
|
||||||
----
|
|
||||||
|
|
||||||
Запустить брокер Entaxy
|
|
||||||
|
|
||||||
[source,bash]
|
|
||||||
----
|
|
||||||
sudo systemctl start entaxy@artemis.service
|
|
||||||
----
|
|
||||||
|
|
||||||
=== Управление сервисом Apache Artemis
|
|
||||||
|
|
||||||
Запуск сервиса брокера `entaxy` выполняется командой:
|
|
||||||
|
|
||||||
[source,bash]
|
|
||||||
----
|
|
||||||
sudo systemctl start entaxy@artemis.service
|
|
||||||
----
|
|
||||||
|
|
||||||
Остановка сервиса брокера `entaxy` выполняется командой:
|
|
||||||
|
|
||||||
[source,bash]
|
|
||||||
----
|
|
||||||
sudo systemctl stop entaxy@artemis.service
|
|
||||||
----
|
|
||||||
|
|
||||||
<<<
|
|
||||||
|
|
||||||
== Установка Apache Karaf
|
|
||||||
|
|
||||||
Установка Apache Karaf производится в каталог `/opt/karaf`
|
|
||||||
|
|
||||||
Для установки Apache Karaf необходимо выполнить следующие шаги:
|
|
||||||
|
|
||||||
. Создать пользователя `karaf`, под которым будет работать Karaf. При создании пользователя создаётся домашний каталог пользователя `/opt/karaf`, в котором будет установлен сам Karaf:
|
|
||||||
+
|
|
||||||
[source,bash]
|
|
||||||
----
|
|
||||||
sudo useradd -d /opt/karaf -m -r karaf -s /usr/sbin/nologin
|
|
||||||
----
|
|
||||||
+
|
|
||||||
. Распаковать дистрибутив Karaf в домашний каталог, и назначить распакованным файлам права пользователя `karaf`:
|
|
||||||
+
|
|
||||||
[source,bash]
|
|
||||||
----
|
|
||||||
cd /home/<username>/distrib/karaf
|
|
||||||
sudo tar xvf apache-karaf-4.2.9.tar.gz -C /opt/karaf
|
|
||||||
sudo cp -a /opt/karaf/apache-karaf-4.2.9/. /opt/karaf
|
|
||||||
sudo rm -rf /opt/karaf/apache-karaf-4.2.9
|
|
||||||
sudo cp /home/<username>/distrib/karaf/jre.properties /opt/karaf/etc/jre.properties
|
|
||||||
sudo chown -R karaf:karaf /opt/karaf
|
|
||||||
----
|
|
||||||
+
|
|
||||||
. Отредактировать переменную окружения `JAVA_HOME` для Karaf:
|
|
||||||
+
|
|
||||||
[source,bash]
|
|
||||||
----
|
|
||||||
sudo sed -i 's/# export JAVA_HOME/export JAVA_HOME=\/opt\/openjdk\/jdk-11.0.11/g' /opt/karaf/bin/setenv
|
|
||||||
----
|
|
||||||
+
|
|
||||||
. Отредактировать переменную окружения `EXTRA_JAVA_OPTS` для Karaf, чтобы устранить возможность эксплуатацию критической уязвимости Log4j CVE-2021-44228:
|
|
||||||
+
|
|
||||||
[source,bash]
|
|
||||||
----
|
|
||||||
sudo sed -i 's/# export EXTRA_JAVA_OPTS/export EXTRA_JAVA_OPTS=-Dlog4j2.formatMsgNoLookups=true/g' /opt/karaf/bin/setenv
|
|
||||||
----
|
|
||||||
+
|
|
||||||
. Создать файл сервиса `/etc/systemd/system/karaf.service` со следующим содержимым:
|
|
||||||
+
|
|
||||||
.karaf.service
|
|
||||||
[source,bash]
|
|
||||||
----
|
|
||||||
[Unit]
|
|
||||||
Description=Entaxy Karaf
|
|
||||||
After=syslog.target network.target
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
ExecStart=/opt/karaf/bin/karaf start
|
|
||||||
ExecStop=/opt/karaf/bin/karaf stop
|
|
||||||
|
|
||||||
User=karaf
|
|
||||||
Group=karaf
|
|
||||||
|
|
||||||
SuccessExitStatus=0 143
|
|
||||||
RestartSec=15
|
|
||||||
Restart=on-failure
|
|
||||||
|
|
||||||
LimitNOFILE=102642
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
||||||
----
|
|
||||||
+
|
|
||||||
. После создания файла сервиса и определения переменных окружения, выполнить команду:
|
|
||||||
+
|
|
||||||
[source,bash]
|
|
||||||
----
|
|
||||||
sudo systemctl daemon-reload
|
|
||||||
----
|
|
||||||
|
|
||||||
Выполнение команды перезагрузит конфигурацию `systemd`, и сервис для запуска Karaf станет доступен
|
|
||||||
|
|
||||||
Включить автозапуск сервиса Karaf при старте системы:
|
|
||||||
|
|
||||||
[source,bash]
|
|
||||||
----
|
|
||||||
sudo systemctl enable karaf.service
|
|
||||||
----
|
|
||||||
|
|
||||||
=== Управление сервисом Apache Karaf
|
|
||||||
|
|
||||||
Запуск сервиса `karaf` выполняется командой:
|
|
||||||
|
|
||||||
[source,bash]
|
|
||||||
----
|
|
||||||
sudo systemctl start karaf.service
|
|
||||||
----
|
|
||||||
|
|
||||||
Остановка сервиса `karaf` выполняется командой:
|
|
||||||
|
|
||||||
[source,bash]
|
|
||||||
----
|
|
||||||
sudo systemctl stop karaf.service
|
|
||||||
----
|
|
||||||
|
|
||||||
<<<
|
|
||||||
|
|
||||||
== Настройка Apache Karaf
|
|
||||||
|
|
||||||
Скопируйте файлы конфигурации Entaxy из `/home/<username>/distrib/entaxy/etc` в каталог `/opt/karaf/etc`. Все файлы предварительно настроены для работы всех компонентов на одной машине:
|
|
||||||
|
|
||||||
[source,bash]
|
|
||||||
----
|
|
||||||
sudo cp -a /home/<username>/distrib/entaxy/etc/. /opt/karaf/etc
|
|
||||||
sudo chown -R karaf:karaf /opt/karaf/etc
|
|
||||||
----
|
|
||||||
|
|
||||||
Установочные файлы Системы хранятся в локальном репозитории артефактов. Перед установкой Системы необходимо скопировать локальный репозиторий из каталога `/home/<username>/distrib/entaxy/.m2` в `/opt/karaf`:
|
|
||||||
|
|
||||||
[source,bash]
|
|
||||||
----
|
|
||||||
sudo cp /home/<username>/distrib/entaxy/.m2/. /opt/karaf/.m2
|
|
||||||
sudo chown -R karaf:karaf /opt/karaf/.m2
|
|
||||||
----
|
|
||||||
|
|
||||||
После копирования файлов конфигураций и локального репозитория можно запустить сервис `karaf`
|
|
||||||
|
|
||||||
<<<
|
|
||||||
|
|
||||||
== Подготовка ОС для установки Entaxy
|
|
||||||
|
|
||||||
Система в процессе работы использует файловые ресурсы, в которых хранятся передаваемые файлы, пакеты и т.д. Эти ресурсы перед установкой Системы необходимо создать:
|
|
||||||
|
|
||||||
[source,bash]
|
|
||||||
----
|
|
||||||
sudo mkdir -p /opt/karaf/bundle-repository
|
|
||||||
sudo mkdir -p /mnt/entaxy/file-connector/message-store
|
|
||||||
sudo mkdir -p /mnt/entaxy/ignite
|
|
||||||
sudo mkdir -p /mnt/entaxy/filestore
|
|
||||||
sudo chown -R karaf:karaf /opt/karaf/bundle-repository
|
|
||||||
sudo chown -R karaf:karaf /mnt/entaxy
|
|
||||||
----
|
|
||||||
|
|
||||||
<<<
|
|
||||||
|
|
||||||
== Установка Entaxy
|
|
||||||
|
|
||||||
=== Проверка работоспособности Apache Karaf
|
|
||||||
|
|
||||||
Установка Entaxy осуществляется из консоли управления Apache Karaf. Чтобы войти в консоль управления Apache Karaf, нужно выполнить в терминале команду:
|
|
||||||
|
|
||||||
[source,bash]
|
|
||||||
----
|
|
||||||
ssh -p 8101 karaf@localhost
|
|
||||||
----
|
|
||||||
|
|
||||||
При первом входе в консоль управления необходимо на запрос предоставления доступа ввести слово `yes` и нажать `Enter`
|
|
||||||
После этого Apache Karaf запросит пароль - в качестве пароля ввести `karaf`
|
|
||||||
|
|
||||||
[source,bash]
|
|
||||||
----
|
|
||||||
Warning: Permanently added '[localhost]:8101' (RSA) to the list of known hosts.
|
|
||||||
Password authentication
|
|
||||||
Password:
|
|
||||||
__ __ ____
|
|
||||||
/ //_/____ __________ _/ __/
|
|
||||||
/ ,< / __ `/ ___/ __ `/ /_
|
|
||||||
/ /| |/ /_/ / / / /_/ / __/
|
|
||||||
/_/ |_|\__,_/_/ \__,_/_/
|
|
||||||
|
|
||||||
Apache Karaf (4.2.9)
|
|
||||||
|
|
||||||
Hit '<tab>' for a list of available commands
|
|
||||||
and '[cmd] --help' for help on a specific command.
|
|
||||||
Hit 'system:shutdown' to shutdown Karaf.
|
|
||||||
Hit '<ctrl-d>' or type 'logout' to disconnect shell from current session.
|
|
||||||
----
|
|
||||||
|
|
||||||
Для контроля корректности установки ввести команду `list`:
|
|
||||||
|
|
||||||
[source,bash]
|
|
||||||
----
|
|
||||||
karaf@root()> list
|
|
||||||
START LEVEL 100 , List Threshold: 50
|
|
||||||
ID │ State │ Lvl │ Version │ Name
|
|
||||||
───┼────────┼─────┼─────────┼────────────────────────────────────────────────
|
|
||||||
22 │ Active │ 80 │ 4.2.9 │ Apache Karaf :: OSGi Services :: Event
|
|
||||||
karaf@root()>
|
|
||||||
----
|
|
||||||
|
|
||||||
Если статус компонента `Apache Karaf {two-colons} OSGi Services {two-colons} Event` установлен в состояние `Active`, это значит, что Apache Karaf установлен корректно, и можно переходить к установке Entaxy.
|
|
||||||
|
|
||||||
=== Установка Entaxy
|
|
||||||
|
|
||||||
Установка Entaxy выполняется из консоли управления Apache Karaf. Сначала к списку репозиториев Karaf добавляется репозиторий Entaxy:
|
|
||||||
|
|
||||||
[source,bash]
|
|
||||||
----
|
|
||||||
feature:repo-add mvn:ru.entaxy.esb/karaf-features/1.8.1/xml/features
|
|
||||||
----
|
|
||||||
|
|
||||||
Затем запускается команда установки всех компонентов Entaxy
|
|
||||||
[source,bash]
|
|
||||||
----
|
|
||||||
feature:install entaxy-all
|
|
||||||
----
|
|
||||||
|
|
||||||
После завершения установки Entaxy произойдёт выход из консоли управления Apache Karaf. Это связано с перезапуском встроенного в `Karaf` SSH сервера. Это нормальная ситуация, в процессе установки происходит настройка устанавливаемых компонентов.
|
|
||||||
|
|
||||||
=== Проверка работоспособности Entaxy
|
|
||||||
|
|
||||||
Чтобы проверить корректность установки необходимо вновь зайти в консоль управления Karaf:
|
|
||||||
|
|
||||||
[source,bash]
|
|
||||||
----
|
|
||||||
ssh -p 8101 karaf@localhost
|
|
||||||
----
|
|
||||||
|
|
||||||
В консоли управления ввести команду:
|
|
||||||
|
|
||||||
[source,bash]
|
|
||||||
----
|
|
||||||
karaf@root()> list
|
|
||||||
----
|
|
||||||
|
|
||||||
Отобразится список установленных компонентов Entaxy, и вспомогательных библиотек. Состояние почти всех компонентов должно быть `Active`
|
|
||||||
|
|
||||||
Среди компонентов, которые могут не находиться в состоянии `Active` можно выделить два:
|
|
||||||
|
|
||||||
- `camel-caffeine-lrucache` может находиться в состоянии `Resolved`
|
|
||||||
- `INTEGRATION {two-colons} ENTAXY {two-colons} DB EXAMPLE CONNECTOR` будет находиться в состоянии `Failure`
|
|
||||||
|
|
||||||
Компонент `INTEGRATION {two-colons} ENTAXY {two-colons} DB EXAMPLE CONNECTOR` необходимо отключить командой:
|
|
||||||
|
|
||||||
[source,bash]
|
|
||||||
----
|
|
||||||
karaf@root()> bundle:stop <id_компонента>
|
|
||||||
----
|
|
||||||
|
|
||||||
Например, если идентификатор компонента 97, как показано ниже,
|
|
||||||
|
|
||||||
[source,bash]
|
|
||||||
----
|
|
||||||
97 │ Failure │ 80 │ 1.0.0.SNAPSHOT │ INTEGRATION :: ENTAXY :: DB EXAMPLE CONNECTOR
|
|
||||||
----
|
|
||||||
|
|
||||||
то команда будет выглядеть так:
|
|
||||||
|
|
||||||
[source,bash]
|
|
||||||
----
|
|
||||||
karaf@root()> bundle:stop 97
|
|
||||||
----
|
|
||||||
|
|
||||||
После остановки компонент перейдёт в состояние `Resolved`
|
|
||||||
|
|
||||||
=== Отключение компонента установки Nexus
|
|
||||||
|
|
||||||
В процессе своей работы Entaxy генерирует и запускает новые компоненты, например, при создании новой системы, она будет отображаться в Entaxy как отдельный компонент. В момент генерирования и установки нового компонента, производится помещение этого компонента во внешний репозиторий. Это позволяет автоматически переустановить сгенерированные компоненты при добавлении нового узла в кластер Entaxy.
|
|
||||||
В Entaxy существует два варианта хранения сгенерированных компонентов:
|
|
||||||
|
|
||||||
- Sonatype Nexus
|
|
||||||
- Файловая система
|
|
||||||
|
|
||||||
По-умолчанию все генерируемые компоненты помещаются в систему управления репозиториями Sonatype Nexus. Это отдельное ПО, целесообразность установки которого оправдана только в кластерных конфигурациях. В нашем случае установка всей системы выполняется на одну машину.
|
|
||||||
|
|
||||||
Чтобы сгенерированные компоненты устанавливались в файловую систему, требуется отключить компонент установки сгенерированных компонентов в Sonatype Nexus. Отключение компонента выполняется следующим образом:
|
|
||||||
|
|
||||||
. Войти в консоль управления Karaf
|
|
||||||
. Найти идентфикатор компонента `SYSTEM {two-colons} ENTAXY {two-colons} NEXUS {two-colons} DEPLOYER`
|
|
||||||
. Остановить его командой:
|
|
||||||
+
|
|
||||||
[source,bash]
|
|
||||||
----
|
|
||||||
karaf@root()> bundle:stop <id_компонента>
|
|
||||||
----
|
|
||||||
|
|
||||||
<<<
|
|
||||||
|
|
||||||
== Настройка обновления файла аутентификации `htpasswd`
|
|
||||||
|
|
||||||
В Entaxy используется Basic аутентификация для всех запросов, приходящих на балансировщик, функции которого выполняет `nginx`. Аутентификация производится средствами самого `nginx`.
|
|
||||||
|
|
||||||
В качестве базы для хранения пользователей `nginx` использует файл в специальном формате htpasswd.
|
|
||||||
|
|
||||||
Для того, чтобы вновь созданные пользователи в Системе могли аутентифицироваться, необходимо передать информацию о них в файл htpasswd. Для этого используется специальный скрипт, который отрабатывает по расписанию. Сам скрипт нужно предварительно скопировать из каталога `/home/<username>/distrib/script/htpasswd-checker.sh` в любой каталог, например, в `/opt/htpasswd-checker`:
|
|
||||||
|
|
||||||
[source,bash]
|
|
||||||
----
|
|
||||||
sudo mkdir -p /opt/htpasswd-checker/log
|
|
||||||
sudo cp /home/<username>/distrib/nginx/htpasswd /etc/nginx
|
|
||||||
sudo cp /home/<username>/distrib/script/htpasswd-checker.sh /opt/htpasswd-checker
|
|
||||||
sudo chown -R root:root /opt/htpasswd-checker
|
|
||||||
----
|
|
||||||
|
|
||||||
Так же требуется проверить адреса серверов кластера, публикующих сервис для работы с файлом htpasswd(сервера с karaf) для ключа KARAF_HOST_NAMES:
|
|
||||||
[source,bash]
|
|
||||||
----
|
|
||||||
KARAF_HOST_NAMES=("http://192.168.122.93:9091" "http://192.168.122.94:9091")
|
|
||||||
----
|
|
||||||
|
|
||||||
Затем создать расписание запуска для `cron`:
|
|
||||||
|
|
||||||
[source,bash]
|
|
||||||
----
|
|
||||||
sudo crontab -e
|
|
||||||
----
|
|
||||||
|
|
||||||
В открывшемся редакторе добавить запись:
|
|
||||||
|
|
||||||
[source,bash]
|
|
||||||
----
|
|
||||||
* * * * * /opt/htpasswd-checker/htpasswd-checker.sh
|
|
||||||
----
|
|
||||||
|
|
||||||
и сохранить файл. Теперь скрипт будет отрабатывать каждую минуту, подключаться к сервису аутентификации в Apache Karaf, проверять изменение пользовательской информации, и обновлять файл `/etc/nginx/htpasswd` если информация обновилась.
|
|
||||||
|
|
||||||
<<<
|
|
||||||
|
|
||||||
== Проверка работоспособности сервисов
|
|
||||||
|
|
||||||
Чтобы проверить, что сервисы Entaxy работают, можно провести быстрый тест.
|
|
||||||
|
|
||||||
Для этого открыть браузер на машине, где установлена Система, и перейти по адресу `http://localhost:8181/cxf`. Браузер запросит имя пользователя и пароль. Ввести `admin` в качестве имени пользователя, и `admin` в качестве пароля. Логин и пароль уже прописаны в файле `/etc/nginx/htpasswd`. При успешной аутентификации отобразится страница следующего вида:
|
|
||||||
|
|
||||||
image::img/services.png[]
|
|
||||||
|
|
||||||
На этом установку Системы можно считать законченной.
|
|
@ -1,11 +0,0 @@
|
|||||||
__Alternative languages:__
|
|
||||||
|
|
||||||
* xref:installation-table-of-contents.ru.adoc[Russian]
|
|
||||||
|
|
||||||
= Installation
|
|
||||||
Entaxy have different installation ways OOTB:
|
|
||||||
|
|
||||||
* xref:../../distribution/entaxy-docker/ReadMe.md[Development docker installation]
|
|
||||||
* xref:../../features/README.md[Development standalone installation]
|
|
||||||
* xref:install.adoc[Enterprise environment installation]
|
|
||||||
* xref:local-installation/local-installation.adoc[Local installation]
|
|
@ -1,11 +0,0 @@
|
|||||||
__Alternative languages:__
|
|
||||||
|
|
||||||
* xref:installation-table-of-contents.adoc[English]
|
|
||||||
|
|
||||||
= Установка
|
|
||||||
Entaxy из коробки имеет разные варианты установки:
|
|
||||||
|
|
||||||
* xref:../../distribution/entaxy-docker/ReadMe.md[Установка для разработки в докер]
|
|
||||||
* xref:../../features/README.ru.md[Установка для разработки отдельных серверных приложений]
|
|
||||||
* xref:install.adoc[Установка на промышленное окружение]
|
|
||||||
* xref:local-installation/local-installation.ru.adoc[Локальная установка]
|
|
Before Width: | Height: | Size: 5.6 KiB |
Before Width: | Height: | Size: 43 KiB |
Before Width: | Height: | Size: 95 KiB |
Before Width: | Height: | Size: 31 KiB |