Installation - dcm4che/dcm4chee-arc-light GitHub Wiki
For older releases go here
Content
- Requirements
- Download and extract binary distribution package
- Initialize Database
- Setup LDAP Server
- Import default configuration into LDAP Server
- Setup WildFly
- Java SE 17 or later - tested with OpenJDK
- Wildfly EE10 Distribution 41.0.0.Final
- Supported SQL Database:
- H2 embedded in Wildfly (Not for production use!)
- PostgreSQL 17.2
- MariaDB 10.6.8
- MySQL 8.0.29
- Firebird 3.0.10
- Oracle 11g
- DB2 10.5
- MS SQL Server (not yet tested!)
- Supported LDAP Servers:
- LDAP Browser: Apache Directory Studio 2.0.0-M17
DCM4CHEE Archive 5.x binary distributions for different databases can be obtained from Sourceforge. Extract (unzip) release package version as required.
Secured versions are provided for PostgreSQL, MySQL, SQLServer and Oracle.
Note: DCM4CHEE Archive 5.x does not provide SQL scripts and utilities to migrate database schema from DCM4CHEE Archive 2.x to DCM4CHEE Archive 5.x.
There is no need to initialize the database before starting Wildfly. But create tables and indexes using H2 Console before deploying the archive.
-
Create user with permission to create databases:
> sudo -u postgres createuser -U postgres -P -d <user-name> Enter password for new role: <user-password> Enter it again: <user-password> -
Create database:
> createdb -h localhost -U <user-name> <database-name> -
Create tables and indexes:
> psql -h localhost <database-name> <user-name> < $DCM4CHEE_ARC/sql/psql/create-psql.sql > psql -h localhost <database-name> <user-name> < $DCM4CHEE_ARC/sql/psql/create-fk-index.sql > psql -h localhost <database-name> <user-name> < $DCM4CHEE_ARC/sql/psql/create-case-insensitive-index.sql
-
create database user
mysql> CREATE USER 'USERNAME'@localhost IDENTIFIED BY 'PASSWORD'; -
Create database and grant access to user::
> mysql -u root -p<root-password> mysql> create database <database-name>; mysql> grant all on <database-name>.* to '<user-name>' identified by '<user-password>'; mysql> quit -
Create tables and indexes::
> mysql -u <user-name> -p<user-password> <database-name> < $DCM4CHEE_ARC/sql/mysql/create-mysql.sql
-
Create user
> gsec -user sysdba -password <sysdba-password> GSEC> add <user-name> -pw <user-password> GSEC> quit -
Define database name in configuration file
aliases.conf:<database-name> = <database-file-path> -
Create database, tables and indexes
> isql-fb Use CONNECT or CREATE DATABASE to specify a database SQL> create database 'localhost:<database-name>' pagesize 16384 CON> user '<user-name>' password '<user-password>'; SQL> in DCM4CHEE_ARC/sql/firebird/create-firebird.sql; SQL> exit;
-
Create database and grant authority to create tables to user (must match existing OS user)
> sudo su db2inst1 > db2 db2 => create database <database-name> pagesize 16 K db2 => connect to <database-name> db2 => grant createtab on database to user <user-name> db2 => terminate -
Create tables and indexes
> su <user-name> Password: <user-password> > db2 connect to <database-name> > db2 -t < $DCM4CHEE_ARC/sql/db2/create-db2.sql > db2 -t < $DCM4CHEE_ARC/sql/db2/create-fk-index.sql > db2 terminate
-
Connect to Oracle and create a new tablespace
$ sqlplus / as sysdba SQL> create bigfile tablespace <tablespace-name> datafile '<data-file-location>' size <size>; Tablespace created. -
Create a new user with privileges for the new tablespace
$ sqlplus / as sysdba SQL> create user <user-name> 2 identified by <user-password> 3 default tabelspace <tablespace-name> 4 quota unlimited on <tablespace-name> 5 quota 50M on system; User created. SQL> grant create session to <user-name>; SQL> grant create table to <user-name>; SQL> grant create any index to <user-name>; SQL> grant create sequence to <user-name>; SQL> exit -
Create tables and indexes
$ sqlplus <user-name>/<user-password> SQL> @$DCM4CHEE_ARC/sql/oracle/create-oracle.sql SQL> @$DCM4CHEE_ARC/sql/oracle/create-fk-index.sql SQL> @$DCM4CHEE_ARC/sql/oracle/create-case-insensitive-index.sql
Not yet tested
OpenLDAP binary distributions are available for most Linux distributions as well as for Windows.
Alternatively, configure OpenLDAP by
See also Converting old style slapd.conf file to cn=config format
-
Import LDAP schema files for OpenLDAP runtime configuration, using OpenLDAP CL utility
ldapadd, e.g.:> sudo ldapadd -Y EXTERNAL -H ldapi:/// -f $DCM4CHEE_ARC/ldap/slapd/dicom.ldif > sudo ldapadd -Y EXTERNAL -H ldapi:/// -f $DCM4CHEE_ARC/ldap/slapd/dcm4che.ldif > tr -d \\r < $DCM4CHEE_ARC/ldap/slapd/dcm4chee-archive.ldif | sudo ldapadd -Y EXTERNAL -H ldapi:/// > sudo ldapadd -Y EXTERNAL -H ldapi:/// -f $DCM4CHEE_ARC/ldap/slapd/dcm4chee-archive-ui.ldifThe conversion of line separators from
\r\nto\nfor importing$DCM4CHEE/ldap/slapd/dcm4chee-archive.ldifworkarounds a flaw in ldapadd distributed by Ubuntu concerning large content records.For use against docker images, use basic authentication and the password (secret by default), e.g.:
> ldapadd -xw secret -H ldap://localhost -D "cn=admin,dc=dcm4che,dc=org" -f $DCM4CHEE_ARC/ldap/slapd/dicom.ldif -
Directory Base DN and Root User DN can be modified by changing the values of attributes
olcSuffix: dc=nodomain olcRootDN: cn=admin,dc=nodomain olcRootPWof object
olcDatabase={1}mdb,cn=configby specifying the new values in a LDIF file (e.g.modify-baseDN.ldif)dn: olcDatabase={1}mdb,cn=config changetype: modify replace: olcSuffix olcSuffix: dc=dcm4che,dc=org - replace: olcRootDN olcRootDN: cn=admin,dc=dcm4che,dc=org - replace: olcRootPW olcRootPW: <{SSHA}xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx> -Note: In order to execute the commands on CentOS7 use dn: olcDatabase={2}mdb,cn=config instead of dn: olcDatabase={1}mdb,cn=config.
Note: Replace <{SSHA}xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx> by the hash generated by the command :
> sudo slappasswdand applying it using OpenLDAP CL utility ldapmodify, e.g.:
> sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f modify-baseDN.ldifAfter that you have to create the top element of the directory tree (dc=dcm4che,dc=org) and the object for the LDAP administrator account (cn=admin,dc=dcm4che,dc=org).
LDIF file
slapd_setup_basic.ldif:dn: dc=dcm4che,dc=org changetype: add objectClass: top objectClass: dcObject objectClass: organization o: Example Organisation name dc: dcm4che dn: cn=admin,dc=dcm4che,dc=org changetype: add objectClass: simpleSecurityObject objectClass: organizationalRole cn: admin description: LDAP administrator userPassword: {SSHA}xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxTo create these objects, you have to use the databases root account and to enter your LDAP admin password as specified during installation
> ldapmodify -x -W -D cn=admin,dc=dcm4che,dc=org -H ldapi:/// -f slapd_setup_basic.ldif
-
Copy LDAP schema files for OpenLDAP from DCM4CHEE Archive distribution to OpenLDAP schema configuration directory:
> cp $DCM4CHEE_ARC/ldap/schema/* /etc/openldap/schema/ [UNIX] > copy %DCM4CHEE_ARC%\ldap\schema\* \Program Files\OpenLDAP\schema\ [Windows] -
Add references to schema files in
slapd.conf, e.g.:include /etc/openldap/schema/core.schema include /etc/openldap/schema/dicom.schema include /etc/openldap/schema/dcm4che.schema include /etc/openldap/schema/dcm4chee-archive.schema include /etc/openldap/schema/dcm4chee-archive-ui.schema -
Directory Base DN and Root User DN are specified in
slapd.confbysuffix "dc=nodomain" rootdn "cn=admin,dc=nodomain" rootpw secretand may be modified to
suffix "dc=dcm4che,dc=org" rootdn "cn=admin,dc=dcm4che,dc=org" rootpw secret
-
Copy LDAP schema files for OpenDJ from DCM4CHEE Archive distribution to OpenDJ schema configuration directory:
> cp $DCM4CHEE_ARC/ldap/opendj/* $OPENDJ_HOME/config/schema/ [UNIX] > copy %DCM4CHEE_ARC%\ldap\opendj\* %OPENDJ_HOME%\config\schema\ [Windows] -
Run OpenDJ GUI based setup utility
> $OPENDJ_HOME/setupLog the values chosen for
- LDAP Listener port (1389)
- Root User DN (cn=Directory Manager)
- Root User Password (secret)
- Directory Base DN (dc=dcm4che,dc=org)
needed for the LDAP connection configuration of DCM4CHEE Archive.
-
After initial setup, one may start and stop OpenDJ by
> $OPENDJ_HOME/bin/start-ds > $OPENDJ_HOME/bin/stopt-ds
-
Install Apache DS 2.0.0-M20 on the system and start Apache DS.
-
Install Apache Directory Studio 2.0.0-M9 and create a new LDAP Connection with:
Network Parameter: Hostname: localhost Port: 10389 Authentication Parameter: Bind DN or user: uid=admin,ou=system Bind password: secret -
Import LDAP schema files for Apache DS:
$DCM4CHEE_ARC/ldap/apacheds/dicom.ldif $DCM4CHEE_ARC/ldap/apacheds/dcm4che.ldif $DCM4CHEE_ARC/ldap/apacheds/dcm4chee-archive.ldif $DCM4CHEE_ARC/ldap/apacheds/dcm4chee-archive-ui.ldifusing the LDIF import function of Apache Directory Studio LDAP Browser.
-
One may modify the default Directory Base DN
dc=example,dc=comby changing the value of attributeads-partitionsuffix: dc=dcm4che,dc=org`of object
ou=config + ads-directoryServiceId=default + ou=partitions ads-partitionId=example to ads-partitionId=dcm4cheusing Apache Directory Studio LDAP Browser.
Note : Restart the Apache DS service to effect the above changes.
Alternatively, run ApacheDS using docker
-
If not already done, install Apache Directory Studio 2.0.0-M9 and create a new LDAP Connection corresponding to your LDAP Server configuration, e.g:
Network Parameter: Hostname: localhost Port: 389 Authentication Parameter: Bind DN or user: cn=admin,dc=dcm4che,dc=org Bind password: secret Browser Options: Base DN: dc=dcm4che,dc=org -
If configured Directory Base DN is other than
dc=dcm4che,dc=org, replace all occurrences ofdc=dcm4che,dc=orgin LDIF files$DCM4CHEE_ARC/ldap/init-baseDN.ldif $DCM4CHEE_ARC/ldap/init-config.ldif $DCM4CHEE_ARC/ldap/default-config.ldif $DCM4CHEE_ARC/ldap/default-ui-config.ldif $DCM4CHEE_ARC/ldap/add-vendor-data.ldifby your Directory Base DN, e.g.:
> cd $DCM4CHEE_ARC/ldap > sed -i s/dc=dcm4che,dc=org/dc=my-domain,dc=com/ init-baseDN.ldif > sed -i s/dc=dcm4che,dc=org/dc=my-domain,dc=com/ init-config.ldif > sed -i s/dc=dcm4che,dc=org/dc=my-domain,dc=com/ default-config.ldif > sed -i s/dc=dcm4che,dc=org/dc=my-domain,dc=com/ default-ui-config.ldif > sed -i s/dc=dcm4che,dc=org/dc=my-domain,dc=com/ add-vendor-data.ldif -
If there is no base entry in the directory database, import
$DCM4CHEE_ARC/ldap/init-baseDN.ldifusing the LDIF import function of Apache Directory Studio LDAP Browser. -
If DICOM configuration root entries are not present in the directory database, import
$DCM4CHEE_ARC/ldap/init-config.ldifusing the LDIF import function of Apache Directory Studio LDAP Browser. -
Import
$DCM4CHEE_ARC/ldap/default-config.ldif$DCM4CHEE_ARC/ldap/default-ui-config.ldif
using the LDIF import function of Apache Directory Studio LDAP Browser.
-
a. Using Apache Directory Studio : On dcm4chee-arc device level, add new attribute dicomVendorData using the New Attribute function (or Ctrl+Shift++) and in its value, load the data by selecting
$DCM4CHEE_ARC/ldap/vendor-data.zipfile. This zip file contains XSLT stylesheets required for
attribute coercions of incoming or outgoing DICOM messages and mapping of HL7 fields in incoming / outgoing HL7 messages.b. Using command line : Import vendor data, directly using
$DCM4CHEE_ARC/ldap/add-vendor-data.ldifscript.> cd $DCM4CHEE_ARC/ldap > ldapadd -xwsecret -Dcn=admin,dc=dcm4che,dc=org -f add-vendor-data.ldif modifying entry "dicomDeviceName=dcm4chee-arc,cn=Devices,cn=DICOM Configuration,dc=dcm4che,dc=org"Verify that vendor-data is imported in your LDAP using
> ldapsearch -LLLsbase -xwsecret -Dcn=admin,dc=dcm4che,dc=org -b "dicomDeviceName=dcm4chee-arc,cn=Devices,cn=DICOM Configuration,dc=dcm4che,dc=org" dicomVendorData | head dn: dicomDeviceName=dcm4chee-arc,cn=Devices,cn=DICOM Configuration,dc=dcm4che, dc=org dicomVendorData:: UEsDBAoAAAgAAFRIslIAAAAAAAAAAAAAAAALAAAAdGh1bWJuYWlscy9QSwME FAAACAgANWxIUhgB/i3nDgAADGQAAAwAAABkc3IyaHRtbC54c2ztHWlv28j1e4H+hykjhFZXNiUf8 SWpVS1510Blu7Y2u8AiG1DkyGJLkQw58tGi/70zPIdzkEPJ8aZFgyS2Rc6bd19zuP8cuWcRenFhtI QQgUcYRo7vDbTeXlcDzyvXi87wKwNtiVBwZhhPT097Twd7fvhg9E5PT42f7/9qzELTixZ+uNKGv/8 dAH0C0l+jYI3ACqKlb5PRK1cD0LN82/EeBtqPs8vdEw0YxYDADM0V8MwVHGhPpu3vrkNXG6azur5l uks/Qmcn3ZOuYVurQwuju2uGlmFCFBnji+nhxQ+TiUGG9o0cYAH/0Qwdc+7CdIrID+7gItJABF1oo YFmXJvIeYRjx/JXU9+GrhF/O0IodOZrBH/5MzIfBnq3e9gdHRwf6cAPAf3RyZH+ybhCcEVm5P7IgH VPer1eNrLqpdPT9CWN8CynyvEsd21DsAzhYqBZa8feJ/Tt4WcJd/M38dDANREEKxNZSwG9ifDw20R -
As required by your application setup needs, change Configurations if needed. Typically, one may want to change / add the following
- AE Title(s) of the Archive and its corresponding Web Applications
- Storage Directory
- AE Title(s) of external DICOM Applications to which the Archive shall connect to for DICOM transactions
- External HL7 Receiver
-
Copy configuration files into the WildFly installation:
> cp -r $DCM4CHEE_ARC/configuration $WILDFLY_HOME/standalone [UNIX] > xcopy %DCM4CHEE_ARC%\configuration %WILDFLY_HOME%\standalone\configuration [Windows] (Select D = directory)Note: Beside LDAP Connection configuration
dcm4chee-arc/ldap.properties, the private keykeystores/key.p12and the trusted CA certificatekeystores/cacerts.p12used in TLS connections are not stored in LDAP.Ensure that one's LDAP specific values are present in the file
dcm4chee-arc/ldap.properties. -
a. Upto archive version 5.23.3, the Jakarta Full Platform Profile certified configuration can be used as base configuration. To preserve the original WildFly configuration one may copy the original configuration file for Jakarta Full Platform Profile:
> cd $WILDFLY_HOME/standalone/configuration/ > cp standalone-full.xml dcm4chee-arc.xmlb. Archive Version 5.24.0 onwards, the Jakarta EE Web Profile certified configuration can be used as base configuration. To preserve the original WildFly configuration one may copy the original configuration file for Jakarta EE Web Profile:
> cd $WILDFLY_HOME/standalone/configuration/ > cp standalone.xml dcm4chee-arc.xml -
Install JBoss module containing DCM4CHE libraries, Keycloak admin client and Apache commons.
> cd $WILDFLY_HOME > unzip $DCM4CHEE_ARC/jboss-modules/dcm4che-jboss-modules-5.x.x.zip -
Install JAI Image IO 1.2 libraries as JBoss module (needed for compression/decompression, does not work on Windows 64 bit and Mac OS X caused by missing native components for these platforms):
> cd $WILDFLY_HOME > unzip $DCM4CHEE_ARC/jboss-modules/jai_imageio-jboss-modules-1.2-pre-dr-b04.zip -
Install jclouds 2.2.1 libraries as JBoss modules:
> cd $WILDFLY_HOME > unzip $DCM4CHEE_ARC/jboss-modules/jclouds-jboss-modules-2.2.1-noguava.zip -
Install ecs-object-client 3.0.0 libraries as JBoss modules:
> cd $WILDFLY_HOME > unzip $DCM4CHEE_ARC/jboss-modules/ecs-object-client-jboss-modules-3.0.0.zip -
Download Client Adapter for Wildfly from Keycloak and unzip it inside
WILDFLY_HOME.> cd $WILDFLY_HOME > unzip $Downloads/keycloak-wildfly-adapter-dist-15.0.0.zip -
Except for H2, one has to install the JDBC Driver for the database.
The JDBC driver can be installed either as a deployment or as a core module.
For installation as a core module extract the corresponding ZIP file into $WILDFLY_HOME, e.g.:
> cd $WILDFLY_HOME > unzip $DCM4CHEE_ARC/jboss-modules/jdbc-jboss-modules-mysql-8.0.20.zipInstallation as deployment is limited to JDBC 4-compliant driver consisting of one JAR. You may either take the JDBC driver JAR from included core module ZIP, or download it from:
-
Start WildFly in standalone mode with the correct configuration file:
> $WILDFLY_HOME/bin/standalone.sh -c dcm4chee-arc.xml [UNIX] > %WILDFLY_HOME%\bin\standalone.bat -c dcm4chee-arc.xml [Windows]Verify, that JBoss started successfully, e.g.:
========================================================================= JBoss Bootstrap Environment JBOSS_HOME: /home/work/archive/wildfly-ee-10-41.0.0.Final JAVA: java JAVA_OPTS: -Djdk.serialFilter="maxbytes=10485760;maxdepth=128;maxarray=100000;maxrefs=300000" -Xms64m -Xmx512m -Djava.net.preferIPv4Stack=true -Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true -agentlib:jdwp=transport=dt_socket,address=8787,server=y,suspend=n --add-exports=java.desktop/sun.awt=ALL-UNNAMED --add-exports=java.naming/com.sun.jndi.ldap=ALL-UNNAMED --add-exports=java.naming/com.sun.jndi.url.ldap=ALL-UNNAMED --add-exports=java.naming/com.sun.jndi.url.ldaps=ALL-UNNAMED --add-exports=jdk.naming.dns/com.sun.jndi.dns=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.security=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.management/javax.management=ALL-UNNAMED --add-opens=java.naming/javax.naming=ALL-UNNAMED ========================================================================= Listening for transport dt_socket at address: 8787 12:31:52,339 INFO [org.jboss.modules] (main) JBoss Modules version 2.1.6.Final 12:31:52,924 INFO [org.jboss.msc] (main) JBoss MSC version 1.5.6.Final 12:31:53,069 INFO [org.jboss.as] (MSC service thread 1-3) WFLYSRV0049: WildFly 41.0.0.Final (WildFly Core 33.0.0.Final) starting 12:31:54,089 INFO [org.wildfly.security] (Controller Boot Thread) ELY00001: WildFly Elytron version 2.9.2.Final 12:31:54,794 INFO [org.jboss.as.server] (Controller Boot Thread) WFLYSRV0039: Creating http management service using socket-binding (management-http) 12:31:54,838 INFO [org.xnio] (MSC service thread 1-9) XNIO version 3.8.16.Final 12:31:54,851 INFO [org.xnio.nio] (MSC service thread 1-9) XNIO NIO Implementation Version 3.8.16.Final 12:31:54,901 INFO [org.wildfly.extension.elytron.oidc._private] (ServerService Thread Pool -- 56) WFLYOIDC0001: Activating WildFly Elytron OIDC Subsystem ......... ......... ......... 12:32:24,614 INFO [org.jboss.as.server] (Controller Boot Thread) WFLYSRV0212: Resuming server 12:32:24,621 INFO [org.jboss.as] (Controller Boot Thread) WFLYSRV0060: Http management interface listening on http://127.0.0.1:9990/management 12:32:24,621 INFO [org.jboss.as] (Controller Boot Thread) WFLYSRV0051: Admin console listening on http://127.0.0.1:9990 12:32:24,623 INFO [org.jboss.as] (Controller Boot Thread) WFLYSRV0025: WildFly 41.0.0.Final (WildFly Core 33.0.0.Final) started in 6411ms - Started 437 of 641 services (371 services are lazy, passive or on-demand) - Server configuration file in use: dcm4chee-arc.xml - Minimum feature stability level: communityRunning JBoss in domain mode should work, but was not yet tested.
-
On installing JDBC Driver as a core module in step 8, add it into the server configuration using JBoss CLI in a new console window:
> $WILDFLY_HOME/bin/jboss-cli.sh -c [UNIX] > %WILDFLY_HOME%\bin\jboss-cli.bat -c [Windows] [standalone@localhost:9990 /] /subsystem=datasources/jdbc-driver=<driver-name>:add(driver-name=<driver-name>,driver-module-name=<module-name>)Any
<driver-name>for the JDBC Driver can be chosen, however<module-name>must match the name defined in the JDBC driver's module definition filemodule.xml, e.g.:[standalone@localhost:9990 /] /subsystem=datasources/jdbc-driver=mysql:add(driver-name=mysql,driver-module-name=com.mysql) -
Create and enable a new Data Source bound to JNDI name
java:/PacsDSusing JBoss CLI:[standalone@localhost:9990 /] data-source add --name=PacsDS \ > --driver-name=<driver-name> \ > --connection-url=<jdbc-url> \ > --jndi-name=java:/PacsDS \ > --user-name=<user-name> \ > --password=<user-password>The format of
<jdbc-url>is JDBC Driver specific, e.g.:- H2:
jdbc:h2:<directory-path>/<database-name> - MySQL:
jdbc:mysql://<host>:3306/<database-name>?serverTimezone=<timezone> - PostgreSQL:
jdbc:postgresql://<host>:5432/<database-name> - Firebird:
jdbc:firebirdsql:<host>/3050:<database-name> - DB2:
jdbc:db2://<host>:50000/<database-name> - Oracle:
jdbc:oracle:thin:@<host>:1521:<database-name> - Microsoft SQL Server:
jdbc:sqlserver://<host>:1433;databaseName=<database-name>
There is also a CLI script
$DCM4CHEE_ARC/cli/add-data-source-<db>.cliprovided, which just applies the command to add the JDBC driver and creating the Data Source. Replace<host>,<database-name>,<timezone>(one may get this value from the system's timezone file),<user-name>and<user-password>by their actual values before executing it:> $WILDFLY_HOME/bin/jboss-cli.sh -c --file=$DCM4CHEE_ARC/cli/add-data-source-<db>.cli - H2:
-
For H2 as database, create tables and indexes using the H2 Console:
-
Download the H2 Console WAR file from https://github.com/jboss-developer/jboss-eap-quickstarts/tree/7.1.0.GA/h2-console
-
Deploy it using JBoss CLI, e.g.:
[standalone@localhost:9990 /] deploy ~/Downloads/h2-console.war -
Access the console at http://localhost:8080/h2console and login with
JDBC URL,User nameundPasswordmatching the values passed to abovedata-source add --name=PacsDS. -
Create tables and indexes:
RUNSCRIPT FROM '$DCM4CHEE_ARC/sql/h2/create-h2.sql'
-
-
Enable property replacement in deployment descriptors by setting attribute
spec-descriptor-property-replacementof theeesubsystem totrue, and adjust themanaged-executor-servicesand themanaged-scheduled-executor-serviceconfiguration of theeesubsystem to avoid thread-pool related issues on long-running tasks or heavy load using JBoss CLI - you may configure a larger maximal number of threads than 100 according your needs:[standalone@localhost:9990 /] /subsystem=ee:write-attribute(name=spec-descriptor-property-replacement,value=true) [standalone@localhost:9990 /] /subsystem=ee/managed-executor-service=default:undefine-attribute(name=hung-task-threshold) [standalone@localhost:9990 /] /subsystem=ee/managed-executor-service=default:write-attribute(name=long-running-tasks,value=true) [standalone@localhost:9990 /] /subsystem=ee/managed-executor-service=default:write-attribute(name=core-threads,value=2) [standalone@localhost:9990 /] /subsystem=ee/managed-executor-service=default:write-attribute(name=max-threads,value=100) [standalone@localhost:9990 /] /subsystem=ee/managed-executor-service=default:write-attribute(name=queue-length,value=0) [standalone@localhost:9990 /] /subsystem=ee/managed-scheduled-executor-service=default:undefine-attribute(name=hung-task-threshold) [standalone@localhost:9990 /] /subsystem=ee/managed-scheduled-executor-service=default:write-attribute(name=long-running-tasks,value=true)Alternatively, execute same commands using provided CLI script
$DCM4CHEE_ARC/cli/adjust-managed-executor.cli> $WILDFLY_HOME/bin/jboss-cli.sh -c --file=$DCM4CHEE_ARC/cli/adjust-managed-executor.cliReload the configuration or restart Wildfly to effect the changes
[standalone@localhost:9990 /] :reload -
By default, DCM4CHEE Archive 5.x will assume
dcm4chee-arcas its device name, used to find its configuration in the LDAP Server. Specify a different device name by system propertydcm4chee-arc.DeviceName(if required) using JBoss CLI:[standalone@localhost:9990 /] /system-property=dcm4chee-arc.DeviceName:add(value=<device-name>) -
By default, Wildfly supports only 10MB as maximum size of HTTP POST requests. Change this to a higher value as shown below
[standalone@localhost:9990 /] /subsystem=undertow/server=default-server/http-listener=default:write-attribute(name=max-post-size,value=10000000000) [standalone@localhost:9990 /] /subsystem=undertow/server=default-server/https-listener=https:write-attribute(name=max-post-size,value=10000000000)Reload the configuration or restart Wildfly to effect the changes
[standalone@localhost:9990 /] :reload -
Deploy DCM4CHEE Archive Backend 5.x and DCM4CHEE Archive UI 5.x using JBoss CLI, e.g.:
[standalone@localhost:9990 /] deploy $DCM4CHEE_ARC/deploy/dcm4chee-arc-ear-5.35.2-psql.ear [standalone@localhost:9990 /] deploy $DCM4CHEE_ARC/deploy/dcm4chee-arc-ui2-5.35.2.warVerify that DCM4CHEE Archive Backend and UI was deployed and started successfully, e.g.:
12:38:53,901 INFO [org.jboss.as.repository] (management-handler-thread - 2) WFLYDR0001: Content added at location /home/work/archive/wildfly-ee-10-41.0.0.Final/standalone/data/content/d9/819da6d542334b7b03425d314c097aaffb02ea/content 12:38:53,914 INFO [org.jboss.as.server.deployment] (MSC service thread 1-6) WFLYSRV0027: Starting deployment of "dcm4chee-arc-ear-5.35.2-psql.ear" (runtime-name: "dcm4chee-arc-ear-5.35.2-psql.ear") : 12:38:59,806 INFO [org.jboss.as.jpa] (ServerService Thread Pool -- 84) WFLYJPA0010: Starting Persistence Unit (phase 2 of 2) Service 'dcm4chee-arc-ear-5.35.2-psql.ear#dcm4chee-arc' 12:39:00,324 INFO [org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean] (MSC service thread 1-3) Creating Service {urn:ihe:rad:xdsi-b:2009}ImagingDocumentSource from WSDL: /wsdl/XDS-I.b_ImagingDocumentSource.wsdl 12:39:01,094 INFO [org.apache.cxf.endpoint.ServerImpl] (MSC service thread 1-3) Setting the server's publish address to be http://localhost:8080/dcm4chee-arc/xdsi/ImagingDocumentSource 12:39:01,187 INFO [org.jboss.ws.cxf.deployment] (MSC service thread 1-3) JBWS024074: WSDL published to: file:/home/work/archive/wildfly-ee-10-41.0.0.Final/standalone/data/wsdl/dcm4chee-arc-ear-5.35.2-psql.ear/dcm4chee-arc-retrieve-xdsi-5.35.2.war/wsdl/XDS-I.b_ImagingDocumentSource.wsdl 12:39:01,356 INFO [org.jboss.as.webservices] (MSC service thread 1-2) WFLYWS0003: Starting service jboss.ws.endpoint."dcm4chee-arc-ear-5.35.2-psql.ear"."dcm4chee-arc-retrieve-xdsi-5.35.2.war"."org.dcm4chee.arc.retrieve.xdsi.ImageDocumentSource" 12:39:05,800 INFO [io.undertow.websockets.jsr] (ServerService Thread Pool -- 102) UT026003: Adding annotated server endpoint class org.dcm4chee.arc.ups.rs.EventReportSender for path /aets/{AETitle}/ws/subscribers/{SubscriberAET} 12:39:05,861 INFO [org.wildfly.extension.undertow] (ServerService Thread Pool -- 102) WFLYUT0021: Registered web context: '/dcm4chee-arc' for server 'default-server' 12:39:05,861 INFO [org.wildfly.extension.undertow] (ServerService Thread Pool -- 108) WFLYUT0021: Registered web context: '/dcm4chee-arc/xdsi' for server 'default-server' 12:39:05,861 INFO [org.wildfly.extension.undertow] (ServerService Thread Pool -- 107) WFLYUT0021: Registered web context: '/dcm4chee-proxy' for server 'default-server' 12:39:05,861 INFO [org.wildfly.extension.undertow] (ServerService Thread Pool -- 109) WFLYUT0021: Registered web context: '/dcm4chee-arc/xsl' for server 'default-server' 12:39:06,299 WARN [org.dcm4chee.arc.impl.ArchiveDeviceProducer] (ServerService Thread Pool -- 97) UnzipVendorDataToURI=${jboss.server.temp.url}/dcm4chee-arc, but no Vendor Data 12:39:06,646 INFO [org.dcm4che3.net.Connection] (EE-ManagedExecutorService-default-Thread-2) Start TCP Listener on /0.0.0.0:11112 12:39:06,648 INFO [org.dcm4che3.net.Connection] (EE-ManagedExecutorService-default-Thread-1) Start TCP Listener on /0.0.0.0:2575 12:39:06,968 INFO [org.dcm4che3.net.Connection] (ServerService Thread Pool -- 97) No TCP Protocol Handler for protocol HTTP 12:39:06,968 INFO [org.dcm4che3.net.Connection] (EE-ManagedExecutorService-default-Thread-3) Start TCP Listener on /0.0.0.0:12575 12:39:06,968 INFO [org.dcm4che3.net.Connection] (EE-ManagedExecutorService-default-Thread-4) Start TCP Listener on /0.0.0.0:2762 12:39:07,293 INFO [org.jboss.as.server] (management-handler-thread - 2) WFLYSRV0010: Deployed "dcm4chee-arc-ear-5.35.2-psql.ear" (runtime-name : "dcm4chee-arc-ear-5.35.2-psql.ear") ......... ......... ......... 12:41:25,308 INFO [org.jboss.as.repository] (management-handler-thread - 2) WFLYDR0001: Content added at location /home/work/archive/wildfly-ee-10-41.0.0.Final/standalone/data/content/73/ceac48dc8573d6d322d53e555c74d49692cbe1/content 12:41:25,315 INFO [org.jboss.as.server.deployment] (MSC service thread 1-6) WFLYSRV0027: Starting deployment of "dcm4chee-arc-ui2-5.35.2.war" (runtime-name: "dcm4chee-arc-ui2-5.35.2.war") 12:41:26,038 WARN [org.jboss.as.dependency.private] (MSC service thread 1-3) WFLYSRV0018: Deployment "deployment.dcm4chee-arc-ui2-5.35.2.war" is using a private module ("org.wildfly.security.elytron-http-oidc") which may be changed or removed in future versions without notice. 12:41:26,044 INFO [org.jboss.weld.deployer] (MSC service thread 1-6) WFLYWELD0003: Processing weld deployment dcm4chee-arc-ui2-5.35.2.war 12:41:26,354 INFO [org.wildfly.extension.undertow] (ServerService Thread Pool -- 118) WFLYUT0021: Registered web context: '/dcm4chee-arc/ui2' for server 'default-server' 12:41:26,380 INFO [org.jboss.as.server] (management-handler-thread - 2) WFLYSRV0010: Deployed "dcm4chee-arc-ui2-5.35.2.war" (runtime-name : "dcm4chee-arc-ui2-5.35.2.war")Verify that the archive web UI is accessible at
http://localhost:8080/dcm4chee-arc/ui2.Undeploy DCM4CHEE Archive Backend and UI at any time using JBoss CLI, e.g.:
[standalone@localhost:9990 /] undeploy dcm4chee-arc-ear-5.35.2-psql.ear [standalone@localhost:9990 /] undeploy dcm4chee-arc-ui2-5.35.2.war 12:43:39,031 INFO [org.wildfly.extension.undertow] (ServerService Thread Pool -- 119) WFLYUT0022: Unregistered web context: '/dcm4chee-arc/xdsi' from server 'default-server' 12:43:39,031 INFO [org.wildfly.extension.undertow] (ServerService Thread Pool -- 133) WFLYUT0022: Unregistered web context: '/dcm4chee-proxy' from server 'default-server' 12:43:39,031 INFO [org.wildfly.extension.undertow] (ServerService Thread Pool -- 131) WFLYUT0022: Unregistered web context: '/dcm4chee-arc/xsl' from server 'default-server' 12:43:39,034 INFO [org.dcm4che3.net.Connection] (EE-ManagedExecutorService-default-Thread-2) Stop TCP Listener on /0.0.0.0:11112 12:43:39,034 INFO [org.dcm4che3.net.Connection] (EE-ManagedExecutorService-default-Thread-1) Stop TCP Listener on /0.0.0.0:2575 12:43:39,034 INFO [org.dcm4che3.net.Connection] (EE-ManagedExecutorService-default-Thread-3) Stop TCP Listener on /0.0.0.0:12575 12:43:39,034 INFO [org.dcm4che3.net.Connection] (EE-ManagedExecutorService-default-Thread-4) Stop TCP Listener on /0.0.0.0:2762 12:43:39,036 INFO [org.wildfly.extension.undertow] (ServerService Thread Pool -- 139) WFLYUT0022: Unregistered web context: '/dcm4chee-arc' from server 'default-server' 12:43:39,040 INFO [org.jboss.as.webservices] (MSC service thread 1-3) WFLYWS0004: Stopping service jboss.ws.endpoint."dcm4chee-arc-ear-5.35.2-psql.ear"."dcm4chee-arc-retrieve-xdsi-5.35.2.war"."org.dcm4chee.arc.retrieve.xdsi.ImageDocumentSource" ......... ......... 12:43:39,126 INFO [org.jboss.as.server.deployment] (MSC service thread 1-8) WFLYSRV0208: Stopped subdeployment (runtime-name: dcm4chee-arc-qmgt-5.35.2.jar) in 117ms 12:43:39,127 INFO [org.jboss.as.server.deployment] (MSC service thread 1-6) WFLYSRV0208: Stopped subdeployment (runtime-name: dcm4chee-arc-procedure-5.35.2.jar) in 118ms 12:43:39,126 INFO [org.jboss.as.server.deployment] (MSC service thread 1-9) WFLYSRV0208: Stopped subdeployment (runtime-name: dcm4chee-arc-retrieve-xdsi-5.35.2.war) in 118ms 12:43:39,127 INFO [org.jboss.as.server.deployment] (MSC service thread 1-8) WFLYSRV0208: Stopped subdeployment (runtime-name: dcm4chee-arc-keyvalue-5.35.2.jar) in 119ms ......... ......... ......... 12:43:39,144 INFO [org.jboss.as.server.deployment] (MSC service thread 1-2) WFLYSRV0028: Stopped deployment dcm4chee-arc-ear-5.35.2-psql.ear (runtime-name: dcm4chee-arc-ear-5.35.2-psql.ear) in 135ms 12:43:39,165 INFO [org.jboss.as.repository] (management-handler-thread - 2) WFLYDR0002: Content removed from location /home/work/archive/wildfly-ee-10-41.0.0.Final/standalone/data/content/d9/819da6d542334b7b03425d314c097aaffb02ea/content 12:43:39,165 INFO [org.jboss.as.server] (management-handler-thread - 2) WFLYSRV0009: Undeployed "dcm4chee-arc-ear-5.35.2-psql.ear" (runtime-name: "dcm4chee-arc-ear-5.35.2-psql.ear") ......... ......... ......... 12:47:28,648 INFO [org.wildfly.extension.undertow] (ServerService Thread Pool -- 120) WFLYUT0022: Unregistered web context: '/dcm4chee-arc/ui2' from server 'default-server' 12:47:28,755 INFO [org.jboss.as.server.deployment] (MSC service thread 1-3) WFLYSRV0028: Stopped deployment dcm4chee-arc-ui2-5.35.2.war (runtime-name: dcm4chee-arc-ui2-5.35.2.war) in 110ms 12:47:28,771 INFO [org.jboss.as.repository] (management-handler-thread - 2) WFLYDR0002: Content removed from location /home/work/archive/wildfly-ee-10-41.0.0.Final/standalone/data/content/73/ceac48dc8573d6d322d53e555c74d49692cbe1/content 12:47:28,771 INFO [org.jboss.as.server] (management-handler-thread - 2) WFLYSRV0009: Undeployed "dcm4chee-arc-ui2-5.35.2.war" (runtime-name: "dcm4chee-arc-ui2-5.35.2.war") -
Archive server log may contain several occurrences INFO messages from underlying Wildfly cached connection manager
14:09:59,341 INFO [org.jboss.jca.core.connectionmanager.listener.TxConnectionListener] (default task-4) IJ000311: Throwable from unregister connection: java.lang.IllegalStateException: IJ000152: Trying to return an unknown connection: org.jboss.jca.adapters.jdbc.jdk8.WrappedConnectionJDK8@617cc86c at [email protected]//org.jboss.jca.core.connectionmanager.ccm.CachedConnectionManagerImpl.unregisterConnection(CachedConnectionManagerImpl.java:408) at [email protected]//org.jboss.jca.core.connectionmanager.listener.TxConnectionListener.connectionClosed(TxConnectionListener.java:645) .........Optionally disable these by
[standalone@localhost:9990 /] /subsystem=datasources/data-source=pacsds:write-attribute(name=use-ccm,value=false)