initial public commit
							
								
								
									
										65
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,65 @@ | ||||
| # These are some examples of commonly ignored file patterns. | ||||
| # You should customize this list as applicable to your project. | ||||
| # Learn more about .gitignore: | ||||
| #     https://www.atlassian.com/git/tutorials/saving-changes/gitignore | ||||
|  | ||||
| # Node artifact files | ||||
| node_modules/ | ||||
| dist/ | ||||
|  | ||||
| # Compiled Java class files | ||||
| *.class | ||||
|  | ||||
| # Compiled Python bytecode | ||||
| *.py[cod] | ||||
|  | ||||
| # Log files | ||||
| *.log | ||||
|  | ||||
| # Package files | ||||
| *.jar | ||||
|  | ||||
| # Maven | ||||
| target/ | ||||
| dist/ | ||||
| dependency-reduced-pom.xml | ||||
| pom.xml.versionsBackup | ||||
|  | ||||
| # JetBrains IDE | ||||
| .idea/ | ||||
| *.iml | ||||
| *.im | ||||
|  | ||||
| # Unit test reports | ||||
| TEST*.xml | ||||
|  | ||||
| # Generated by MacOS | ||||
| .DS_Store | ||||
|  | ||||
| # Generated by Windows | ||||
| Thumbs.db | ||||
|  | ||||
| # Applications | ||||
| *.app | ||||
| *.exe | ||||
| *.war | ||||
|  | ||||
| # Large media files | ||||
| *.mp4 | ||||
| *.tiff | ||||
| *.avi | ||||
| *.flv | ||||
| *.mov | ||||
| *.wmv | ||||
|  | ||||
| # OS or Editor folders | ||||
| .cache | ||||
| .project | ||||
| .settings | ||||
| .tmproj | ||||
| *.cache | ||||
|  | ||||
| # Eclipse project file | ||||
| *.classpath | ||||
| .tern-project | ||||
|  | ||||
							
								
								
									
										201
									
								
								LICENSE.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,201 @@ | ||||
|                                  Apache License | ||||
|                            Version 2.0, January 2004 | ||||
|                         http://www.apache.org/licenses/ | ||||
|  | ||||
|    TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION | ||||
|  | ||||
|    1. Definitions. | ||||
|  | ||||
|       "License" shall mean the terms and conditions for use, reproduction, | ||||
|       and distribution as defined by Sections 1 through 9 of this document. | ||||
|  | ||||
|       "Licensor" shall mean the copyright owner or entity authorized by | ||||
|       the copyright owner that is granting the License. | ||||
|  | ||||
|       "Legal Entity" shall mean the union of the acting entity and all | ||||
|       other entities that control, are controlled by, or are under common | ||||
|       control with that entity. For the purposes of this definition, | ||||
|       "control" means (i) the power, direct or indirect, to cause the | ||||
|       direction or management of such entity, whether by contract or | ||||
|       otherwise, or (ii) ownership of fifty percent (50%) or more of the | ||||
|       outstanding shares, or (iii) beneficial ownership of such entity. | ||||
|  | ||||
|       "You" (or "Your") shall mean an individual or Legal Entity | ||||
|       exercising permissions granted by this License. | ||||
|  | ||||
|       "Source" form shall mean the preferred form for making modifications, | ||||
|       including but not limited to software source code, documentation | ||||
|       source, and configuration files. | ||||
|  | ||||
|       "Object" form shall mean any form resulting from mechanical | ||||
|       transformation or translation of a Source form, including but | ||||
|       not limited to compiled object code, generated documentation, | ||||
|       and conversions to other media types. | ||||
|  | ||||
|       "Work" shall mean the work of authorship, whether in Source or | ||||
|       Object form, made available under the License, as indicated by a | ||||
|       copyright notice that is included in or attached to the work | ||||
|       (an example is provided in the Appendix below). | ||||
|  | ||||
|       "Derivative Works" shall mean any work, whether in Source or Object | ||||
|       form, that is based on (or derived from) the Work and for which the | ||||
|       editorial revisions, annotations, elaborations, or other modifications | ||||
|       represent, as a whole, an original work of authorship. For the purposes | ||||
|       of this License, Derivative Works shall not include works that remain | ||||
|       separable from, or merely link (or bind by name) to the interfaces of, | ||||
|       the Work and Derivative Works thereof. | ||||
|  | ||||
|       "Contribution" shall mean any work of authorship, including | ||||
|       the original version of the Work and any modifications or additions | ||||
|       to that Work or Derivative Works thereof, that is intentionally | ||||
|       submitted to Licensor for inclusion in the Work by the copyright owner | ||||
|       or by an individual or Legal Entity authorized to submit on behalf of | ||||
|       the copyright owner. For the purposes of this definition, "submitted" | ||||
|       means any form of electronic, verbal, or written communication sent | ||||
|       to the Licensor or its representatives, including but not limited to | ||||
|       communication on electronic mailing lists, source code control systems, | ||||
|       and issue tracking systems that are managed by, or on behalf of, the | ||||
|       Licensor for the purpose of discussing and improving the Work, but | ||||
|       excluding communication that is conspicuously marked or otherwise | ||||
|       designated in writing by the copyright owner as "Not a Contribution." | ||||
|  | ||||
|       "Contributor" shall mean Licensor and any individual or Legal Entity | ||||
|       on behalf of whom a Contribution has been received by Licensor and | ||||
|       subsequently incorporated within the Work. | ||||
|  | ||||
|    2. Grant of Copyright License. Subject to the terms and conditions of | ||||
|       this License, each Contributor hereby grants to You a perpetual, | ||||
|       worldwide, non-exclusive, no-charge, royalty-free, irrevocable | ||||
|       copyright license to reproduce, prepare Derivative Works of, | ||||
|       publicly display, publicly perform, sublicense, and distribute the | ||||
|       Work and such Derivative Works in Source or Object form. | ||||
|  | ||||
|    3. Grant of Patent License. Subject to the terms and conditions of | ||||
|       this License, each Contributor hereby grants to You a perpetual, | ||||
|       worldwide, non-exclusive, no-charge, royalty-free, irrevocable | ||||
|       (except as stated in this section) patent license to make, have made, | ||||
|       use, offer to sell, sell, import, and otherwise transfer the Work, | ||||
|       where such license applies only to those patent claims licensable | ||||
|       by such Contributor that are necessarily infringed by their | ||||
|       Contribution(s) alone or by combination of their Contribution(s) | ||||
|       with the Work to which such Contribution(s) was submitted. If You | ||||
|       institute patent litigation against any entity (including a | ||||
|       cross-claim or counterclaim in a lawsuit) alleging that the Work | ||||
|       or a Contribution incorporated within the Work constitutes direct | ||||
|       or contributory patent infringement, then any patent licenses | ||||
|       granted to You under this License for that Work shall terminate | ||||
|       as of the date such litigation is filed. | ||||
|  | ||||
|    4. Redistribution. You may reproduce and distribute copies of the | ||||
|       Work or Derivative Works thereof in any medium, with or without | ||||
|       modifications, and in Source or Object form, provided that You | ||||
|       meet the following conditions: | ||||
|  | ||||
|       (a) You must give any other recipients of the Work or | ||||
|           Derivative Works a copy of this License; and | ||||
|  | ||||
|       (b) You must cause any modified files to carry prominent notices | ||||
|           stating that You changed the files; and | ||||
|  | ||||
|       (c) You must retain, in the Source form of any Derivative Works | ||||
|           that You distribute, all copyright, patent, trademark, and | ||||
|           attribution notices from the Source form of the Work, | ||||
|           excluding those notices that do not pertain to any part of | ||||
|           the Derivative Works; and | ||||
|  | ||||
|       (d) If the Work includes a "NOTICE" text file as part of its | ||||
|           distribution, then any Derivative Works that You distribute must | ||||
|           include a readable copy of the attribution notices contained | ||||
|           within such NOTICE file, excluding those notices that do not | ||||
|           pertain to any part of the Derivative Works, in at least one | ||||
|           of the following places: within a NOTICE text file distributed | ||||
|           as part of the Derivative Works; within the Source form or | ||||
|           documentation, if provided along with the Derivative Works; or, | ||||
|           within a display generated by the Derivative Works, if and | ||||
|           wherever such third-party notices normally appear. The contents | ||||
|           of the NOTICE file are for informational purposes only and | ||||
|           do not modify the License. You may add Your own attribution | ||||
|           notices within Derivative Works that You distribute, alongside | ||||
|           or as an addendum to the NOTICE text from the Work, provided | ||||
|           that such additional attribution notices cannot be construed | ||||
|           as modifying the License. | ||||
|  | ||||
|       You may add Your own copyright statement to Your modifications and | ||||
|       may provide additional or different license terms and conditions | ||||
|       for use, reproduction, or distribution of Your modifications, or | ||||
|       for any such Derivative Works as a whole, provided Your use, | ||||
|       reproduction, and distribution of the Work otherwise complies with | ||||
|       the conditions stated in this License. | ||||
|  | ||||
|    5. Submission of Contributions. Unless You explicitly state otherwise, | ||||
|       any Contribution intentionally submitted for inclusion in the Work | ||||
|       by You to the Licensor shall be under the terms and conditions of | ||||
|       this License, without any additional terms or conditions. | ||||
|       Notwithstanding the above, nothing herein shall supersede or modify | ||||
|       the terms of any separate license agreement you may have executed | ||||
|       with Licensor regarding such Contributions. | ||||
|  | ||||
|    6. Trademarks. This License does not grant permission to use the trade | ||||
|       names, trademarks, service marks, or product names of the Licensor, | ||||
|       except as required for reasonable and customary use in describing the | ||||
|       origin of the Work and reproducing the content of the NOTICE file. | ||||
|  | ||||
|    7. Disclaimer of Warranty. Unless required by applicable law or | ||||
|       agreed to in writing, Licensor provides the Work (and each | ||||
|       Contributor provides its Contributions) on an "AS IS" BASIS, | ||||
|       WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or | ||||
|       implied, including, without limitation, any warranties or conditions | ||||
|       of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A | ||||
|       PARTICULAR PURPOSE. You are solely responsible for determining the | ||||
|       appropriateness of using or redistributing the Work and assume any | ||||
|       risks associated with Your exercise of permissions under this License. | ||||
|  | ||||
|    8. Limitation of Liability. In no event and under no legal theory, | ||||
|       whether in tort (including negligence), contract, or otherwise, | ||||
|       unless required by applicable law (such as deliberate and grossly | ||||
|       negligent acts) or agreed to in writing, shall any Contributor be | ||||
|       liable to You for damages, including any direct, indirect, special, | ||||
|       incidental, or consequential damages of any character arising as a | ||||
|       result of this License or out of the use or inability to use the | ||||
|       Work (including but not limited to damages for loss of goodwill, | ||||
|       work stoppage, computer failure or malfunction, or any and all | ||||
|       other commercial damages or losses), even if such Contributor | ||||
|       has been advised of the possibility of such damages. | ||||
|  | ||||
|    9. Accepting Warranty or Additional Liability. While redistributing | ||||
|       the Work or Derivative Works thereof, You may choose to offer, | ||||
|       and charge a fee for, acceptance of support, warranty, indemnity, | ||||
|       or other liability obligations and/or rights consistent with this | ||||
|       License. However, in accepting such obligations, You may act only | ||||
|       on Your own behalf and on Your sole responsibility, not on behalf | ||||
|       of any other Contributor, and only if You agree to indemnify, | ||||
|       defend, and hold each Contributor harmless for any liability | ||||
|       incurred by, or claims asserted against, such Contributor by reason | ||||
|       of your accepting any such warranty or additional liability. | ||||
|  | ||||
|    END OF TERMS AND CONDITIONS | ||||
|  | ||||
|    APPENDIX: How to apply the Apache License to your work. | ||||
|  | ||||
|       To apply the Apache License to your work, attach the following | ||||
|       boilerplate notice, with the fields enclosed by brackets "[]" | ||||
|       replaced with your own identifying information. (Don't include | ||||
|       the brackets!)  The text should be enclosed in the appropriate | ||||
|       comment syntax for the file format. We also recommend that a | ||||
|       file or class name and description of purpose be included on the | ||||
|       same "printed page" as the copyright notice for easier | ||||
|       identification within third-party archives. | ||||
|  | ||||
|    Copyright [yyyy] [name of copyright owner] | ||||
|  | ||||
|    Licensed 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. | ||||
							
								
								
									
										157
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,157 @@ | ||||
| # entaxy-esb | ||||
|  | ||||
| ### Alternative languages | ||||
|  | ||||
| [Russian](README.ru.md) | ||||
|  | ||||
| Detailed documentation: [system description](documentation/entaxy_main.adoc).\ | ||||
| Installation instructions: [installation](documentation/installation/installation-table-of-contents.ru.adoc).\ | ||||
| Instructions for running tests for the universal | ||||
| service: [tests](documentation/connectors/uniform-exchange-service/tests/postman.adoc). | ||||
|  | ||||
| - **extras** - additional esb modules(Developed independently, installed separately.) | ||||
|     - **1c** - module for working with 1C | ||||
|         - **1c-exchange-service** - (Alexey Knyazev, Borodina Valeria) message processing module, service 1C | ||||
|             - **1c-exchange-endpoint** - soap-service 1C | ||||
|             - **1c-exchange-service-endpoint** - service soap-service 1C | ||||
|             - **connector** - stored in and out connectors at 1c-exchange-endpoint and 1c-exchange-service-endpoint | ||||
|             - **support** - support routers for connectors | ||||
|             - **1c-storage** - (Alexey Knyazev) liquibase module creating the necessary tables in the database for 1C | ||||
|         - **nsi** - (Alexey Knyazev, Borodina Valeria) module for nsi | ||||
|         - **nsi-soap** - (Alexey Knyazev) module with soap nsi | ||||
|         - **nsi-storage** - (Alexey Knyazev) liquibase module creating the necessary tables in the database for nsi | ||||
|     - **big-packet** - (Alexey Knyazev) big packet service | ||||
|     - **bridge** - (Mikhail Moiseev) bridge between different esb using brokers | ||||
|     - **db-connector-parent** - (Alexey Knyazev) connector to intermediate database | ||||
|         - **db-connector** - (Alexey Knyazev) connector to intermediate database, converts xml into java objects and | ||||
|           then saves it to the database via jpa, and also back | ||||
|         - **db-hyperjaxb3-naming-extension** - (Alexey Knyazev) - plugin for the hyperjaxb3 plugin that makes more | ||||
|           human-readable names for xsd generated columns and tables | ||||
|     - **file-archive-connector** - (Borodina Valeria) module for working with systems that work through the file | ||||
|       system (collects messages within an hour and collects them into an archive) | ||||
|     - **file-service** - (Alexey Knyazev) service for sending files via esb | ||||
| - **features** - there should generally be one feature that pulls up features for individual components. Having | ||||
|   installed it, we install entaxy in Karaf | ||||
| - **platform** - Content of a base entaxy | ||||
|     - **runtime** - Components required for launch and work of the platform | ||||
|         - **base** - starts before the bundles with a low startlevel or even enters the custom build of Karaf | ||||
|             - **branding** - logo creation entaxy | ||||
|             - **connecting** - infrastructure of adapters and connections | ||||
|         - **core** - core entaxy | ||||
|             - **initializer** - Initialization infrastructure on first startup, including checking, creating and running | ||||
|               the required system connections | ||||
|                 - **storage-initializer** - (Mikhail Moiseev) everything related to data storage | ||||
|             - **management** - artifact management | ||||
|         - **modules** - additional modules entaxy | ||||
|             - **uniform-service** - uniform service | ||||
|                 - **uniform-service-exchange-endpoint** - uniform soap-service | ||||
|                 - **connector** - stored in and out connectors | ||||
|                 - **support** - support routers for connectors | ||||
| - **system** - (Andrey Filippov) the product(the module will subsequently be removed) | ||||
|     - **auth** - (Sergey Kryuchkov, Mikhail Moiseev) everything related to authorization, including bundles for specific | ||||
|       authorization schemes, a general interceptor for CXF, etc. | ||||
|     - **common** - common libraries | ||||
|     - **core** - the core of the system | ||||
|         - **dispatcher** - | ||||
|         - **events** - (Mikhail Moiseev) work with topics, our implementation of message delivery | ||||
|         - **permission** - (Mikhail Moiseev) permission | ||||
|         - **template** - (Borodina Valeria) work with templates to create profiles, connectors, etc. | ||||
|         - **error-handler** - (Sergey Kryuchkov) error handling routes and helper classes. | ||||
|     - **deployer** - (Borodina Valeria) everything related to the process of processing data from a gui, converting it | ||||
|       to a blueprint and deploying this blueprint to esb | ||||
|         - **cellar-deployer** - (Borodina Valeria) deploy blueprint to karaf cluster using cellar | ||||
|         - **deployer-api** - (Mikhail Moiseev, Borodina Valeria) interface deployer | ||||
|         - **nexus-deployer** - (Borodina Valeria) deploy generated blueprint to nexus | ||||
|         - **file-system-deployer** - (Mikhail Moiseev) deploy generated blueprints to filesystem | ||||
|     - **registry** - (Mikhail Moiseev) product-defined registries should contain systems, system-groups, services for | ||||
|       specific registry implementations | ||||
|         - **systems** - description of the external system in ours | ||||
|         - **system-groups** - groups of systems, generalized by some attribute | ||||
|         - **profile-commons** - can be connected by a connector to a communication point | ||||
|         - **processes** - | ||||
|         - **service** - this is the point of communication. (something deployed under CXF) | ||||
|         - **connectors** - something that links the profile to the point of communication | ||||
|     - **system-management** - (Borodina Valeria) management of systems, profiles and system connectors | ||||
|     - **transformer** - implementation of data transformations gui -> blueprint | ||||
|     - **test** - tests for postman | ||||
|  | ||||
|  | ||||
|         Use English in the repository!  | ||||
|             - in the commit comments | ||||
|             - int the code | ||||
|  | ||||
| ## **Repository rules** | ||||
|  | ||||
| 	Commits to the master are undesirable, but if you cannot do otherwise, warn colleagues in the general chat with a description of the reason. | ||||
|  | ||||
| **short:** | ||||
|  | ||||
| Feature branching - any development is carried out in separate branches (we branch from master / release) and then we | ||||
| make a pull request. | ||||
|  | ||||
| **full:** | ||||
|  | ||||
| **Branches:** | ||||
|  | ||||
| - *master* - develop branch, we do new branch from it and we merge into it | ||||
|  | ||||
| - *release-<version>* - stable release branch from it we do new branch in case of hotfix.   | ||||
|   Release branch storage conditions: | ||||
|  | ||||
|     1. customer pays for support | ||||
|     2. our support for this release has not expired | ||||
|     3. the customer did not switch to a new release | ||||
|  | ||||
| - *feature-branch* - development branches, stored until checked out and merged with the target branch\ | ||||
|   Branch naming: | ||||
|  | ||||
|     * issue number from youtrack | ||||
|     * especially meaningful short name of the functional | ||||
|  | ||||
| - *hotfix-branch* - branches for hotfixes, stored similarly *feature-branch*\ | ||||
|   Branch naming - prefix "hotfix-" further: | ||||
|  | ||||
|     * issue number from youtrack | ||||
|     * especially meaningful short name of the functional | ||||
|  | ||||
| **Pull request** | ||||
|  | ||||
| - **For fixes and minor improvements** we assign to reviewers: lead developer - *Alexey Knyazev* and *responsible | ||||
|   for functionality / interested parties* | ||||
|   responsible and interested can be found in the description of the project above. | ||||
|  | ||||
| - **For major improvements** to the persons described above, add *Andrey Filippov* and *Sergey Starovoitenkov* | ||||
|  | ||||
| If no more improvements are planned in the merge-directed branch, when creating a pull request, we mark **Close branch** | ||||
|  | ||||
| **Camel Headers** | ||||
|  | ||||
|     Headers used for service purposes are named according to the HTTP manifest, i.e. with a capital letter through a dash. | ||||
|     Must start with "Entaxy-" | ||||
|  | ||||
| **Configuration File Naming Format** | ||||
|  | ||||
| **Connectors:**\ | ||||
| _<project_name>.<system_name>.<connector_type>.<connector_direction>_\ | ||||
| examples \ | ||||
| _project.1c.odata.in_\ | ||||
| _project.rest1.in_ | ||||
|  | ||||
| **Project configs (specific functionality):**\ | ||||
| _<project_name>.<module_name>_\ | ||||
| examples\ | ||||
| _project.audit_\ | ||||
| _project2.informer_ | ||||
|  | ||||
| **Extras modules:**\ | ||||
| _<manufacturer_prefix>.<module_name>_\ | ||||
| examples\ | ||||
| _ru.entaxy.eav_\ | ||||
| _org.apache.mdm_ | ||||
|  | ||||
| **Platform:**\ | ||||
| _<manufacturer_prefix>.<platform_part>.<module_name>_\ | ||||
| examples\ | ||||
| _ru.entaxy.esb.system.management_\ | ||||
| _ru.entaxy.esb.system.bridge_ | ||||
|   | ||||
							
								
								
									
										148
									
								
								README.ru.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,148 @@ | ||||
