1.6. WildFly
WildFly является кроссплатформенным сервером приложений, позволяющий добавлять и удалять подсистемы и проводить масштабирование развёрнутых на нём приложений. Важно, что WildFly основан на Java, поэтому распаковка и настройка WildFly должна проводиться последней.
Установка WildFly происходит следующим путём:
«curl -L -O https://github.com/wildfly/wildfly/releases/download/27.0.1.Final/wildfly-29.0.1.Final.zip». Скачать необходимо последнюю стабильную финальную версию (в примере кода это версия 29.0.1.Final).
2. Разархивировать в удобной для работы директиве. Эта директива должна быть доступна для пользователя, который будет заниматься администрированием системы dcm4chee-arc-light.
3. Проверить корректность работы WildFly. Запустить в командной строке «%WILDFLY_HOME%/bin/standalone.bat», после этого открыть в браузере «localhost:8080». Если установка была корректна, будет отображаться стартовая страница WildFly.
Настройка WildFly происходит следующим путём:
1. Произвести перенос всех файлов конфигурации любым удобным способом из директивы «%DCM4CHEE_ARC%/configuration» в директиву «%WILDFLY_HOME%/Standalone/configuration». Проверьте наличие следующих файлов в итоговой директиве: в папке «dcm4chee-arc» файл «ldap.properties», в папке «keystores» файлы «key.p12» и «cacerts.p12».
2. В директиве «%WILDFLY_HOME%/Standalone/configuration» в папке «dcm4chee-arc» откройте файл «ldap.properties». Настройте данные в соответствии со своим LDAP подключением. В нашем примере были изменены:
1) В provider.url изменён порт с 389 на 10389
2) в principal значение было задано аналогично значению «Bind DN or user» в «authentication- разделе» Apache Direct Studio
Пример можно видеть на рисунке ниже.