| # entaxy-esb | ||||
|  | ||||
| ### Languages | ||||
| [English](README.md) | ||||
|  | ||||
| Подробная документация: [описание системы](documentation/entaxy_main.adoc).\ | ||||
| Инструкция по установке: [установка](documentation/installation/installation-table-of-contents.ru.adoc).\ | ||||
| Инструкция по запуску тестов для универсального коннектора: [тестирование](documentation/connectors/uniform-exchange-service/tests/postman.adoc). | ||||
|  | ||||
| - **extras** - дополнительные модули шины, которые не входят в базовую поставку шины.(Разрабатывается независимо, устанавливается отдельно.) | ||||
|     - **1с** - модуль рaботы с 1с | ||||
|         - **1c-exchange-service** - (Алексей Князев, Бородина Валерия) модуль обработки сообщений, сервис 1с | ||||
|             - **1c-exchange-endpoint** - выставленный soap-сервис 1с | ||||
|             - **1c-exchange-service-endpoint** - выставленный служебный soap-сервис 1с | ||||
|             - **connector** - хранятся входящий и исходящий коннектор к 1c-exchange-endpoint и 1c-exchange-service-endpoint | ||||
|             - **support** - маршруты, которые нужны для корректной работы коннектора | ||||
|             - **1с-storage** - (Алексей Князев) модуль liquibase создания необходимых таблиц в бд для 1с | ||||
|         - **nsi** - (Алексей Князев, Бородина Валерия) модуль обработки сообщений nsi | ||||
|         - **nsi-soap** - (Алексей Князев) модуль с выставленным soap nsi | ||||
|         - **nsi-storage** - (Алексей Князев) модуль liquibase создания необходимых таблиц в бд для nsi | ||||
|     - **big-packet** - (Алексей Князев) сервис больших пакетов | ||||
|     - **bridge** - (Моисеев Михаил) мост между шинами с использованием брокеров | ||||
|     - **db-connector-parent** - (Алексей Князев) коннектор к промежуточной базе | ||||
|         - **db-connector** - (Алексей Князев) коннектор к промежуточной базе, преобразует xml в java объекты и потом через jpa сохраняет в бд, и также обратно | ||||
|         - **db-hyperjaxb3-naming-extension** - (Алексей Князев) - плагин для плагина hyperjaxb3 который делает более человекочитаемые имена для генерируемых из xsd столбцов и таблиц | ||||
|     - **file-archive-connector** - (Бородина Валерия) модуль для работы с системами, которые работают через файловую систему(собирает сообщения в течение часа и собирает их в архив) | ||||
|     - **file-service** - (Алексей Князев) сервис отправки файлов через шину | ||||
| - **features** - там вообще должна быть одна фича, которая подтягивает фичи по отдельным компонентам. Установив ее мы и устанавливаем продукт в караф | ||||
| - **platform** - Содержимое типовой поставки | ||||
|     - **runtime** - Компоненты необходимые для запуска и работы платформы | ||||
|         - **base** - То, что стартует до остальных бандлов с низким startlevel или вообще входит в кастомную сборку Карафа | ||||
|             - **branding** - создание логотипа entaxy | ||||
|             - **connecting** - инфраструктура адаптеров и коннекций | ||||
|         - **core** - ядро entaxy | ||||
|             - **initializer** - Инфраструктра инициализации при первом запуске, в том числе проверка, создание и запуск необходимых системных коннекций | ||||
|                 - **storage-initializer** - (Моисеев Михаил) все, что относится к хранению данных с общей точки зрения | ||||
|             - **management** - управление артефактами | ||||
|         - **modules** - дополнительные модули entaxy | ||||
|             - **uniform-service** - Универсальный сервис | ||||
|                 - **uniform-service-exchange-endpoint** - выставленный универсальный soap-сервис | ||||
|                 - **uniform-service-exchange-service-endpoint** - выставленный универсальный служебный soap-сервис | ||||
|                 - **connector** - хранятся входящий и исходящий коннектор | ||||
|                 - **support** - маршруты, которые нужны для корректной работы коннектора | ||||
| - **system** - (Андрей Филиппов) собственно, продукт(модуль впоследствии будет удален) | ||||
|     - **auth** - (Сергей Крючков, Моисеев Михаил) все, что относится к авторизации, включая бандлы для конкретных схем авторизации, общий интерсептор для CXF и т.д. | ||||
|     - **common** - общие библиотеки | ||||
|     - **core** - ядро системы, что там будет, пока сложно конкретизировать, но что-то наверняка будет | ||||
|         - **dispatcher** - | ||||
|         - **events** - (Моисеев Михаил) работа с топиками, наша реализация доставки сообщений | ||||
|         - **permission** - (Моисеев Михаил) права доступа | ||||
|         - **template** - (Бородина Валерия) работа с шаблонами для создания профилей, коннекторов и т д | ||||
|         - **error-handler** - (Сергей Крючков) маршруты для обработки ошибок и вспомогательные классы. | ||||
|     - **deployer** - (Бородина Валерия) все, что относится к процессу обработки данных из gui, их преобразования в blueprint и деплоя этого blueprint в шину | ||||
|         - **cellar-deployer** - (Бородина Валерия) деплой blueprint в кластер карафа с помощью cellar | ||||
|         - **deployer-api** - (Моисеев Михаил, Бородина Валерия) интерфейс deployer | ||||
|         - **nexus-deployer** - (Бородина Валерия) деплой сгенерированных blueprint в nexus | ||||
|         - **file-system-deployer** - (Моисеев Михаил) деплой сгенерированных blueprint в файловую систему | ||||
|     - **registry** - (Моисеев Михаил) реестры, определенные в продукте, должна содержать systems, system-groups, services для реализаций конкретных реестров | ||||
|         - **systems** - описание внешней системы в нашей. | ||||
|         - **system-groups** - группы систем, обобщённые по какому-либо признаку | ||||
|         - **profile-commons** - может быть связан коннектором с точкой коммуникации. | ||||
|         - **processes** - | ||||
|         - **service** - это точка коммуникации. (что-то, развернутое под CXF) | ||||
|         - **connectors** - нечто, что связывает профиль с точкой коммуникации | ||||
|     - **system-management** - (Бородина Валерия) управление системами, профилями и коннекторами систем | ||||
|     - **transformer** - видимо, друг deploer'а, реализация трансформаций данных gui -> blueprint | ||||
|     - **test** - тесты для postman | ||||
|  | ||||
|  | ||||
|         В репозитории использовать английский!  | ||||
|             - в комментариях к коммитам | ||||
|             - в коде | ||||
|  | ||||
| ## **Правила работы с репозиторием** | ||||
|  | ||||
| 	Коммиты в мастер глубоко нежелательны, но если нельзя поступить по-другому, предупредите коллег в общем чате с описанием причины. | ||||
|  | ||||
| **Кратко:** | ||||
|  | ||||
| Feature branching - любая разработка ведётся в отдельных ветках(бранчуемся от master/release) после чего делаем pull request. | ||||
|  | ||||
|  | ||||
| **Полно:** | ||||
|  | ||||
| **Ветки:** | ||||
|  | ||||
| - *master* - develop ветка от неё бранчуемся, в неё сливаемся | ||||
|  | ||||
| - *release-<version>* - стабильная релизная ветка от неё бранчуемся в случае hotfix-ов.   | ||||
|   Условия хранения релизной ветки: | ||||
|  | ||||
|     1. заказчик платит за поддержку | ||||
|     2. не истек срок нашей поддержки этого релиза | ||||
|     3. заказчик не произвел переход на новый релиз | ||||
|  | ||||
| - *feature-branch* - ветки разработок, хранится до проверки и слияния с целевой веткой   | ||||
|   Именование веток: | ||||
|  | ||||
|     * номером задачи из youtrack | ||||
|     * особо осмысленным кратким названием функционала | ||||
|  | ||||
| - *hotfix-branch* - ветки для hotfix-ов, хранится аналогично *feature-branch*   | ||||
|   Именование веток - префикс "hotfix-" далее: | ||||
|  | ||||
|     * номер задачи из youtrack | ||||
|     * особо осмысленное краткое название исправления | ||||
|  | ||||
| **Pull request** | ||||
|  | ||||
| - **Для фиксов и мелких доработок** назначаем в рецензенты: ведущего разработчика - *Алексея Князева* и *ответственных за функционал/заинтересованных лиц* | ||||
|   ответственных и заинтересованных можно посмотреть в описании проекта выше. | ||||
|  | ||||
| - **Для крупных доработок** к описанным выше лицам добавляем *Андрея Филиппова* и *Сергея Старовойтенкова* | ||||
|  | ||||
| Если не планируется больше доработок в ветке направленной на мерж, при создании pull request-а помечаем **Close branch** | ||||
|  | ||||
| **Camel заголовки** | ||||
|  | ||||
|     Заголовки используемые для служебных целей именуются в соответствии с HTTP манифестом, т.е. с большой буквы через тире. | ||||
|     Начинаться должны с "Entaxy-" | ||||
|  | ||||
| **Формат именования конфигурационных файлов** | ||||
|  | ||||
| **Коннекторы:**\ | ||||
| _<project_name>.<system_name>.<connector_type>.<connector_direction>_\ | ||||
| примеры \ | ||||
| _project.1c.odata.in_\ | ||||
| _project.rest1.in_ | ||||
|  | ||||
| **Проектные конфиги(специфическая функциональность):**\ | ||||
| _<project_name>.<module_name>_\ | ||||
| примеры\ | ||||
| _project.audit_\ | ||||
| _project2.informer_ | ||||
|  | ||||
| **Extras модули:**\ | ||||
| _<manufacturer_prefix>.<module_name>_\ | ||||
| примеры\ | ||||
| _ru.entaxy.eav_\ | ||||
| _org.apache.mdm_ | ||||
|  | ||||
| **Платформа:**\ | ||||
| _<manufacturer_prefix>.<platform_part>.<module_name>_\ | ||||
| примеры\ | ||||
| _ru.entaxy.esb.system.management_\ | ||||
| _ru.entaxy.esb.system.bridge_ | ||||
|   | ||||
|   | ||||
							
								
								
									
										
											BIN
										
									
								
								documentation/Entaxy.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 51 KiB | 
							
								
								
									
										3606
									
								
								documentation/Management layer.postman_collection.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								documentation/connectors/Message.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 60 KiB | 
							
								
								
									
										203
									
								
								documentation/connectors/create_new_connectors.adoc
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,203 @@ | ||||
| = План создания коннектора | ||||
|  | ||||
| Для создания полноценного коннектора необходимо создать 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.QueueInConnectorImpl"> | ||||
|         <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.QueueInConnectorImpl"> | ||||
|     <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.QueueOutConnectorImpl"> | ||||
|         <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.QueueOutConnectorImpl"> | ||||
|     <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[Информация о создании коннекторов со стороны пользователя] | ||||
							
								
								
									
										
											BIN
										
									
								
								documentation/connectors/db-connector/deployment_schema.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 169 KiB | 
							
								
								
									
										86
									
								
								documentation/connectors/naming_service_headers.adoc
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,86 @@ | ||||
| = Используемые служебные заголовки 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 | ||||
| |=== | ||||
|  | ||||
							
								
								
									
										
											BIN
										
									
								
								documentation/connectors/uniform-exchange-service/US-active.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 19 KiB | 
							
								
								
									
										
											BIN
										
									
								
								documentation/connectors/uniform-exchange-service/US.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 44 KiB | 
| @@ -0,0 +1,76 @@ | ||||
| = Активный режим коннектора | ||||
|  | ||||
| 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> | ||||
| ---- | ||||
| @@ -0,0 +1,35 @@ | ||||
| = 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) | ||||
| - добавлен безопасный механизм забора сообщений из очереди(восстановление сообщения в очереди, если не пришло подтверждение) | ||||
|  | ||||
|  | ||||
|  | ||||
| After Width: | Height: | Size: 53 KiB | 
| After Width: | Height: | Size: 30 KiB | 
| After Width: | Height: | Size: 29 KiB | 
| After Width: | Height: | Size: 28 KiB | 
| After Width: | Height: | Size: 37 KiB | 
| After Width: | Height: | Size: 51 KiB | 
| After Width: | Height: | Size: 50 KiB | 
| After Width: | Height: | Size: 78 KiB | 
| After Width: | Height: | Size: 81 KiB | 
| After Width: | Height: | Size: 64 KiB | 
| After Width: | Height: | Size: 56 KiB | 
| After Width: | Height: | Size: 57 KiB | 
| After Width: | Height: | Size: 78 KiB | 
| @@ -0,0 +1,89 @@ | ||||
| = Инструкция для работы с шиной через универсальный коннектор | ||||
|  | ||||
| === Преднастройка окружения | ||||
|  | ||||
| . Скачать и установить 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 | ||||
| .. _GET_ - получение тестового сообщения из системы 1 системой 2 | ||||
| .. _ACK_ - отправка подтверждения получения сообщения системы 2(иначе сообщение будет восстановлено) | ||||
| .. _Remove profile system1_ - удаление из шины профиля системы 1 и всех связанных с ней коннекторов | ||||
| .. _Remove profile system2_ - удаление из шины профиля системы 2 и всех связанных с ней коннекторов | ||||
| .. _Remove Account system1_ - удаление учетной записи системы 1 из шины | ||||
| .. _Remove Account system2_ - удаление учетной записи системы 2 из шины | ||||
| @@ -0,0 +1,54 @@ | ||||
| { | ||||
| 	"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" | ||||
| } | ||||
| @@ -0,0 +1,38 @@ | ||||
| = Универсальный сервис(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#_активный_режим_коннектора[Информация по активному режиму работы универсального сервиса] | ||||
|  | ||||
| @@ -0,0 +1,219 @@ | ||||
| = Общее описание 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[] | ||||
|  | ||||
							
								
								
									
										
											BIN
										
									
								
								documentation/core/Control Service.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 107 KiB | 
							
								
								
									
										
											BIN
										
									
								
								documentation/core/System-management.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 104 KiB | 
							
								
								
									
										
											BIN
										
									
								
								documentation/core/auth/Authentication.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 80 KiB | 
							
								
								
									
										169
									
								
								documentation/core/auth/Authorization.adoc
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,169 @@ | ||||
| =  Общие положения | ||||
|  | ||||
| При передаче сообщения от внешней системы в шину происходит процесс аутентификации внешней системы в шине. Т.е. при передаче сообщения шине с помощью сервера _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_. | ||||
| @@ -0,0 +1,79 @@ | ||||
| Связь между двумя независимыми брокерами осуществляется с помощью моста. Карафы подключенные к одному брокеру далее будут именоваться шиной. | ||||
|  | ||||
| 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 | ||||
| ---- | ||||
|  | ||||
|  | ||||
|  | ||||
							
								
								
									
										
											BIN
										
									
								
								documentation/core/bridge/Route-in-different-esb.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 46 KiB | 
							
								
								
									
										
											BIN
										
									
								
								documentation/core/clustering.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 125 KiB | 
							
								
								
									
										44
									
								
								documentation/core/deployer/deployer-common.adoc
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,44 @@ | ||||
| = Файловые репозитории  | ||||
|  | ||||
| *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 | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
							
								
								
									
										144
									
								
								documentation/core/exception/Centralized-error-handler.adoc
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,144 @@ | ||||
| Централизованный обработчик ошибок для формирования кодов ошибок, их синхронного возврата клиенту и для асинхронного дублирования более подробного описания ошибки для клиента и для Центральной Базы Интеграции. | ||||
|  | ||||
| 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> | ||||
| ---- | ||||
|  | ||||
|  | ||||
							
								
								
									
										31
									
								
								documentation/core/exception/Error-description.adoc
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,31 @@ | ||||
| = Использование обработчика ошибок | ||||
|  | ||||
| Для централизованной обработки ошибок будем использовать “процессор” зарегистрированный через _<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_ сообщения | ||||
|  | ||||
|  | ||||
							
								
								
									
										
											BIN
										
									
								
								documentation/core/exception/Error-handling-Scheme.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 82 KiB | 
| @@ -0,0 +1,318 @@ | ||||
| = 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> | ||||
| ---- | ||||
|  | ||||
							
								
								
									
										
											BIN
										
									
								
								documentation/core/route_packet.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 184 KiB | 
							
								
								
									
										462
									
								
								documentation/core/schema/Schema.adoc
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,462 @@ | ||||
| = Shema | ||||
|  | ||||
| Есть три типа ресурсов, которые можно загружать в шину и использовать в маршрутах: | ||||
|  | ||||
| . Валидационные типы ресурсов (нпрм 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> | ||||
| ---- | ||||
							
								
								
									
										
											BIN
										
									
								
								documentation/core/screenshots/screenshot_artemis_1.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 166 KiB | 
							
								
								
									
										
											BIN
										
									
								
								documentation/core/screenshots/screenshot_artemis_10.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 181 KiB | 
							
								
								
									
										
											BIN
										
									
								
								documentation/core/screenshots/screenshot_artemis_2.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 288 KiB | 
							
								
								
									
										
											BIN
										
									
								
								documentation/core/screenshots/screenshot_artemis_3.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 288 KiB | 
							
								
								
									
										
											BIN
										
									
								
								documentation/core/screenshots/screenshot_artemis_4.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 288 KiB | 
							
								
								
									
										
											BIN
										
									
								
								documentation/core/screenshots/screenshot_artemis_5.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 407 KiB | 
							
								
								
									
										
											BIN
										
									
								
								documentation/core/screenshots/screenshot_artemis_6.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 452 KiB | 
							
								
								
									
										
											BIN
										
									
								
								documentation/core/screenshots/screenshot_artemis_7.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 232 KiB | 
							
								
								
									
										
											BIN
										
									
								
								documentation/core/screenshots/screenshot_artemis_8.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 367 KiB | 
							
								
								
									
										
											BIN
										
									
								
								documentation/core/screenshots/screenshot_artemis_9.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 365 KiB | 
							
								
								
									
										
											BIN
										
									
								
								documentation/core/screenshots/screenshot_hawtio_1.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 155 KiB | 
							
								
								
									
										
											BIN
										
									
								
								documentation/core/screenshots/screenshot_hawtio_2.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 261 KiB | 
							
								
								
									
										
											BIN
										
									
								
								documentation/core/screenshots/screenshot_hawtio_3.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 207 KiB | 
							
								
								
									
										
											BIN
										
									
								
								documentation/core/screenshots/screenshot_hawtio_4.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 170 KiB | 
							
								
								
									
										
											BIN
										
									
								
								documentation/core/screenshots/screenshot_hawtio_5.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 170 KiB | 
							
								
								
									
										
											BIN
										
									
								
								documentation/core/screenshots/screenshot_hawtio_6.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 213 KiB | 
							
								
								
									
										
											BIN
										
									
								
								documentation/core/screenshots/screenshot_hawtio_7.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 338 KiB | 
| @@ -0,0 +1,836 @@ | ||||
| = Руководство по управлению коннекторами и профилями в шине. | ||||
|  | ||||
| _Профиль(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> | ||||
| ---- | ||||
| After Width: | Height: | Size: 69 KiB | 
							
								
								
									
										555
									
								
								documentation/core/topic/Topic-management-Rest-service.adoc
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,555 @@ | ||||
| = 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 | ||||
| quirtz.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_ в свойстве quirtz.job.clean.cron=0+0+0+*+*+?+* | ||||
| с помощью cron выражения. Особенность cron выражения для quartz в том что “++” используется, как разделитель. | ||||
|  | ||||
							
								
								
									
										
											BIN
										
									
								
								documentation/core/topic/Topic_publish_diagram.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 44 KiB | 
							
								
								
									
										177
									
								
								documentation/entaxy_main.adoc
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,177 @@ | ||||
| = Entaxy | ||||
| :imagesdir: . | ||||
| :hardbreaks: | ||||
|  | ||||
| Entaxy - шина, которую можно конфигурировать извне с помощью графического интерфейса или API, состоящая из модулей: | ||||
|  | ||||
| image::Entaxy.png[] | ||||
|  | ||||
| == *Управленческий слой(core):* | ||||
|  | ||||
| === basic-auth | ||||
|  | ||||
| модуль, отвечающий за аутентификацию в шине. Tак же занимается хранением, созданием, редактированием и удалением учетных записей. | ||||
|  | ||||
| xref:core/auth/Authorization.adoc[Более полную информации о basic-auth найдете по этой ссылке] | ||||
|  | ||||
| _Для разработчиков: | ||||
| -имеет Api, который занимается Crud операциями, | ||||
| -хранит учетные записи в базе данных, | ||||
| -предоставляет файл с актуальной информацией для nginx, | ||||
| -выставляет interсeptor для аутентификации в других сервисах, | ||||
| -выставляет interсeptor для определения принадлежности аккаунта определённой системе._ | ||||
|  | ||||
|  | ||||
| === permission | ||||
|  | ||||
| модуль, отвечающий за управление правами доступа. | ||||
|  | ||||
| xref:core/permission/SOAP-service-Permission-management.adoc[Более полную информации о permission найдете по этой ссылке] | ||||
|  | ||||
| _Для разработчиков: | ||||
| -имеет Api, который занимается Crud операциями | ||||
| - хранит права в базе данных, | ||||
| -(camel)компонент, который используется в маршрутах, для проверки возможности отправки из системы a в систему b. | ||||
| -выставляет interсeptor для авторизации в служебных сервисах._ | ||||
|  | ||||
|  | ||||
| === 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] | ||||
							
								
								
									
										
											BIN
										
									
								
								documentation/installation/img/services.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 168 KiB | 
							
								
								
									
										626
									
								
								documentation/installation/install.adoc
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,626 @@ | ||||
| = Руководство по установке 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 | ||||
| ---- | ||||
| + | ||||
| . Создать файл сервиса `/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.0-SNAPSHOT/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[] | ||||
|  | ||||
| На этом установку Системы можно считать законченной. | ||||
| @@ -0,0 +1,10 @@ | ||||
| __Alternative languages:__ | ||||
|  | ||||
| * xref:installation-table-of-contents.ru.adoc[Russian] | ||||
|  | ||||
| = Installation | ||||
| Entaxy have different installation ways OOTB: | ||||
|  | ||||
| * xref:../../temp/entaxy-docker/ReadMe.md[Development docker installation] | ||||
| * xref:../../features/README.md[Development standalone installation] | ||||
| * xref:install.adoc[Enterprise environment installation] | ||||
| @@ -0,0 +1,10 @@ | ||||
| __Alternative languages:__ | ||||
|  | ||||
| * xref:installation-table-of-contents.adoc[English] | ||||
|  | ||||
| = Установка | ||||
| Entaxy из коробки имеет разные варианты установки: | ||||
|  | ||||
| * xref:../../temp/entaxy-docker/ReadMe.md[Установка для разработки в докер] | ||||
| * xref:../../features/README.ru.md[Установка для разработки отдельных серверных приложений] | ||||
| * xref:install.adoc[Установка на промышленное окружение] | ||||
| After Width: | Height: | Size: 95 KiB | 
| After Width: | Height: | Size: 31 KiB | 
| After Width: | Height: | Size: 45 KiB | 
| After Width: | Height: | Size: 115 KiB | 
| @@ -0,0 +1,5 @@ | ||||
| = Entaxy local installation on workstation or server. | ||||
|  | ||||
| __Alternative languages:__ | ||||
|  | ||||
| * xref:windows-local-installation.ru.adoc[Russian] | ||||
| @@ -0,0 +1,116 @@ | ||||
| = Локальная установка Entaxy на рабочую станцию или сервер. | ||||
|  | ||||
| __Alternative languages:__ | ||||
|  | ||||
| * xref:windows-local-installation.adoc[English] | ||||
|  | ||||
| == Введение. | ||||
|  | ||||
| В этой инструкции мы рассмотрим установку Entaxy, включая брокер и бд, на одной машине с операционной системой Windows. Установка на другие ОС проходит аналогичным образом и отличается выбором соответствующих инсталяторов или использованием пакетных менеджеров. | ||||
|  | ||||
| == Шаг 1: Установка Java. | ||||
|  | ||||
| Скачиваем и устанавливаем JAVA. Для работы Entaxy рекомендуется Java 11. Работа платформы протестирована на OpenJDK и LibericaJDK от BellSoft (https://libericajdk.ru/pages/downloads/). | ||||
|  | ||||
| == Шаг 2: Установка и настройка Maven. | ||||
|  | ||||
| 1. Скачиваем архив с официального сайта (https://maven.apache.org/download.cgi). | ||||
| 2. Распаковываем архив и переходи в директорию bin. | ||||
| 3. Копируем абсолютный путь к директории bin и добавляем его в системную переменную окружения PATH. | ||||
|  | ||||
| == Шаг 3: Получение исходных кодов и сборка проекта. | ||||
|  | ||||
| 1. Для получения исходных кодов платформы переходим по адресу https://git.emdev.ru/entaxy-public/entaxy-public и нажимаем иконку `скачать`. image:image/source-download.jpg[source-download] | ||||
| 2. Распаковываем архив и переходим в корневую директорию проекта `entaxy-public`. | ||||
| 3. Собираем проект командой `mvn install`. | ||||
|  | ||||
| == Шаг 4: Установка и настройка БД. | ||||
|  | ||||
| Entaxy не привязана к какой-либо конкретной СУБД, но в большинстве случаев используется PostgreSQL. | ||||
|  | ||||
| 1. Скачиваем инсталятор с официального сайта (https://www.enterprisedb.com/downloads/postgres-postgresql-downloads). | ||||
| 2. Запускаем установку. image:image/postgresql-installation-1.jpg[postgresql-installation] | ||||
| 3. Оставляем все настройки по умолчанию и устанавливаем пароль `postgres`. | ||||
| 4. Запускаем pgAdmin 4 и устанавливаем мастер пароль для приложения `postgres`. image:image/pgadmin-start.jpg[pgadmin-start] | ||||
| 5. Добавляем подключение к локальному серверу БД. | ||||
| 6. Выбираем доступную базу данных из списка и переходим в Query Tool, в котором выполняем sql запрос: | ||||
|  | ||||
| [source,sql] | ||||
| ---- | ||||
| CREATE USER "entaxy" WITH PASSWORD 'entaxy'; | ||||
| ---- | ||||
| image:image/pgadmin-create-user.jpg[pgadmin-create-user] | ||||
| [start=7] | ||||
| . Теперь в том же окне по очереди (по одной строчке) выполняем запросы для создания необходимых для Entaxy баз данных. | ||||
|  | ||||
| [source,sql] | ||||
| ---- | ||||
| CREATE DATABASE esb_entaxy; | ||||
| ---- | ||||
|  | ||||
| [source,sql] | ||||
| ---- | ||||
| GRANT ALL PRIVILEGES ON DATABASE esb_entaxy TO entaxy; | ||||
| ---- | ||||
|  | ||||
| [source,sql] | ||||
| ---- | ||||
| CREATE DATABASE cache; | ||||
| ---- | ||||
|  | ||||
| [source,sql] | ||||
| ---- | ||||
| GRANT ALL PRIVILEGES ON DATABASE cache TO entaxy; | ||||
| ---- | ||||
|  | ||||
| На этом настройка СУБД завершена. | ||||
|  | ||||
| == Шаг 5: Установка и настройка брокера. | ||||
|  | ||||
| В этой инструкции мы рассмотрим использование брокера сообщений Artemis. | ||||
|  | ||||
| 1. Скачиваем архив с официального сайта (https://activemq.apache.org/components/artemis/download/). | ||||
| 2. Распаковываем архив и переходим в директорию bin. | ||||
| 3. Запускаем в командной строке создание брокера `artemis create --user entaxy --password entaxy --allow-anonymous $ARTEMIS_HOME/brokers/entaxy-broker`. | ||||
| 4. После создания брокера надо открыть файл `$ARTEMIS_HOME/brokers/entaxy-broker/etc/broker.xml` и проверить, что автоматическое удаление очередей и адресов отключено: | ||||
|  | ||||
| [source,xml] | ||||
| ---- | ||||
| <!--default for catch all--> | ||||
| <address-setting match="#"> | ||||
|  | ||||
|     <auto-delete-queues>false</auto-delete-queues> | ||||
|     <auto-delete-addresses>false</auto-delete-addresses> | ||||
|  | ||||
| </address-setting> | ||||
| ---- | ||||
| 5. Запускаем брокер сообщений `$ARTEMIS_HOME/brokers/entaxy-broker/bin/artemis run` | ||||
|  | ||||
| Установка брокера завершена. | ||||
|  | ||||
| == Шаг 6: Установка и запуск карафа. | ||||
|  | ||||
| 1. Скачать Karaf Runtime 4.2.9 (Binary Distribution : ZIP) с официального сайта (https://archive.apache.org/dist/karaf/4.2.9/apache-karaf-4.2.9.zip). | ||||
| 2. Распаковываем архив и переходим в директорию `etc`. | ||||
| 3. Копируем в директорию `etc` карафа все файлы исходных кодов из директории `entaxy-public\features\target\cfg` и ещё один файл `entaxy-public\features\target\script\install.karaf`. | ||||
| 4. Переходим в директорию `bin` карафа и запускаем командой `karaf` | ||||
| После запуска откроется консоль карафа. | ||||
|  | ||||
| == Шаг 7: Установка Entaxy в караф. | ||||
|  | ||||
| В командной строке карафа выполнить команду | ||||
| [source,bash] | ||||
| ---- | ||||
| shell:source etc/install.karaf | ||||
| ---- | ||||
| Если времени на установку не хватило, то нужно повторить последнюю команду или выполнить команды установки построчно. Для отображения списка команд достаточно в консоли карафа выполнить команду | ||||
| [source,bash] | ||||
| ---- | ||||
| cat etc/install.karaf | ||||
| ---- | ||||
|  | ||||
| После успешной установки, выполняем команду `list`, чтобы убедиться, что все модули находятся в состоянии `Active`. | ||||
|  | ||||
| == Шаг 8: Тестирование. | ||||
|  | ||||
| Для проверки работоспособности платформы переходим к xref:../../connectors/uniform-exchange-service/tests/postman.adoc[инструкции по тестированию]. | ||||
							
								
								
									
										201
									
								
								features/LICENSE.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,201 @@ | ||||
|                                  Apache License | ||||
|                            Version 2.0, January 2004 | ||||
|                         http://www.apache.org/licenses/ | ||||
|  | ||||
|    TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION | ||||
|  | ||||
|    1. Definitions. | ||||
|  | ||||
|       "License" shall mean the terms and conditions for use, reproduction, | ||||
|       and distribution as defined by Sections 1 through 9 of this document. | ||||
|  | ||||
|       "Licensor" shall mean the copyright owner or entity authorized by | ||||
|       the copyright owner that is granting the License. | ||||
|  | ||||
|       "Legal Entity" shall mean the union of the acting entity and all | ||||
|       other entities that control, are controlled by, or are under common | ||||
|       control with that entity. For the purposes of this definition, | ||||
|       "control" means (i) the power, direct or indirect, to cause the | ||||
|       direction or management of such entity, whether by contract or | ||||
|       otherwise, or (ii) ownership of fifty percent (50%) or more of the | ||||
|       outstanding shares, or (iii) beneficial ownership of such entity. | ||||
|  | ||||
|       "You" (or "Your") shall mean an individual or Legal Entity | ||||
|       exercising permissions granted by this License. | ||||
|  | ||||
|       "Source" form shall mean the preferred form for making modifications, | ||||
|       including but not limited to software source code, documentation | ||||
|       source, and configuration files. | ||||
|  | ||||
|       "Object" form shall mean any form resulting from mechanical | ||||
|       transformation or translation of a Source form, including but | ||||
|       not limited to compiled object code, generated documentation, | ||||
|       and conversions to other media types. | ||||
|  | ||||
|       "Work" shall mean the work of authorship, whether in Source or | ||||
|       Object form, made available under the License, as indicated by a | ||||
|       copyright notice that is included in or attached to the work | ||||
|       (an example is provided in the Appendix below). | ||||
|  | ||||
|       "Derivative Works" shall mean any work, whether in Source or Object | ||||
|       form, that is based on (or derived from) the Work and for which the | ||||
|       editorial revisions, annotations, elaborations, or other modifications | ||||
|       represent, as a whole, an original work of authorship. For the purposes | ||||
|       of this License, Derivative Works shall not include works that remain | ||||
|       separable from, or merely link (or bind by name) to the interfaces of, | ||||
|       the Work and Derivative Works thereof. | ||||
|  | ||||
|       "Contribution" shall mean any work of authorship, including | ||||
|       the original version of the Work and any modifications or additions | ||||
|       to that Work or Derivative Works thereof, that is intentionally | ||||
|       submitted to Licensor for inclusion in the Work by the copyright owner | ||||
|       or by an individual or Legal Entity authorized to submit on behalf of | ||||
|       the copyright owner. For the purposes of this definition, "submitted" | ||||
|       means any form of electronic, verbal, or written communication sent | ||||
|       to the Licensor or its representatives, including but not limited to | ||||
|       communication on electronic mailing lists, source code control systems, | ||||
|       and issue tracking systems that are managed by, or on behalf of, the | ||||
|       Licensor for the purpose of discussing and improving the Work, but | ||||
|       excluding communication that is conspicuously marked or otherwise | ||||
|       designated in writing by the copyright owner as "Not a Contribution." | ||||
|  | ||||
|       "Contributor" shall mean Licensor and any individual or Legal Entity | ||||
|       on behalf of whom a Contribution has been received by Licensor and | ||||
|       subsequently incorporated within the Work. | ||||
|  | ||||
|    2. Grant of Copyright License. Subject to the terms and conditions of | ||||
|       this License, each Contributor hereby grants to You a perpetual, | ||||
|       worldwide, non-exclusive, no-charge, royalty-free, irrevocable | ||||
|       copyright license to reproduce, prepare Derivative Works of, | ||||
|       publicly display, publicly perform, sublicense, and distribute the | ||||
|       Work and such Derivative Works in Source or Object form. | ||||
|  | ||||
|    3. Grant of Patent License. Subject to the terms and conditions of | ||||
|       this License, each Contributor hereby grants to You a perpetual, | ||||
|       worldwide, non-exclusive, no-charge, royalty-free, irrevocable | ||||
|       (except as stated in this section) patent license to make, have made, | ||||
|       use, offer to sell, sell, import, and otherwise transfer the Work, | ||||
|       where such license applies only to those patent claims licensable | ||||
|       by such Contributor that are necessarily infringed by their | ||||
|       Contribution(s) alone or by combination of their Contribution(s) | ||||
|       with the Work to which such Contribution(s) was submitted. If You | ||||
|       institute patent litigation against any entity (including a | ||||
|       cross-claim or counterclaim in a lawsuit) alleging that the Work | ||||
|       or a Contribution incorporated within the Work constitutes direct | ||||
|       or contributory patent infringement, then any patent licenses | ||||
|       granted to You under this License for that Work shall terminate | ||||
|       as of the date such litigation is filed. | ||||
|  | ||||
|    4. Redistribution. You may reproduce and distribute copies of the | ||||
|       Work or Derivative Works thereof in any medium, with or without | ||||
|       modifications, and in Source or Object form, provided that You | ||||
|       meet the following conditions: | ||||
|  | ||||
|       (a) You must give any other recipients of the Work or | ||||
|           Derivative Works a copy of this License; and | ||||
|  | ||||
|       (b) You must cause any modified files to carry prominent notices | ||||
|           stating that You changed the files; and | ||||
|  | ||||
|       (c) You must retain, in the Source form of any Derivative Works | ||||
|           that You distribute, all copyright, patent, trademark, and | ||||
|           attribution notices from the Source form of the Work, | ||||
|           excluding those notices that do not pertain to any part of | ||||
|           the Derivative Works; and | ||||
|  | ||||
|       (d) If the Work includes a "NOTICE" text file as part of its | ||||
|           distribution, then any Derivative Works that You distribute must | ||||
|           include a readable copy of the attribution notices contained | ||||
|           within such NOTICE file, excluding those notices that do not | ||||
|           pertain to any part of the Derivative Works, in at least one | ||||
|           of the following places: within a NOTICE text file distributed | ||||
|           as part of the Derivative Works; within the Source form or | ||||
|           documentation, if provided along with the Derivative Works; or, | ||||
|           within a display generated by the Derivative Works, if and | ||||
|           wherever such third-party notices normally appear. The contents | ||||
|           of the NOTICE file are for informational purposes only and | ||||
|           do not modify the License. You may add Your own attribution | ||||
|           notices within Derivative Works that You distribute, alongside | ||||
|           or as an addendum to the NOTICE text from the Work, provided | ||||
|           that such additional attribution notices cannot be construed | ||||
|           as modifying the License. | ||||
|  | ||||
|       You may add Your own copyright statement to Your modifications and | ||||
|       may provide additional or different license terms and conditions | ||||
|       for use, reproduction, or distribution of Your modifications, or | ||||
|       for any such Derivative Works as a whole, provided Your use, | ||||
|       reproduction, and distribution of the Work otherwise complies with | ||||
|       the conditions stated in this License. | ||||
|  | ||||
|    5. Submission of Contributions. Unless You explicitly state otherwise, | ||||
|       any Contribution intentionally submitted for inclusion in the Work | ||||
|       by You to the Licensor shall be under the terms and conditions of | ||||
|       this License, without any additional terms or conditions. | ||||
|       Notwithstanding the above, nothing herein shall supersede or modify | ||||
|       the terms of any separate license agreement you may have executed | ||||
|       with Licensor regarding such Contributions. | ||||
|  | ||||
|    6. Trademarks. This License does not grant permission to use the trade | ||||
|       names, trademarks, service marks, or product names of the Licensor, | ||||
|       except as required for reasonable and customary use in describing the | ||||
|       origin of the Work and reproducing the content of the NOTICE file. | ||||
|  | ||||
|    7. Disclaimer of Warranty. Unless required by applicable law or | ||||
|       agreed to in writing, Licensor provides the Work (and each | ||||
|       Contributor provides its Contributions) on an "AS IS" BASIS, | ||||
|       WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or | ||||
|       implied, including, without limitation, any warranties or conditions | ||||
|       of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A | ||||
|       PARTICULAR PURPOSE. You are solely responsible for determining the | ||||
|       appropriateness of using or redistributing the Work and assume any | ||||
|       risks associated with Your exercise of permissions under this License. | ||||
|  | ||||
|    8. Limitation of Liability. In no event and under no legal theory, | ||||
|       whether in tort (including negligence), contract, or otherwise, | ||||
|       unless required by applicable law (such as deliberate and grossly | ||||
|       negligent acts) or agreed to in writing, shall any Contributor be | ||||
|       liable to You for damages, including any direct, indirect, special, | ||||
|       incidental, or consequential damages of any character arising as a | ||||
|       result of this License or out of the use or inability to use the | ||||
|       Work (including but not limited to damages for loss of goodwill, | ||||
|       work stoppage, computer failure or malfunction, or any and all | ||||
|       other commercial damages or losses), even if such Contributor | ||||
|       has been advised of the possibility of such damages. | ||||
|  | ||||
|    9. Accepting Warranty or Additional Liability. While redistributing | ||||
|       the Work or Derivative Works thereof, You may choose to offer, | ||||
|       and charge a fee for, acceptance of support, warranty, indemnity, | ||||
|       or other liability obligations and/or rights consistent with this | ||||
|       License. However, in accepting such obligations, You may act only | ||||
|       on Your own behalf and on Your sole responsibility, not on behalf | ||||
|       of any other Contributor, and only if You agree to indemnify, | ||||
|       defend, and hold each Contributor harmless for any liability | ||||
|       incurred by, or claims asserted against, such Contributor by reason | ||||
|       of your accepting any such warranty or additional liability. | ||||
|  | ||||
|    END OF TERMS AND CONDITIONS | ||||
|  | ||||
|    APPENDIX: How to apply the Apache License to your work. | ||||
|  | ||||
|       To apply the Apache License to your work, attach the following | ||||
|       boilerplate notice, with the fields enclosed by brackets "[]" | ||||
|       replaced with your own identifying information. (Don't include | ||||
|       the brackets!)  The text should be enclosed in the appropriate | ||||
|       comment syntax for the file format. We also recommend that a | ||||
|       file or class name and description of purpose be included on the | ||||
|       same "printed page" as the copyright notice for easier | ||||
|       identification within third-party archives. | ||||
|  | ||||
|    Copyright [yyyy] [name of copyright owner] | ||||
|  | ||||
|    Licensed 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. | ||||
							
								
								
									
										152
									
								
								features/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,152 @@ | ||||
| # Entaxy features install | ||||
|  | ||||
| ### Alternative languages | ||||
|  | ||||
| [Russian](README.ru.md) | ||||
|  | ||||
| ### Introduction | ||||
|  | ||||
| You need several steps for Entaxy features installation. | ||||
| Use Java 11+. | ||||
|  | ||||
| ### Build | ||||
| You will need to compile this example first: | ||||
|  | ||||
| 	mvn install | ||||
|  | ||||
| ### Run | ||||
|  | ||||
| To run the example on Apache Karaf 4.x or newer | ||||
|  | ||||
| #### Step 1: Karaf | ||||
|  | ||||
| Launch the server | ||||
|  | ||||
| 	karaf / karaf.bat | ||||
|  | ||||
|  | ||||
| #### Step 2: DB Setup | ||||
|  | ||||
| If use docker: | ||||
|  | ||||
|     docker run --name entaxy_db -p 5432:5432 -e POSTGRES_PASSWORD=entaxy -e POSTGRES_USER=entaxy -e POSTGRES_DB=cache -d postgres | ||||
|  | ||||
| #### Step 3: Add features | ||||
|  | ||||
| Add features required | ||||
|  | ||||
| 	feature:repo-add mvn:ru.entaxy.esb/karaf-features/LATEST/xml/features | ||||
| 	feature:install liquibase-updater | ||||
| 	feature:install entaxy-esb-api | ||||
|  | ||||
| Install nsi | ||||
|  | ||||
| 	feature:install nsi | ||||
| 		 | ||||
| Install permission | ||||
|  | ||||
| 	feature:install permission	 | ||||
| 		 | ||||
| Install system-registry | ||||
|  | ||||
| 	feature:install system-registry | ||||
| 	 | ||||
| Install system-group-registry | ||||
|  | ||||
| 	feature:install system-group-registry | ||||
| 	 | ||||
| Install system-group-profile | ||||
|  | ||||
| 	install -s blueprint:mvn:ru.entaxy.esb.integration.esb.test.profiles/test-profiles/1.0-SNAPSHOT/xml/g_test | ||||
|      | ||||
| Install bridge | ||||
|  | ||||
|     feature:install bridge | ||||
|      | ||||
| Install basic-auth | ||||
|  | ||||
|     feature:install basic-auth | ||||
|      | ||||
| Install events | ||||
|  | ||||
|     feature:install events | ||||
| 	 | ||||
| Useful comand for dev | ||||
|  | ||||
| 	bundle:watch mvn:ru.entaxy.esb/nsi-esb/1.0-SNAPSHOT | ||||
|  | ||||
| #### Step 4: Verify that your service is available using the following url in the browser. | ||||
|  | ||||
| We assume you're using Karaf's default PAX Web configuration which uses port `8181` for http. If you would like to use another port or https, change the configuration in `${KARAF_HOME}/etc/org.ops4j.pax.web.cfg`. The immediate extension after the hostname and port ("cxf" in the below URL) is configured via the org.apache.cxf.osgi.cfg file (Please see [http://team.ops4j.org/wiki//display/paxweb/Pax+Web](http://team.ops4j.org/wiki//display/paxweb/Pax+Web) for more information on PAX Web). | ||||
|  | ||||
| [http://localhost:8181/cxf/xdto/NSI?wsdl](http://localhost:8181/cxf/xdto/NSI?wsdl) | ||||
|  | ||||
| #### Step 5: Start SOAPUI or Postman | ||||
|  | ||||
| POST request to  | ||||
|  | ||||
|     http://localhost:8181/cxf/xdto/NSI | ||||
|  | ||||
| Send test request: | ||||
|  | ||||
|     <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xdto="http://www.entaxy.ru/xdto_NSI"> | ||||
|        <soap:Header/> | ||||
|        <soap:Body> | ||||
|           <xdto:GetMDMReferences/> | ||||
|        </soap:Body> | ||||
|     </soap:Envelope> | ||||
|  | ||||
| Response contains GUID, copy it and send request for get result: | ||||
|  | ||||
|     <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xdto="http://www.entaxy.ru/xdto_NSI"> | ||||
|        <soap:Header/> | ||||
|        <soap:Body> | ||||
|           <xdto:GetResult> | ||||
|              <xdto:RequestNumber>{GUID}</xdto:RequestNumber> | ||||
|           </xdto:GetResult> | ||||
|        </soap:Body> | ||||
|     </soap:Envelope> | ||||
|  | ||||
| #### Step 6: Check the file system and DB | ||||
|    Check the folder "target/inbox/" in the Karaf base directory to see that a message has arrived. | ||||
|  | ||||
| ### Forum, Help, etc | ||||
|  | ||||
| If you hit an problems please let us know on the Camel Forums | ||||
| 	<http://camel.apache.org/discussion-forums.html> | ||||
|  | ||||
| Please help us make Apache Camel better - we appreciate any feedback you may | ||||
| have.  Enjoy! | ||||
|  | ||||
|  | ||||
| The Camel riders! | ||||
|  | ||||
|  | ||||
|  | ||||
| ## Reinstall | ||||
|     bin/karaf clean | ||||
|     shell:source install.karaf | ||||
|  | ||||
|  | ||||
| ## Tests | ||||
|  | ||||
| <https://learning.getpostman.com/docs/postman/collection_runs/command_line_integration_with_newman/> | ||||
|  | ||||
| #### Install | ||||
|  | ||||
|     npm install -g newman | ||||
|  | ||||
| #### Run | ||||
|      | ||||
|     cd test | ||||
|     newman run "Entaxy Integration Tests.postman_collection.json" -e "entaxy dev proxy.postman_environment.json" | ||||
|      | ||||
| or | ||||
|      | ||||
|     newman run "Entaxy Integration Tests.postman_collection.json" --env-var base_url=http://192.168.122.83:8181/cxf | ||||
|  | ||||
| #### CXF logging messages | ||||
|  | ||||
|     config:property-set -p org.apache.cxf.features.logging enabled true | ||||
|      | ||||
| and after restart bundle with cxf service | ||||
							
								
								
									
										181
									
								
								features/README.ru.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,181 @@ | ||||
| # Установка фич (features) | ||||
|  | ||||
| ### Languages | ||||
|  | ||||
| [English](README.md) | ||||
|  | ||||
| ### Введение | ||||
|  | ||||
| Для установки фич понадобятся несколько шагов. | ||||
|  | ||||
| Использовать Java 8 | ||||
|  | ||||
| ### Шаг 1: Сборка проекта | ||||
|  | ||||
| Необходимо локально собрать корневой проект: | ||||
|  | ||||
| 	mvn install | ||||
|  | ||||
| #### Шаг 2: Настройка брокера, БД и менеджера артефактов. | ||||
|  | ||||
| При использовании докера запустите Артемис | ||||
|  | ||||
| 	sudo docker run --rm -p 8161:8161 -p 61616:61616 -e ARTEMIS_USERNAME=entaxy -e ARTEMIS_PASSWORD=entaxy --name=artemis1 -d vromero/activemq-artemis | ||||
|  | ||||
| И запустите постгрес | ||||
|  | ||||
| 	sudo docker run --name entaxy_db -p 5432:5432 -v /etc/timezone:/etc/timezone:ro -e POSTGRES_PASSWORD=entaxy -e POSTGRES_USER=entaxy -e POSTGRES_DB=cache -d postgres | ||||
| 	 | ||||
| или Майкрософт Сиквел | ||||
|  | ||||
| 	sudo docker run --name mssql -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=entaxy' -p 1433:1433 -d mcr.microsoft.com/mssql/server:2017-CU8-ubuntu | ||||
|  | ||||
| `По умолчанию в проекте используется 2 базы данных: cache и esb_entaxy,` | ||||
| `Названия баз данных прописаны в конфигурациях соединений с бд org.ops4j.datasource-entaxy.esb.*.cfg` | ||||
|  | ||||
| и осталось поднять nexus(необходимо для работы system-management) | ||||
|  | ||||
| 	sudo docker run -d -p 8081:8081 --name nexus sonatype/nexus3 | ||||
| 	 | ||||
| Теперь смотрим админский пароль через команду: | ||||
|  | ||||
|     docker exec nexus cat /nexus-data/admin.password | ||||
| И далее заходим в админку через браузер на http://localhost:8081/. | ||||
| По умолчанию для работы требуется создать пользователя entaxy/entaxy и maven репозиторий с названием entaxy.  | ||||
|  | ||||
| На Docker Toolbox могут возникнуть ошибки из-за нехватки памяти, решается изменением выделения памяти при запуске` | ||||
|  | ||||
|     docker run -d -p 8081:8081 --name nexus -e INSTALL4J_ADD_VM_PARAMS="-Xms2g -Xmx2g -XX:MaxDirectMemorySize=3g" sonatype/nexus3 | ||||
|  | ||||
| #### Шаг 3: Подготовка и запуск карафа | ||||
|  | ||||
| Скопировать в карафовский etc следующие файлы из репозитория entaxy-framework\features\src\main\cfg\ | ||||
|  | ||||
| 	jre.properties  | ||||
| 	org.apache.karaf.cellar.groups.cfg | ||||
| 	 | ||||
|  | ||||
|  | ||||
| Так же локальный нексус репозиторий необходимо добавить к стандартным репозиториям в файле org.ops4j.pax.url.mvn.cfg свойство org.ops4j.pax.url.mvn.repositories.` | ||||
| `Пользователь и название репозитория прописано в конфигурационном файле ru.entaxy.esb.deployer.nexus.cfg.` | ||||
|  | ||||
|  | ||||
| Запуск Apache Karaf 4.x или новее | ||||
|  | ||||
| 	karaf | ||||
|  | ||||
| Или запуск карафа с очисткой до первоначального состояния | ||||
|  | ||||
| 	karaf clean | ||||
|  | ||||
| ## Шаг 4: Установка всех фич за один раз, используя командную строку карафа | ||||
|  | ||||
| 	shell:source <project-directory>/entaxy-framework/features/src/main/script/install.karaf | ||||
|  | ||||
| - После требуется проверить конфигурации соединений с бд в файлах org.ops4j.datasource-entaxy.esb.*.cfg | ||||
| - Проверить адрес брокера в файле ru.entaxy.esb.cfg свойство ru.entaxy.esb.jms.url | ||||
| - Проверить адреса брокеров для моста в файле ru.entaxy.esb.system.bridge.cfg свойства jms.url.* | ||||
| - Заменить файл org.apache.karaf.cellar.groups.cfg | ||||
|  | ||||
| #### Шаг 4a: Или можно установить фичи вручную   | ||||
|  | ||||
| Добавить необходимые фичи | ||||
|  | ||||
| 	feature:repo-add mvn:ru.entaxy.esb/karaf-features/LATEST/xml/features | ||||
|     feature:install liquibase-updater | ||||
| 	feature:install entaxy-esb-api | ||||
|  | ||||
| Установить nsi | ||||
|  | ||||
| 	feature:install nsi | ||||
|  | ||||
| Установить permission | ||||
|  | ||||
| 	feature:install permission | ||||
|  | ||||
| Установить реестр систем | ||||
|  | ||||
| 	feature:install system-registry	 | ||||
|  | ||||
| Установить тестовый профиль | ||||
|  | ||||
| 	install -s blueprint:mvn:ru.entaxy.esb.integration.esb.test.profiles/test-profiles/1.0-SNAPSHOT/xml/s_s1 | ||||
|  | ||||
| Установить реестр групп систем | ||||
|  | ||||
| 	feature:install system-group-registry | ||||
|  | ||||
| Установить профиль группы систем | ||||
|  | ||||
| 	install -s blueprint:mvn:ru.entaxy.esb.integration.esb.test.profiles/test-profiles/1.0-SNAPSHOT/xml/g_fzd | ||||
|  | ||||
| Установить мост | ||||
|  | ||||
| 	feature:install bridge | ||||
|      | ||||
| Установить сервис управления учётными записями | ||||
|  | ||||
| 	feature:install basic-auth | ||||
|      | ||||
| Установить events | ||||
|  | ||||
| 	feature:install events | ||||
|  | ||||
| Для дев окружения может быть полезна команда watch  | ||||
|  | ||||
| 	bundle:watch mvn:ru.entaxy.esb/nsi-esb/1.0-SNAPSHOT | ||||
|  | ||||
| #### Шаг 5: Проверка доступности сервиса через браузер, используя следующий адрес. | ||||
|  | ||||
| Подразумевается использование настроек по умолчанию для карафовского PAX Web, который для http настроен на порт `8181`. Если Вы желаете использовать другой порт или https, то необходимо поменять настройки в `${KARAF_HOME}/etc/org.ops4j.pax.web.cfg`.  Непосредственное продолжение адреса после имени хоста и номера порта (в примере ниже `cxf`) можно настроить в файле `org.apache.cxf.osgi.cfg`. (Для более подробной информации по PAX Web перейдите по ссылке [http://team.ops4j.org/wiki/display/paxweb/Pax+Web](http://team.ops4j.org/wiki/display/paxweb/Pax+Web)) | ||||
|  | ||||
| #### Шаг 6: Запуск SOAPUI или Postman | ||||
|  | ||||
| Отправка POST запроса на адрес | ||||
|  | ||||
|     http://localhost:8181/cxf/xdto/NSI | ||||
|  | ||||
| Тестовый запрос: | ||||
|  | ||||
|     <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xdto="http://www.entaxy.ru/xdto_NSI"> | ||||
|        <soap:Header/> | ||||
|        <soap:Body> | ||||
|           <xdto:GetMDMReferences/> | ||||
|        </soap:Body> | ||||
|     </soap:Envelope> | ||||
|  | ||||
| Ответ сожержит GUID, скопируйте его и отправьте для получения результата: | ||||
|  | ||||
|     <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xdto="http://www.entaxy.ru/xdto_NSI"> | ||||
|        <soap:Header/> | ||||
|        <soap:Body> | ||||
|           <xdto:GetResult> | ||||
|              <xdto:RequestNumber>{GUID}</xdto:RequestNumber> | ||||
|           </xdto:GetResult> | ||||
|        </soap:Body> | ||||
|     </soap:Envelope> | ||||
|  | ||||
| ## Автотесты | ||||
|  | ||||
| <https://learning.getpostman.com/docs/postman/collection_runs/command_line_integration_with_newman/> | ||||
|  | ||||
| #### Установка | ||||
|  | ||||
| 	npm install -g newman | ||||
|  | ||||
| #### Запуск | ||||
|  | ||||
| 	cd test | ||||
| 	newman run "Entaxy Integration Tests.postman_collection.json" -e "entaxy dev proxy.postman_environment.json" | ||||
|  | ||||
| #### Запуск нагрузочных тестов через Jmeter | ||||
|  | ||||
| В тестах прописана система s1, запросы направляются на 83 ноду | ||||
|  | ||||
| * 1C-EXCHANGE_SEND_GET_ASK.jmx - запись и чтение с подтверждением последовательно | ||||
| * 1C-EXCHANGE_SEND_GET_ASK_ASYNC.jmx - запись и чтение с подтверждением в параллельных потоках | ||||
|  | ||||
| Можно запускать с машины 192.168.122.76 | ||||
|  | ||||
|     cd /opt/jenkins/.jenkins/workspace/test_master/test/jmeter | ||||
|     /opt/apache-jmeter-5.2.1/bin/jmeter.sh -n -t ./1C-EXCHANGE_SEND_GET_ASK_ASYNC.jmx | ||||
							
								
								
									
										196
									
								
								features/pom.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,196 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||
|          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | ||||
|     <modelVersion>4.0.0</modelVersion> | ||||
|     <parent> | ||||
|         <groupId>ru.entaxy.esb</groupId> | ||||
|         <artifactId>root</artifactId> | ||||
|         <version>1.8.0</version> | ||||
|     </parent> | ||||
|  | ||||
|     <artifactId>karaf-features</artifactId> | ||||
|     <name>SYSTEM :: ENTAXY :: Features</name> | ||||
|     <packaging>pom</packaging> | ||||
|  | ||||
|     <profiles> | ||||
|         <profile> | ||||
|             <id>cfg.dev</id> | ||||
|             <properties> | ||||
|                 <environmentConfigurationDirectory>cfg</environmentConfigurationDirectory> | ||||
|             </properties> | ||||
|             <build> | ||||
|                 <resources> | ||||
|                     <resource> | ||||
|                         <directory>src/main/${environmentConfigurationDirectory}</directory> | ||||
|                         <filtering>true</filtering> | ||||
|                         <targetPath>${project.build.directory}/cfg</targetPath> | ||||
|                     </resource> | ||||
|                 </resources> | ||||
|             </build> | ||||
|             <activation> | ||||
|                 <property> | ||||
|                     <name>!skipDevConfig</name> | ||||
|                 </property> | ||||
|             </activation> | ||||
|         </profile> | ||||
|         <profile> | ||||
|             <id>cfg.local</id> | ||||
|             <properties> | ||||
|                 <environmentConfigurationDirectory>cfg.local</environmentConfigurationDirectory> | ||||
|             </properties> | ||||
|         </profile> | ||||
|     </profiles> | ||||
|  | ||||
|     <build> | ||||
|         <resources> | ||||
|             <resource> | ||||
|                 <directory>src/main/feature</directory> | ||||
|                 <filtering>true</filtering> | ||||
|                 <targetPath>${project.build.directory}/feature</targetPath> | ||||
|             </resource> | ||||
|             <resource> | ||||
|                 <directory>src/main/script</directory> | ||||
|                 <filtering>true</filtering> | ||||
|                 <targetPath>${project.build.directory}/script</targetPath> | ||||
|             </resource> | ||||
|         </resources> | ||||
|         <plugins> | ||||
|             <plugin> | ||||
|                 <groupId>org.apache.maven.plugins</groupId> | ||||
|                 <artifactId>maven-resources-plugin</artifactId> | ||||
|                 <version>3.1.0</version> | ||||
|                 <executions> | ||||
|                     <execution> | ||||
|                         <goals> | ||||
|                             <goal>resources</goal> | ||||
|                         </goals> | ||||
|                     </execution> | ||||
|                 </executions> | ||||
|             </plugin> | ||||
|             <plugin> | ||||
|                 <groupId>org.codehaus.mojo</groupId> | ||||
|                 <artifactId>build-helper-maven-plugin</artifactId> | ||||
|                 <version>1.12</version> | ||||
|                 <executions> | ||||
|                     <execution> | ||||
|                         <id>attach-artifacts</id> | ||||
|                         <phase>package</phase> | ||||
|                         <goals> | ||||
|                             <goal>attach-artifact</goal> | ||||
|                         </goals> | ||||
|                         <configuration> | ||||
|                             <artifacts> | ||||
|                                 <artifact> | ||||
|                                     <file>target/feature/feature.xml</file> | ||||
|                                     <type>xml</type> | ||||
|                                     <classifier>features</classifier> | ||||
|                                 </artifact> | ||||
|                                 <artifact> | ||||
|                                     <file>target/cfg/ru.entaxy.esb.cfg</file> | ||||
|                                     <type>cfg</type> | ||||
|                                     <classifier>ru.entaxy.esb</classifier> | ||||
|                                 </artifact> | ||||
|                                 <artifact> | ||||
|                                     <file>target/cfg/ru.entaxy.esb.connector.1c.service.soap.passive.cfg</file> | ||||
|                                     <type>cfg</type> | ||||
|                                     <classifier>ru.entaxy.esb.connector.1c.service.soap.passive</classifier> | ||||
|                                 </artifact> | ||||
|                                 <artifact> | ||||
|                                     <file>target/cfg/ru.entaxy.esb.connector.1c.soap.passive.cfg</file> | ||||
|                                     <type>cfg</type> | ||||
|                                     <classifier>ru.entaxy.esb.connector.1c.soap.passive</classifier> | ||||
|                                 </artifact> | ||||
|                                 <artifact> | ||||
|                                     <file>target/cfg/ru.entaxy.esb.connector.1c.support.cfg</file> | ||||
|                                     <type>cfg</type> | ||||
|                                     <classifier>ru.entaxy.esb.connector.1c.support</classifier> | ||||
|                                 </artifact> | ||||
|                                 <artifact> | ||||
|                                     <file>target/cfg/ru.entaxy.esb.system.basic_auth.cfg</file> | ||||
|                                     <type>cfg</type> | ||||
|                                     <classifier>ru.entaxy.esb.system.basic_auth</classifier> | ||||
|                                 </artifact> | ||||
|                                 <artifact> | ||||
|                                     <file>target/cfg/ru.entaxy.esb.system.basic_auth.htpasswd.cfg</file> | ||||
|                                     <type>cfg</type> | ||||
|                                     <classifier>ru.entaxy.esb.system.basic_auth.htpasswd</classifier> | ||||
|                                 </artifact> | ||||
|                                 <artifact> | ||||
|                                     <file>target/cfg/ru.entaxy.esb.system.event.rest.cfg</file> | ||||
|                                     <type>cfg</type> | ||||
|                                     <classifier>ru.entaxy.esb.system.event.rest</classifier> | ||||
|                                 </artifact> | ||||
|                                 <artifact> | ||||
|                                     <file>target/cfg/ru.entaxy.esb.system.event.handler.cfg</file> | ||||
|                                     <type>cfg</type> | ||||
|                                     <classifier>ru.entaxy.esb.system.event.handler</classifier> | ||||
|                                 </artifact> | ||||
|                                 <artifact> | ||||
|                                     <file>target/cfg/org.ops4j.datasource-entaxy.esb.cache.cfg</file> | ||||
|                                     <type>cfg</type> | ||||
|                                     <classifier>datasource-cache</classifier> | ||||
|                                 </artifact> | ||||
|                                 <artifact> | ||||
|                                     <file>target/cfg/org.ops4j.datasource-entaxy.esb.storage.cfg</file> | ||||
|                                     <type>cfg</type> | ||||
|                                     <classifier>datasource-storage</classifier> | ||||
|                                 </artifact> | ||||
|                                 <artifact> | ||||
|                                     <file>target/cfg/ru.entaxy.esb.deployer.nexus.cfg</file> | ||||
|                                     <type>cfg</type> | ||||
|                                     <classifier>ru.entaxy.esb.deployer.nexus</classifier> | ||||
|                                 </artifact> | ||||
|                                 <artifact> | ||||
|                                     <file>target/cfg/ru.entaxy.esb.deployer.cellar.cfg</file> | ||||
|                                     <type>cfg</type> | ||||
|                                     <classifier>ru.entaxy.esb.deployer.cellar</classifier> | ||||
|                                 </artifact> | ||||
|                                 <artifact> | ||||
|                                     <file>target/script/install.karaf</file> | ||||
|                                     <type>script</type> | ||||
|                                     <classifier>install</classifier> | ||||
|                                 </artifact> | ||||
|                                 <artifact> | ||||
|                                     <file>target/cfg/ru.entaxy.esb.error.cfg</file> | ||||
|                                     <type>cfg</type> | ||||
|                                     <classifier>ru.entaxy.esb.error</classifier> | ||||
|                                 </artifact> | ||||
|                                 <artifact> | ||||
|                                     <file>target/cfg/ru.entaxy.esb.error.code.cfg</file> | ||||
|                                     <type>cfg</type> | ||||
|                                     <classifier>ru.entaxy.esb.error.code</classifier> | ||||
|                                 </artifact> | ||||
|                                 <artifact> | ||||
|                                     <file>target/cfg/ru.entaxy.esb.error.text.cfg</file> | ||||
|                                     <type>cfg</type> | ||||
|                                     <classifier>ru.entaxy.esb.error.text</classifier> | ||||
|                                 </artifact> | ||||
|                                 <artifact> | ||||
|                                     <file>target/cfg/ru.entaxy.esb.deployer.file.system.cfg</file> | ||||
|                                     <type>cfg</type> | ||||
|                                     <classifier>ru.entaxy.esb.deployer.file.system</classifier> | ||||
|                                 </artifact> | ||||
|                                 <artifact> | ||||
|                                     <file>target/cfg/ru.entaxy.esb.system.schema.cfg</file> | ||||
|                                     <type>cfg</type> | ||||
|                                     <classifier>ru.entaxy.esb.system.schema</classifier> | ||||
|                                 </artifact> | ||||
|                                 <artifact> | ||||
|                                     <file>target/cfg/ru.entaxy.esb.system.management.cfg</file> | ||||
|                                     <type>cfg</type> | ||||
|                                     <classifier>ru.entaxy.esb.system.management</classifier> | ||||
|                                 </artifact> | ||||
|                                 <artifact> | ||||
|                                     <file>target/cfg/jre.properties</file> | ||||
|                                     <type>properties</type> | ||||
|                                     <classifier>jre</classifier> | ||||
|                                 </artifact> | ||||
|                             </artifacts> | ||||
|                         </configuration> | ||||
|                     </execution> | ||||
|                 </executions> | ||||
|             </plugin> | ||||
|         </plugins> | ||||
|     </build> | ||||
|  | ||||
| </project> | ||||
							
								
								
									
										726
									
								
								features/src/main/cfg/jre.properties
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,726 @@ | ||||
| ### | ||||
| # ~~~~~~licensing~~~~~~ | ||||
| # karaf-features | ||||
| # ========== | ||||
| # Copyright (C) 2020 - 2021 EmDev LLC | ||||
| # ========== | ||||
| # Licensed 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. | ||||
| # ~~~~~~/licensing~~~~~~ | ||||
| ### | ||||
| # | ||||
| # 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} | ||||
							
								
								
									
										87
									
								
								features/src/main/cfg/org.apache.karaf.cellar.groups.cfg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,87 @@ | ||||
| ### | ||||
| # ~~~~~~licensing~~~~~~ | ||||
| # karaf-features | ||||
| # ========== | ||||
| # Copyright (C) 2020 - 2021 EmDev LLC | ||||
| # ========== | ||||
| # Licensed 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. | ||||
| # ~~~~~~/licensing~~~~~~ | ||||
| ### | ||||
| # | ||||
| # 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=cluster | ||||
| default.config.sync=disabled | ||||
| default.feature.sync=cluster | ||||
| default.obr.urls.sync=cluster | ||||
| default.balanced.servlet.sync=cluster | ||||
|  | ||||
| default.event.blacklist.inbound = none | ||||
| default.event.blacklist.outbound = none | ||||
| default.event.whitelist.inbound = subscription | ||||
| default.event.whitelist.outbound = subscription | ||||
| @@ -0,0 +1,29 @@ | ||||
| ### | ||||
| # ~~~~~~licensing~~~~~~ | ||||
| # karaf-features | ||||
| # ========== | ||||
| # Copyright (C) 2020 - 2021 EmDev LLC | ||||
| # ========== | ||||
| # Licensed 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. | ||||
| # ~~~~~~/licensing~~~~~~ | ||||
| ### | ||||
| dataSourceName=entaxy.esb.cache | ||||
| osgi.jdbc.driver.name=PostgreSQL JDBC Driver | ||||
| serverName=localhost | ||||
| portNumber=5432 | ||||
| databaseName=cache | ||||
| user=entaxy | ||||
| password=entaxy | ||||
| pool=dbcp2 | ||||
| xa=true | ||||
| jdbc.pool.maxTotal=100 | ||||
| @@ -0,0 +1,29 @@ | ||||
| ### | ||||
| # ~~~~~~licensing~~~~~~ | ||||
| # karaf-features | ||||
| # ========== | ||||
| # Copyright (C) 2020 - 2021 EmDev LLC | ||||
| # ========== | ||||
| # Licensed 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. | ||||
| # ~~~~~~/licensing~~~~~~ | ||||
| ### | ||||
| dataSourceName=entaxy.esb.storage | ||||
| osgi.jdbc.driver.name=PostgreSQL JDBC Driver | ||||
| serverName=localhost | ||||
| portNumber=5432 | ||||
| databaseName=esb_entaxy | ||||
| user=entaxy | ||||
| password=entaxy | ||||
| pool=dbcp2 | ||||
| xa=true | ||||
| jdbc.pool.maxTotal=100 | ||||
							
								
								
									
										42
									
								
								features/src/main/cfg/ru.entaxy.esb.cfg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,42 @@ | ||||
| ### | ||||
| # ~~~~~~licensing~~~~~~ | ||||
| # karaf-features | ||||
| # ========== | ||||
| # Copyright (C) 2020 - 2021 EmDev LLC | ||||
| # ========== | ||||
| # Licensed 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. | ||||
| # ~~~~~~/licensing~~~~~~ | ||||
| ### | ||||
| # адреса кластера брокеров сообщений, задаются: | ||||
| # если 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://localhost: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 | ||||
|  | ||||
| # восстановление профилей, коннекторов и других созданных пользователем блюпринтов с помощью базы данных | ||||
| is.restore.from.db=true | ||||
| @@ -0,0 +1,27 @@ | ||||
| ### | ||||
| # ~~~~~~licensing~~~~~~ | ||||
| # karaf-features | ||||
| # ========== | ||||
| # Copyright (C) 2020 - 2021 EmDev LLC | ||||
| # ========== | ||||
| # Licensed 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. | ||||
| # ~~~~~~/licensing~~~~~~ | ||||
| ### | ||||
| # адрес service-soap, будет формироваться host/cxf + passive.endpoint.address, | ||||
| # по умолчанию passive.endpoint.address=/service | ||||
| passive.endpoint.address=/service | ||||
| # включение кастомной валидации soap сообщений по wsdl | ||||
| passive.endpoint.validation=true | ||||
| # название системы, в которую будут отправляться сообщения, если не был выставлен destination | ||||
| passive.error.system.name=error | ||||
|  | ||||
| @@ -0,0 +1,24 @@ | ||||
| ### | ||||
| # ~~~~~~licensing~~~~~~ | ||||
| # karaf-features | ||||
| # ========== | ||||
| # Copyright (C) 2020 - 2021 EmDev LLC | ||||
| # ========== | ||||
| # Licensed 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. | ||||
| # ~~~~~~/licensing~~~~~~ | ||||
| ### | ||||
| # адрес soap-connector, будет формироваться host/cxf + passive.endpoint.address, | ||||
| # по умолчанию passive.endpoint.address=/exchange | ||||
| passive.endpoint.address=/exchange | ||||
| # включение кастомной валидации soap сообщений по wsdl | ||||
| passive.endpoint.validation=true | ||||
							
								
								
									
										47
									
								
								features/src/main/cfg/ru.entaxy.esb.connector.1c.support.cfg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,47 @@ | ||||
| ### | ||||
| # ~~~~~~licensing~~~~~~ | ||||
| # karaf-features | ||||
| # ========== | ||||
| # Copyright (C) 2020 - 2021 EmDev LLC | ||||
| # ========== | ||||
| # Licensed 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. | ||||
| # ~~~~~~/licensing~~~~~~ | ||||
| ### | ||||
| # максимальное количество попыток отправить сообщение в очередь из агрегатора | ||||
| redelivery.maximumRedeliveries=2 | ||||
| # очередь для отправки сообщений, которые не смог отправить агрегатор в destination | ||||
| redelivery.deadLetterQueue=revert.message.dead | ||||
|  | ||||
| # задается в mc, значение по умолчанию 10 минут | ||||
| acknowledge.completion.timeout=600000 | ||||
| # настройка способа агрегирования через игнайт или бд | ||||
| # Важно! следить за тем чтобы данный параметр был одинаковым во всем кластере | ||||
| # варианты - igniteAggregationRepository, jdbcAggregationRepository (для всех бд кроме postgres), postgresAggregationRepository | ||||
| # по умолчанию - jdbcAggregationRepository | ||||
| acknowledge.aggregation.repository=jdbcAggregationRepository | ||||
|  | ||||
| # Поднимается endpoint /active_connector_test_consumer | ||||
| # при выставленной настройке mode.dev=true | ||||
| active.mode.dev=false | ||||
| active.username=Администратор | ||||
| active.password= | ||||
|  | ||||
| # валидация сообщения по wsdl | ||||
| active.validation=false | ||||
|  | ||||
| # uuid шины, для отправки в активном режиме в систему от имени шины | ||||
| bus.id=FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF | ||||
| get.destination= | ||||
|  | ||||
| # параметр для тестирования активного коннектора | ||||
| test.empty.rate=20 | ||||
							
								
								
									
										21
									
								
								features/src/main/cfg/ru.entaxy.esb.deployer.cellar.cfg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,21 @@ | ||||
| ### | ||||
| # ~~~~~~licensing~~~~~~ | ||||
| # karaf-features | ||||
| # ========== | ||||
| # Copyright (C) 2020 - 2021 EmDev LLC | ||||
| # ========== | ||||
| # Licensed 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. | ||||
| # ~~~~~~/licensing~~~~~~ | ||||
| ### | ||||
| # название группы cellar, которая прописывается в org.apache.karaf.cellar.groups.cfg, org.apache.karaf.cellar.node.cfg | ||||
| cellar.group = default | ||||
							
								
								
									
										21
									
								
								features/src/main/cfg/ru.entaxy.esb.deployer.file.system.cfg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,21 @@ | ||||
| ### | ||||
| # ~~~~~~licensing~~~~~~ | ||||
| # karaf-features | ||||
| # ========== | ||||
| # Copyright (C) 2020 - 2021 EmDev LLC | ||||
| # ========== | ||||
| # Licensed 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. | ||||
| # ~~~~~~/licensing~~~~~~ | ||||
| ### | ||||
| #Корневая папка репозитория | ||||
| folder.root=entaxy/bundle-repository | ||||
							
								
								
									
										31
									
								
								features/src/main/cfg/ru.entaxy.esb.deployer.nexus.cfg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,31 @@ | ||||
| ### | ||||
| # ~~~~~~licensing~~~~~~ | ||||
| # karaf-features | ||||
| # ========== | ||||
| # Copyright (C) 2020 - 2021 EmDev LLC | ||||
| # ========== | ||||
| # Licensed 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. | ||||
| # ~~~~~~/licensing~~~~~~ | ||||
| ### | ||||
| # все смены адреса расположения nexus и изменение наименования репозитория, необходимо фиксировать в файле | ||||
| # org.ops4j.pax.url.mvn.cfg параметр: org.ops4j.pax.url.mvn.repositories | ||||
|  | ||||
|  | ||||
| # url расположения nexus | ||||
| nexus.deployer.url=http://localhost:8081 | ||||
| # название репозитория в nexus, необходимого для конфигурирования шины из вне(создание профилей, коннекторов и т д) | ||||
| nexus.deployer.repository=entaxy | ||||
| # логин для авторизации в nexus | ||||
| nexus.deployer.username=entaxy | ||||
| # пароль для авторизации в nexus | ||||
| nexus.deployer.password=entaxy | ||||
							
								
								
									
										40
									
								
								features/src/main/cfg/ru.entaxy.esb.error.cfg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,40 @@ | ||||
| ### | ||||
| # ~~~~~~licensing~~~~~~ | ||||
| # karaf-features | ||||
| # ========== | ||||
| # Copyright (C) 2020 - 2021 EmDev LLC | ||||
| # ========== | ||||
| # Licensed 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. | ||||
| # ~~~~~~/licensing~~~~~~ | ||||
| ### | ||||
| # асинхронный пакет с ошибкой отправляется от имени: | ||||
| # false - системы, вызвавшей ошибку в шине | ||||
| # true  - шины (система с идентификатором "-1") | ||||
| error.bus.always_at_source=false | ||||
|  | ||||
| # асинхронный пакет с ошибкой в поле description содержит: | ||||
| # false - сообщение из маппинга в файле ru.entaxy.esb.error.text.cfg | ||||
| # true  - содержит сообщение, сохранённое в исключении | ||||
| error.description.exception_message=true | ||||
|  | ||||
| # имя очереди для отправки пакета с ошибкой при недоступности системы, указанной в свойстве error.system.name | ||||
| error.queue.name=error | ||||
|  | ||||
| # имя системы для отправки пакета с ошибкой | ||||
| error.system.name=error | ||||
|  | ||||
| # true - включает в пакет с ошибкой весь stacktrace исключения | ||||
| error.stacktrace.show=true | ||||
|  | ||||
| # свойство автоматического запуска тестового маршрута, который при старте модуля бросает исключение java.lang.IllegalArgumentException: Test exception thrown | ||||
| error.test-route.startup=false | ||||
							
								
								
									
										41
									
								
								features/src/main/cfg/ru.entaxy.esb.error.code.cfg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,41 @@ | ||||
| ### | ||||
| # ~~~~~~licensing~~~~~~ | ||||
| # karaf-features | ||||
| # ========== | ||||
| # Copyright (C) 2020 - 2021 EmDev LLC | ||||
| # ========== | ||||
| # Licensed 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. | ||||
| # ~~~~~~/licensing~~~~~~ | ||||
| ### | ||||
| # Справочник содержит соответствие имён классов исключений и http кодов ошибок. | ||||
| # И будет наполняться по мере использования шины в разных ситуациях. | ||||
| # Для исключения, имя которого ещё не указано в этом файле, | ||||
| # будет возвращаться http код 520 (Unknown Error). | ||||
| # согласование кодов ошибок происходит в https://docs.google.com/spreadsheets/d/1rvRyiSN-khuuRSJenwP5g7Q-ilbctOGCFgDfdM-abEk/edit#gid=1202937725 | ||||
| DefaultException=520 | ||||
|  | ||||
| com.ctc.wstx.exc.WstxParsingException=400 | ||||
|  | ||||
| java.lang.NullPointerException=418 | ||||
| java.security.AccessControlException=403 | ||||
|  | ||||
| org.apache.cxf.interceptor.security.AuthenticationException=401 | ||||
| javax.ws.rs.ForbiddenException=403 | ||||
|  | ||||
| org.apache.camel.language.bean.RuntimeBeanExpressionException=500 | ||||
|  | ||||
| ConnectorNotFound=424 | ||||
| ru.entaxy.esb.system.common.exception.DefaultException=520 | ||||
| ProfileNotFound=424 | ||||
|  | ||||
| java.io.FileNotFoundException=404 | ||||
							
								
								
									
										33
									
								
								features/src/main/cfg/ru.entaxy.esb.error.text.cfg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,33 @@ | ||||
| ### | ||||
| # ~~~~~~licensing~~~~~~ | ||||
| # karaf-features | ||||
| # ========== | ||||
| # Copyright (C) 2020 - 2021 EmDev LLC | ||||
| # ========== | ||||
| # Licensed 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. | ||||
| # ~~~~~~/licensing~~~~~~ | ||||
| ### | ||||
| # 1xx: Informational | ||||
| # 2xx: Success | ||||
| 200=OK | ||||
|  | ||||
| # 3xx: Redirection | ||||
| # 4xx: Client Error | ||||
| 400=Bad Request | ||||
| 401=Unauthorized | ||||
| 403=Forbidden | ||||
| 418=I’m a teapot | ||||
| 424=Failed Dependency | ||||
|  | ||||
| # 5xx: Server Error | ||||
| 520=Unknown Error | ||||
							
								
								
									
										31
									
								
								features/src/main/cfg/ru.entaxy.esb.system.basic_auth.cfg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,31 @@ | ||||
| ### | ||||
| # ~~~~~~licensing~~~~~~ | ||||
| # karaf-features | ||||
| # ========== | ||||
| # Copyright (C) 2020 - 2021 EmDev LLC | ||||
| # ========== | ||||
| # Licensed 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. | ||||
| # ~~~~~~/licensing~~~~~~ | ||||
| ### | ||||
| # адрес basic-auth, будет формироваться host/cxf + basic_auth_endpoint.address, | ||||
| # по умолчанию basic_auth_endpoint.address=/basic-auth-management | ||||
| basic_auth_endpoint.address=/basic-auth-management | ||||
|  | ||||
| #worked and tested on nginX MD5 and SHA-1(recommended) | ||||
| еncryption.algorithm=SHA-1 | ||||
| #salt for encryption 1 to 8 characters ([\\.\\/a-zA-Z0-9]{1,8}) | ||||
| #when salt changed all password need to remake! | ||||
| еncryption.salt=kDfq0qZJ | ||||
|  | ||||
| #Встроенная аутентификация | ||||
| internal.authentication.enabled=true | ||||
| @@ -0,0 +1,30 @@ | ||||
| ### | ||||
| # ~~~~~~licensing~~~~~~ | ||||
| # karaf-features | ||||
| # ========== | ||||
| # Copyright (C) 2020 - 2021 EmDev LLC | ||||
| # ========== | ||||
| # Licensed 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. | ||||
| # ~~~~~~/licensing~~~~~~ | ||||
| ### | ||||
| #наименование файла htpasswd на сервере karaf | ||||
| htpasswd.file.name=htpasswd | ||||
| #путь сохранения файла htpasswd на сервере karaf, | ||||
| #при использовании кластера karaf-ов сохранять файл требуется в папку доступную на всех серверах, входящих в кластер | ||||
| htpasswd.file.directory=entaxy/security | ||||
| #наименование файла для сохранения контрольной суммы файла htpasswd | ||||
| htpasswd.file.checksum=MD5.md5 | ||||
|  | ||||
| htpasswd.service.host=http://0.0.0.0 | ||||
| htpasswd.service.port=9091 | ||||
| htpasswd.service.root.path=/htpasswd | ||||
							
								
								
									
										28
									
								
								features/src/main/cfg/ru.entaxy.esb.system.event.handler.cfg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,28 @@ | ||||
| ### | ||||
| # ~~~~~~licensing~~~~~~ | ||||
| # karaf-features | ||||
| # ========== | ||||
| # Copyright (C) 2020 - 2021 EmDev LLC | ||||
| # ========== | ||||
| # Licensed 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. | ||||
| # ~~~~~~/licensing~~~~~~ | ||||
| ### | ||||
| # максимальное колчичество попыток отправить сообщение в очередь | ||||
| # почитать подробнее можно в https://camel.apache.org/components/latest/eips/dead-letter-channel.html#deadLetterChannel-Redelivery | ||||
| redelivery.maximumRedeliveries=-1 | ||||
| # время между попытками отправить сообщение в очередь | ||||
| redelivery.redeliveryDelay=5000 | ||||
|  | ||||
| #cron - every 00:00:00, | ||||
| #cron expression use "+" separator for quartz in camel | ||||
| quirtz.job.clean.cron=0+0+0+*+*+?+* | ||||
							
								
								
									
										28
									
								
								features/src/main/cfg/ru.entaxy.esb.system.event.rest.cfg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,28 @@ | ||||
| ### | ||||
| # ~~~~~~licensing~~~~~~ | ||||
| # karaf-features | ||||
| # ========== | ||||
| # Copyright (C) 2020 - 2021 EmDev LLC | ||||
| # ========== | ||||
| # Licensed 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. | ||||
| # ~~~~~~/licensing~~~~~~ | ||||
| ### | ||||
| service.host=http://0.0.0.0 | ||||
|  | ||||
| service.port.management=9090 | ||||
| #with changing path you must edit according records in permission table for accounts | ||||
| service.root.path.management=/topic-management | ||||
| 			 | ||||
| service.port.subscription=9092 | ||||
| #with changing path you must edit according records in permission table for accounts | ||||
| service.root.path.subscription=/topic-subscription | ||||