3. Если версия вашего WildFly выше 5.24, то в директиве «%WILDFLY_HOME%/standalone/configuration» создаём копию файла «standalone.xml» как файл «dcm4chee-arc.xml». Если такой файл уже существует, необходимо его заменить. Если «standalone.xml» не существует, то создаём пустые файлы с аналогичным именем и расширением. Если версия WildFly ниже 5.24, то аналогично перенести файл «standalone-full.xml».
4. В каталог «%WILDFLY_HOME%» разархивировать файл «%DCM4CHEE_ARC%/jboss-modules/dcm4che-jboss-modules-5.x.x.zip», где х - это число релиза. Это установка модуля JBoss с библиотеками DCM4CHE, Keycloak admin client и Apache commons.
5. Установите библиотеки «JAI Image IO 1.2» как модуль для JBoss. В каталог %WILDFLY_HOME% разархивировать «%DCM4CHEE_ARC%/jboss-modules/jai_imageio-jboss-modules-1.2-pre-dr-b04.zip».
6. Установить «jclouds 2.2.1» библиотеки как JBoss модуль. В каталог «%WILDFLY_HOME%» разархивировать «%DCM4CHEE_ARC%/jboss-modules/jclouds-jboss-modules-2.2.1-noguava.zip»
7. Если есть, то установить «esc-object-client 3.0.0» библиотеки как JBoss модуль, если он имелся в скаченной dcm4chee-arc-light. В каталог «%WILDFLY_HOME%» разархивировать «%DCM4CHEE_ARC%/jboss-modules/ecs-object-client-jboss-modules-3.0.0.zip».
8. Если версия вашего WildFly выше 5.22.4, скачайте клиент-адаптер для WildFly от Keycloack и разархивируйте его в «%WILDFLY_HOME%». Скачать адаптор можно с гитхаба https://github.com/keycloak/keycloak/releases/download/15.0.0/keycloak-oidc-wildfly-adapter-15.0.0.zip
9. Установить «JDBC Driver» для базы данных. В «%WILDFLY_HOME%» разархивировать «%DCM4CHEE_ARC%/jboss-modules/jdbc-jboss-modules-psql-42.6.0.zip». Номер модулей отличается в зависимости от вашей базы.
10. Запустите WildFly. К примеру, через cmd -- «%WILDFLY_HOME%\bin\standalone.bat -c dcm4chee-arc.xml» (для Windows). Не закрывая эту командную строку откройте дополнительно ещё одну командную строку, выполните команду «%WILDFLY_HOME%\bin\jboss-cli.bat -c» (для Windows). В появившейся строке «[standalone@localhost:9990 /]» прописать:
1. «/subsystem=datasources/jdbc-driver=<driver-name>:add(driver-name=<driver-name>,driver-module-name=<module-name>)», где
<driver-name> - любое имя. В примере используем «postgresql»
<module-name> - обязательно должен совпадать с прописанным в «module.xml». В примере используем «org.postgresql».
В примере получили строку: «/subsystem=datasources/jdbc-driver=postgresql:add(driver-name=postgresql,driver-module-name=org.postgresql)»
2. Прописываем: «data-source add --name=PacsDS --driver-name=<driver-name> --connection-url=<jdbc-url> --jndi-name=java:/PacsDS --user-name=<user-name> --password=<user-password>», где
<driver-name> берётся из прошлого. В примере используем « postgresql»
<jdbc-url> - зависит от JDBC Driver. У нас PostgreSQL, поэтому «jdbc:postgresql://<host>:5432/<database-name>», где надо указать Хост (localhost) и имя базы (doctordatabase)
<user-name> - Пользователь. В примере используем «doctoruser»
<user-password> - Пароль от созданного в PostgreSQL пользователя. В примере используем «DOC»
В примере получили строку: «data-source add --name=PacsDS --driver-name=postgresql --connection-url=jdbc:postgresql://localhost:5432/doctordatabase --jndi-name=java:/PacsDS --user-name=doctoruser --password=DOC»
3. Если ваша версия WildFly ниже 5.23.3, то добавьте JMS используя CLI команду:
«%WILDFLY_HOME%\bin\jboss-cli.sh -c --file=%DCM4CHEE_ARC%\cli\add-jms\queues.cli»
Или через прописывание каждой команды вручную в том же окне командной строки:
1) [standalone@localhost:9990 /] jams-queue add --queue-address=StgCmtSCP --entries=java:/jms/queue/StgCmtSCP
2) [standalone@localhost:9990 /] jams-queue add --queue-address=StgCmtSCU --entries=java:/jms/queue/StgCmtSCU
3) [standalone@localhost:9990 /] jams-queue add --queue-address=MPPSSCU --entries=java:/jms/queue/MPPSSCU
4) [standalone@localhost:9990 /] jams-queue add --queue-address=IANSCU --entries=java:/jms/queue/IANSCU
5) [standalone@localhost:9990 /] jams-queue add --queue-address=Export1 --entries=java:/jms/queue/Export1
6) [standalone@localhost:9990 /] jams-queue add --queue-address=Export2 --entries=java:/jms/queue/Export2
7) [standalone@localhost:9990 /] jams-queue add --queue-address=Export3 --entries=java:/jms/queue/Export3
8) [standalone@localhost:9990 /] jams-queue add --queue-address=HL7Send --entries=java:/jms/queue/HL7Send
9) [standalone@localhost:9990 /] jams-queue add --queue-address=RSClient --entries=java:/jms/queue/RSClient
10) [standalone@localhost:9990 /] jams-queue add --queue-address=DiffTasks --entries=java:/jms/queue/DiffTasks
11) [standalone@localhost:9990 /] jams-queue add --queue-address=Export4 --entries=java:/jms/queue/Export4
12) [standalone@localhost:9990 /] jams-queue add --queue-address=Export5 --entries=java:/jms/queue/Export5
13) [standalone@localhost:9990 /] jams-queue add --queue-address=Export6 --entries=java:/jms/queue/Export6
14) [standalone@localhost:9990 /] jams-queue add --queue-address=Export7 --entries=java:/jms/queue/Export7
15) [standalone@localhost:9990 /] jams-queue add --queue-address=Export8 --entries=java:/jms/queue/Export8
16) [standalone@localhost:9990 /] jams-queue add --queue-address=Export9 --entries=java:/jms/queue/Export9
17) [standalone@localhost:9990 /] jams-queue add --queue-address=Export10 --entries=java:/jms/queue/Export10
18) [standalone@localhost:9990 /] jams-queue add --queue-address=StgVerTasks --entries=java:/jms/queue/StgVerTasks
19) [standalone@localhost:9990 /] jams-queue add --queue-address=Rejection --entries=java:/jms/queue/Rejection
20) [standalone@localhost:9890 /] jams-queue add --queue-address=Retrieve1 --entries=java:/jms/queue/Retrieve1
21) [standalone@localhost:9890 /] jams-queue add --queue-address=Retrieve2 --entries=java:/jms/queue/Retrieve2
22) [standalone@localhost:9890 /] jams-queue add --queue-address=Retrieve3 --entries=java:/jms/queue/Retrieve3
23) [standalone@localhost:9890 /] jams-queue add --queue-address=Retrieve4 --entries=java:/jms/queue/Retrieve4
24) [standalone@localhost:9890 /] jams-queue add --queue-address=Retrieve5 --entries=java:/jms/queue/Retrieve5
25) [standalone@localhost:9890 /] jams-queue add --queue-address=Retrieve6 --entries=java:/jms/queue/Retrieve6
26) [standalone@localhost:9890 /] jams-queue add --queue-address=Retrieve7 --entries=java:/jms/queue/Retrieve7
27) [standalone@localhost:9890 /] jams-queue add --queue-address=Retrieve8 --entries=java:/jms/queue/Retrieve8
28) [standalone@localhost:9890 /] jams-queue add --queue-address=Retrieve9 --entries=java:/jms/queue/Retrieve9
29) [standalone@localhost:9890 /] jams-queue add --queue-address=Retrieve10 --entries=java:/jms/queue/Retrieve10
30) [standalone@localhost:9890 /] jams-queue add --queue-address=Retrieve11 --entries=java:/jms/queue/Retrieve11
31) [standalone@localhost:9890 /] jams-queue add --queue-address=Retrieve12 --entries=java:/jms/queue/Retrieve12
32) [standalone@localhost:9890 /] jams-queue add --queue-address=Retrieve13 --entries=java:/jms/queue/Retrieve13
4. Вне зависимости от вашей версии WildFly задайте значение атрибута «spec-descriptor-property-replacement» подсистемы «ее» на значение true и подправить «managed-executor-services» и «managed-scheduled-executor-service» при помощи CLI команды «$WILDFLY_HOME/bin/jboss-cli.sh -c --file=$DCM4CHEE_ARC/cli/adjust-managed-executor.cli».
Или вручную прописав в командной строке кода:
1) [standalone@localhost:9990 /] /subsystem=ee:write-attribute(name=spec-descriptor-property-replacement,value=true)
2) [standalone@localhost:9990 /] /subsystem=ee/managed-executor-service=default:undefine-attribute(name=hung-task-threshold)
3) [standalone@localhost:9990 /] /subsystem=ee/managed-executor-service=default:write-attribute(name=long-running-tasks,value=true)
4) [standalone@localhost:9990 /] /subsystem=ee/managed-executor-service=default:write-attribute(name=core-threads,value=2)
5) [standalone@localhost:9990 /] /subsystem=ee/managed-executor-service=default:write-attribute(name=max-threads,value=100)
6) [standalone@localhost:9990 /] /subsystem=ee/managed-executor-service=default:write-attribute(name=queue-length,value=0)
7) [standalone@localhost:9990 /] /subsystem=ee/managed-scheduled-executor-service=default:undefine-attribute(name=hung-task-threshold)
8) [standalone@localhost:9990 /] /subsystem=ee/managed-scheduled-executor-service=default:write-attribute(name=long-running-tasks,value=true)
5. Перезапустите WildFly в той же командной строке при помощи «[standalone@localhost:9990 /] :reload».
6. Для нашего примера, если вы не меняли никаких значений по умолчанию, этот шаг делать не надо. По умолчанию DCM4CHEE Архив воспринимает как имя устройство «dcm4chee-arc» и будет искать его. Если значение было изменено, то пропишите команду:
«[standalone@localhost:9990 /] /system-property=dcm4chee-arc.DeviceName:add(value=<device-name>)», где <device-name> - назначенное имя устройства.
7. Поменяйте размер максимальной передачи данных и перезагрузите WildFly, чтобы настройки применились, при помощи команды:
1) [standalone@localhost:9990 /] /subsystem=undertow/server=default-server/http-listener=default:write-attribute(name=max-post-size,value=10000000000)
2) [standalone@localhost:9990 /] /subsystem=undertow/server=default-server/https-listener=https:write-attribute(name=max-post-size,value=10000000000)
3) [standalone@localhost:9990 /] :reload
11. Если ваша версия WildFly ниже 5.23.2 версии включительно, то необходимо развернуть dcm4chee через JBOS CLI.
«[standalone@localhost:9990 /] deploy $DCM4CHEE_ARC/deploy/dcm4chee-arc-ear-5.23.2-psql.ear»
Если всё корректно, то будет выведено следующее:
«2022-06-21 15:16:23,128 INFO [org.jboss.as.server.deployment] (MSC service thread 1-2) WFLYSRV0027: Starting deployment of "dcm4chee-arc-ear-5.23.2-psql.ear" (runtime-name: "dcm4chee-arc-ear-5.23.2-psql.ear"):
2022-06-21 15:16:32,426 INFO [org.dcm4che3.net.Connection] (EE-ManagedExecutorService-default-Thread-2) Start TCP Listener on /0.0.0.0:11112
2022-06-21 15:16:32,426 INFO [org.dcm4che3.net.Connection] (EE-ManagedExecutorService-default-Thread-1) Start TCP Listener on /0.0.0.0:2577
2022-06-21 15:16:32,664 INFO [org.dcm4che3.net.Connection] (EE-ManagedExecutorService-default-Thread-3) Start TCP Listener on /0.0.0.0:12575
2022-06-21 15:16:32,664 INFO [org.dcm4che3.net.Connection] (EE-ManagedExecutorService-default-Thread-4) Start TCP Listener on /0.0.0.0:2762
2022-06-21 15:16:32,928 INFO [org.jboss.as.server] (management-handler-thread - 1) WFLYSRV0010: Deployed "dcm4chee-arc-ear-5.23.2-psql.ear" (runtime-name : "dcm4chee-arc-ear-5.23.2-psql.ear")»
12. Если ваша версия WildFly выше 5.23.3, то UI и бэкэнд архивы независимы. Для развёртывания нужно скопировать файлы из каталога «%DCM4CHEE-ARC%\deploy», где %DCM4CHEE-ARC% это путь к установленному dcm4che.
Перенесите 2 файла с расширениями «.war» и «.ear». Перенос в каталог «%WildFly%\wildfly-29.0.1.Final\standalone\deployments», где %WildFly% это путь до корневого каталога WildFly. Благодаря этому развёртывание происходит автоматически.
Если будут проблемы с развёртыванием, то можно следить за состояниями в самой папке внутри WIldFLy - будут появляться доп. Файлы формата, который описывает состояние развёртки. Состояние расширения .deploeyd является корректно развёрнутым.
Если возникают неразрешимые проблемы с автоматической развёрткой, то придётся делать ручную развёртку, которую потом надо будет дописывать для bat-файлов, следующим образом:
LINUX:
«[standalone@localhost:9990 /] deploy $DCM4CHEE_ARC/deploy/dcm4chee-arc-ear-5.31.1-psql.ear
[standalone@localhost:9990 /] deploy $DCM4CHEE_ARC/deploy/dcm4chee-arc-ui2-5.31.1.war»
WINDOWS:
«deploy "%DCM4CHEE_ARC%\deploy\dcm4chee-arc-ear-5.31.1-psql.ear"»
Проверить, что UI доступно по http://localhost:8080/dcm4chee-arc/ui2
