一.进入网址:
https://github.com/dcm4che/dcm4chee-arc-light/wiki/Installation
这个是GitHub上面给的步骤,可能会比较难理解,按照所给的步骤做,可能会出现各种问题,在此将笔者遇见的问题列举出来,并给出解决方案。
二.安装所需环境:
1、JDK 1.8.0_91
2、wildfly-10.0.0.Final
3、mysql-5.7.12
4、Apache DS 2.0.0-M20
5、 Apache Directory Studio 2.0.0-M9
上述所需工具下载及环境配置在此不多赘述,如需了解详情请到相应官网查阅。
三.所需资源
binaries下载地址:
https://sourceforge.net/projects/dcm4che/files/
笔者所用的是dcm4chee-arc-5.4.1-mysql这个版本,当然你可以使用其它数据库版本,如果使用其它数据库,第二个步骤中的数据库也要相应的改变。
四.建立数据库
我们选择Mysql数据库:
1、 创建数据库并授权用户
> 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
2、 导入表到此数据库
mysql -u <user-name> -p<user-password> <database-name> < $DCM4CHEE_ARC/sql/create-mysql.sql
五.设置 LDAP 服务器
我们选择 Apache DS 2.0.0 服务器。
5.1 安装 Apache DS 2.0.0-M20 并启动服务
5.2 安装 Apache Directory Studio 2.0.0-M9 并创建一个 LDAP 连接:
Network Parameter:
Hostname: localhost
Port: 10389
Authentication Parameter:
Bind DN or user: uid=admin,ou=system
Bind password: secret
5.3 将 LDAP模式的文件导入到 Apache DS 中:
5.3.1 导入apacheds下的LDIF文件
$DCM4CHEE_ARC/ldap/apacheds/dicom.ldif
$DCM4CHEE_ARC/ldap/apacheds/dcm4che.ldif
$DCM4CHEE_ARC/ldap/apacheds/dcm4chee-archive.ldif
导入步骤为:在此连接右键?import?LDIF import,选择要导入的文件。
注意:要严格按照上述所给文件先后顺序导入。
5.3.2 新建分区dc=dcm4che,dc=org
如果不新建这个分区,按照GitHub上的步骤连接dc=dcm4che,dc=org会出现找不到分区的问题,此时,我们应该首先在uid=admin,ou=system 这个连接下
新建一个分区,步骤为:
(1) 在此连接右键open configuration,切换到Partitions选项,添加一个ID为dcm4che,Suffix为dc=dcm4che,dc=org的分区
(2) 重启ApacheDS服务才会出现此分区。这个时候如果再建立一个新的连接,来连接此分区;Bind DN填写dc=dcm4che,dc=org,密码:secret,会出现验证失败的问题,因为dcm4che,dc=org的密码不是secret,这个时候我们需要添加这个分区的用户密码,添加步骤:
①找到$DCM4CHEE_ARC/ldap/init-baseDN.ldif,在此文件末尾加上一个属性userpassword: secret
②导入此ldif文件,会出现entry已存在的问题,这个时候需要删除dc=dcm4che,dc=org 这个entry,删除之后再导入,就会成功。
5.3.3 导入ldap下面的ldif文件
$DCM4CHEE_ARC/ldap/init-config.ldif
$DCM4CHEE_ARC/ldap/default-config.ldif
$DCM4CHEE_ARC/ldap/add-vendor-data.ldif
$DCM4CHEE_ARC/ldap/sample-config.ldif
导入方法和5.3.1一样。
六.将dcm4chee-arc-light中的默认配置导入到 LDAP 服务器上
6.1 创建一个新LDAP连接:
Network Parameter:
Hostname: localhost
Port: 10389
Authentication Parameter:
Bind DN or user: dc=dcm4che,dc=org
Bind password: secret
Browser Options:
Base DN: dc=dcm4che,dc=org
当然,端口号也可以使用GitHub 所给的389,这需要你创建一个 LDAP server,在 LDAP Servers 视图下右键?New?New Server,选择 ApacheDS 2.0.0 点击 finish,打开配置视图,选择Overview 选项卡,更改端口号为 389,306,启动此server。
6.3 导入ldap下面的ldif文件
$DCM4CHEE_ARC/ldap/init-config.ldif
$DCM4CHEE_ARC/ldap/sample-config.ldif
$DCM4CHEE_ARC/ldap/default-config.ldif
$DCM4CHEE_ARC/ldap/add-vendor-data.ldif
若5.3.3已经导入,这里就不需要导入了。导入方法和5.3.1一样。
6.4 配置 Archive 的AE Title(s)
6.4.1 可以参考这个文章:change the default AE Title(s) of the Archive
我们在这里选择第一种方法:
创建一个 LDIF 文件 命名AETitle.ldif, 文件内容如下:
version: 1
# LDIF for modifying the AE Title of the Archive
# Adjust Base DN (dc=dc=dcm4che,dc=org), Device name (dcm4chee-arc), previous AE Title (DCM4CHEE),
# new AE Title (MY_AE) before import it into the LDAP server
dn: dicomAETitle=DCM4CHEE,dicomDeviceName=dcm4chee-arc,cn=Devices,cn=DICOM Configuration,dc=dcm4che,dc=org
changetype: moddn
newrdn: dicomAETitle=MY_AE
deleteoldrdn: 1
newsuperior: dicomDeviceName=dcm4chee-arc,cn=Devices,cn=DICOM Configuration,dc=dcm4che,dc=org
将此文件导入,导入方法和5.3.1一样。
6.5 改变默认的存储路径
6.5.1 可以参考这个文章: change the default Storage Directory:
我们选择第二种方法:
创建一个 LDIF 文件,命名 storage-directory.ldif,文件内容如下:
version: 1
dn: dcmStorageID=fs1,dicomDeviceName=dcm4chee-arc,cn=Devices,cn=DICOM Configuration,dc=dcm4che,dc=org
changetype: modify
replace: dcmURI
dcmURI: file:///D:/dcm4chee-arc/fs1/
笔者选择的是D盘,如果想使用其它盘可以更改为相应的盘符,当然,路径也可以自定义。
6.6 配置外部 DICOM 应用程序 AE Title(s) 来确定哪一个 Archive 允许被连接
6.6.1可以参考这个文章:configure AE Title(s) of external DICOM Applications
调整$DCM4CHEE_ARC/ldap/sample-device.ldif文件可以配置。此文件内容为:
version: 1
# LDIF for adding a Device providing one Application Entity available on one Network connection
# Adjust Base DN (dc=dcm4che,dc=org), Device name (SAMPLE_DEVICE), AE Title (SAMPLE_AET),
# Hostname (sample.host.name) and Port number before import it into the LDAP server
# Unique AE Title
# (will fail if there is already an object for the same AE Title)
dn: dicomAETitle=SAMPLE_AET,cn=Unique AE Titles Registry,cn=DICOM Configuration,dc=dcm4che,dc=org
objectClass: dicomUniqueAETitle
dicomAETitle: SAMPLE_AET
# Device
dn: dicomDeviceName=SAMPLE_DEVICE,cn=Devices,cn=DICOM Configuration,dc=dcm4che,dc=org
objectClass: dicomDevice
dicomDeviceName: SAMPLE_DEVICE
dicomInstalled: TRUE
# Network Connection
dn: cn=dicom,dicomDeviceName=SAMPLE_DEVICE,cn=Devices,cn=DICOM Configuration,dc=dcm4che,dc=org
objectClass: dicomNetworkConnection
cn: dicom
dicomHostname: sample.host.name
dicomPort: 12345
# Network Connection (secure)
# dn: cn=dicom-tls,dicomDeviceName=SAMPLE_DEVICE,cn=Devices,cn=DICOM Configuration,dc=dcm4che,dc=org
# cn: dicom-tls
# objectClass: dicomNetworkConnection
# dicomHostname: sample.host.name
# dicomPort: 23456
# dicomTLSCipherSuite: TLS_RSA_WITH_AES_128_CBC_SHA
# dicomTLSCipherSuite: SSL_RSA_WITH_3DES_EDE_CBC_SHA
# Network Application Entity
dn: dicomAETitle=SAMPLE_AET,dicomDeviceName=SAMPLE_DEVICE,cn=Devices,cn=DICOM Configuration,dc=dcm4che,dc=org
objectClass: dicomNetworkAE
dicomAETitle: SAMPLE_AET
dicomNetworkConnectionReference: cn=dicom,dicomDeviceName=SAMPLE_DEVICE,cn=Devices,cn=DICOM Configuration,dc=dcm4che,dc=org
# dicomNetworkConnectionReference: cn=dicom-tls,dicomDeviceName=SAMPLE_DEVICE,cn=Devices,cn=DICOM Configuration,dc=dcm4che,dc=org
dicomAssociationInitiator: TRUE
dicomAssociationAcceptor: TRUE
七.设置WildFly 服务器
7.1 将配置文件拷贝到WildFly 安装路径中:
> cp -r $DCM4CHEE_ARC/configuration/dcm4chee-arc $WILDFLY_HOME/standalone/configuration [UNIX]
> xcopy %DCM4CHEE_ARC%\configuration\dcm4chee-arc %WILDFLY_HOME%\standalone\configuration [Windows]
这个时候需要修改 ldap.properties 文件
将java.naming.security.principal=cn=admin,dc=dcm4che,dc=org改为:
java.naming.security.principal=dc=dcm4che,dc=org
如果你上面建立的连接端口号是10389,需要将java.naming.provider.url的端口号改为10389
7.2 添加dcm4chee-arc 配置文件
> cd $WILDFLY_HOME/standalone/configuration/
> cp standalone-full.xml dcm4chee-arc.xml
可以手动复制
7.3 安装dcm4chee-arc-light 库作为 JBOSS 组件
> cd $WILDFLY_HOME
> unzip $DCM4CHEE_ARC/jboss-module/dcm4che-jboss-modules-5.x-dcm4chee-arc-light.zip
解压$DCM4CHEE_ARC/jboss-module/dcm4che-jboss-modules-5.x-dcm4chee-arc-light.zip到 WildFly根目录。
也可以先解压好,将modules/org下面的dcm4che复制到%WILDFLY_HOME%\modules\org下面
7.4 安装JAI Image IO 1.2 库作为JBOSS组件
> cd $WILDFLY_HOME
> unzip $DCM4CHEE_ARC/jboss-module/jai_imageio-jboss-modules-1.2-pre-dr-b04.zip
也可以自己手动解压复制到相应路径
7.5 安装 QueryDSL 3.2.3 库作为JBOSS 组件
> cd $WILDFLY_HOME
> unzip $DCM4CHEE_ARC/jboss-module/querydsl-jboss-modules-4.0.3-noguava.zip
也可以手动解压复制到相应路径
7.6 安装jclouds 1.8.1 库作为JBOSS 组件
> cd $WILDFLY_HOME
> unzip $DCM4CHEE_ARC/jboss-module/jclouds-jboss-modules-1.9.1-noguava.zip
也可以手动解压复制到相应路径
7.7 根据你选择的数据库下载相应的JDBC 驱动
7.7.1 选择合适的驱动
笔者使用的是Mysql,jdbc-jboss-modules-1.0.0-mysql.zip下的module.xml配置文件使用的是5.1.36版本,笔者使用的是5.1.39,在http://dev.mysql.com/downloads/connector/j/ 下载mysql-connector-java-5.1.39-bin.jar文件。你也可以下载其它版本,打开网址: https://downloads.mysql.com/archives/c-j/ 选择其它版本。有可能会出现版本不兼容问题,请依据实际情况作出相应的调整。
7.7.2 安装JDBC 驱动
有两种安装方式:部署和核心组件。
See 这个有两种方式的安装步骤,我们这里选择作为核心组件这种方式。
7.7.2.1在 JBOSS_HOME/modules下创建一个目录结构
(1) 目录结构为JBOSS_HOME/modules/com/mysql/main
(2)在main目录下,新建一个 module.xml 文件:
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.1" name="com.mysql">
<resources>
<resource-root path="mysql-connector-java-5.1.39-bin.jar"/>
<!-- <resource-root path="mysql-license.jar"/> -->
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
</module>
当然你也可以将$dcm4che-arc\jboss—modules\jdbc-jboss-modules-1.0.0-mysql.zip解压出来的module.xml文件复制到此路径下
(3)将下载的JDBC驱动
mysql-connector-java-5.1.39-bin.jar复制到JBOSS_HOME/modules/com/mysql/main下面
(4)核实一下JDBC驱动文件名和module.xml中path(s)下是否一致,要保持一致。
Resource-root 属性可以有多个。
7.8 使用合适的配置文件以独立模式启动 WildFly.
> $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: "C:\wildfly-10.0.0.Final"
JAVA: "C:\Program Files\Java\jdk1.8.0_91\bin\java"
JAVA_OPTS: "-Dprogram.name=standalone.bat -Xms64M -Xmx512M -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m - Djava.net.preferIPv4Stack=true -Djboss.modules.system.pkgs=org.jboss.byteman -agentlib:jdwp=transport=dt_socket,address=8787,server=y,suspend=n"
=======================================================================
09:22:51,531 INFO [org.jboss.modules] (main) JBoss Modules version 1.5.1.Final
09:22:51,704 INFO [org.jboss.msc] (main) JBoss MSC version 1.2.6.Final
09:22:51,767 INFO [org.jboss.as] (MSC service thread 1-6) WFLYSRV0049: WildFly Full 10.0.0.Final (WildFly Core 2.0.10.Final) starting
:
09:22:54,094 INFO [org.jboss.as] (Controller Boot Thread) WFLYSRV0025: WildFly Full 10.0.0.Final (WildFly Core 2.0.10.Final) started in 28397ms - Started 1839 of 2270 services (683 services are lazy, passive or on-demand)
在域模式下运行的JBoss应该可以正常工作,但是还没有测试。
7.9 打开一个新的控制台窗口,使用JBoss CLI 将 JDBC 驱动添加到服务器配置
> $WILDFLY_HOME/bin/jboss-cli.sh -c [UNIX]
> %WILDFLY_HOME%\bin\jboss-cli.bat -c [Windows]
[standalone@localhost:9999 /] /subsystem=datasources/jdbc-driver=<driver-name>:add(driver-name=<driver-name>,driver-module-name=<module-name>)
对于JDBC 驱动名字,<driver-name>可以任意,<module-name>必须和JDBC驱动组件的定义文件 module.xml中定义的名字一致,我们定义的是“com.mysql”所以:
[standalone@localhost:9999 /] /subsystem=datasources/jdbc-driver=mysql:add(driver-name=mysql,driver-module-name=com.mysql)
7.10 使用JBoss CLI 创建一个新的数据源绑定到 java:/PacsDS JNDI
[standalone@localhost:9999 /] data-source add --name=PacsDS \
> --driver-name=<driver-name> \
> --connection-url= jdbc:mysql://<host>:3306/pacsdb \
> --jndi-name=java:/PacsDS \
> --user-name=pacsdb \
> --password=pacsdb
[standalone@localhost:9999 /] data-source enable --name=PacsDS
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>
? 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>
也可以使用CLI脚本$DCM4CHEE_ARC/cli/add-data-source-<db>.cli,这个文件中有两个命令,一个是添加 JDBC driver,一个是创建数据源。在执行之前我们必须用实际值(也就是步骤四所建立的数据库)取代
<host>, <database-name>, <user-name> and <user-password> 这些值。执行:
> $WILDFLY_HOME/bin/jboss-cli.sh -c -f $DCM4CHEE_ARC/cli/add-data-source-<db>.cli
7.11 使用JBoss CLI 创建 JMS 队列:
[standalone@localhost:9990 /] jms-queue add --queue-address=StgCmtSCP --entries=java:/jms/queue/StgCmtSCP
[standalone@localhost:9990 /] jms-queue add --queue-address=MPPSSCU --entries=java:/jms/queue/MPPSSCU
[standalone@localhost:9990 /] jms-queue add --queue-address=IANSCU --entries=java:/jms/queue/IANSCU
[standalone@localhost:9990 /] jms-queue add --queue-address=Export1 --entries=java:/jms/queue/Export1
[standalone@localhost:9990 /] jms-queue add --queue-address=Export2 --entries=java:/jms/queue/Export2
[standalone@localhost:9990 /] jms-queue add --queue-address=Export3 --entries=java:/jms/queue/Export3
这个也有CLI 脚本 $DCM4CHEE_ARC/cli/add-jms-queues.cli 提供,里面含有命令行,
我们只需执行:
> $WILDFLY_HOME/bin/jboss-cli.sh -c -f DCM4CHEE_ARC/cli/add-jms-queues.cli
7.12 使用JBoss CLI 调整 managed-executor-services 配置
[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)
7.13 使用 JBoss CLI 通过system property 指定一个不同的 Device Name
DCM4CHEE Archive 5.x 默认的Device Name是dcm4chee-arc,在LDAP Server中有配置,可以通过system property指定一个不同的Device Name(此步骤也可以不执行)
[standalone@localhost:9999 /] /system-property=dcm4chee-arc.DeviceName:add(value=<device-name>)
7.14 使用JBoss CLI 部署 DCM4CHEE Archive 5.x
7.14.1 部署
[standalone@localhost:9999 /] deploy $DCM4CHEE_ARC/deploy/dcm4chee-arc-ear-5.x-psql.ear
Verify that DCM4CHEE Archive was deployed and started successfully, e.g.:
11:00:38,511 INFO [org.jboss.as.server.deployment] (MSC service thread 1-2) WFLYSRV0027: Starting deployment of "dcm4chee-arc-ear-5.x-psql.ear" (runtime-name: "dcm4chee-arc-ear-5.x-psql.ear")
:
11:00:42,742 INFO [org.dcm4che3.net.Connection] (EE-ManagedExecutorService-default-Thread-1) Start TCP Listener on /0.0.0.0:11112
11:00:42,811 INFO [org.dcm4che3.net.Connection] (EE-ManagedExecutorService-default-Thread-2) Start TCP Listener on /0.0.0.0:2762
11:00:42,811 INFO [org.dcm4che3.net.Connection] (EE-ManagedExecutorService-default-Thread-3) Start TCP Listener on /0.0.0.0:2575
11:00:42,813 INFO [org.dcm4che3.net.Connection] (EE-ManagedExecutorService-default-Thread-4) Start TCP Listener on /0.0.0.0:12575
11:00:43,095 INFO [org.wildfly.extension.undertow] (ServerService Thread Pool -- 20) WFLYUT0021: Registered web context: /dcm4chee-arc
11:00:43,095 INFO [org.wildfly.extension.undertow] (ServerService Thread Pool -- 23) WFLYUT0021: Registered web context: /dcm4chee-arc/ui
11:00:43,157 INFO [org.jboss.as.server] (management-handler-thread - 3) WFLYSRV0010: Deployed "dcm4chee-arc-ear-5.x-SNAPSHOT-psql.ear" (runtime-name : "dcm4chee-arc-ear-5.x-SNAPSHOT-psql.ear")
7.14.2 Verify that the Web UI is accessible at
http://localhost:8080/dcm4chee-arc/ui.
7.14.3 You may undeploy DCM4CHEE Archive at any time using JBoss CLI, e.g.:
[standalone@localhost:9999 /] undeploy dcm4chee-arc-ear-5.x-psql.ear
11:05:23,905 INFO [org.wildfly.extension.undertow] (ServerService Thread Pool -- 75) WFLYUT0022: Unregistered web context: /dcm4chee-arc
11:05:23,906 INFO [org.wildfly.extension.undertow] (ServerService Thread Pool -- 80) WFLYUT0022: Unregistered web context: /dcm4chee-arc/ui
11:05:23,912 INFO [org.dcm4che3.net.Connection] (EE-ManagedExecutorService-default-Thread-1) Stop TCP Listener on /0.0.0.0:11112
11:05:23,912 INFO [org.dcm4che3.net.Connection] (EE-ManagedExecutorService-default-Thread-2) Stop TCP Listener on /0.0.0.0:2762
11:05:23,915 INFO [org.dcm4che3.net.Connection] (EE-ManagedExecutorService-default-Thread-4) Stop TCP Listener on /0.0.0.0:12575
11:05:23,915 INFO [org.dcm4che3.net.Connection] (EE-ManagedExecutorService-default-Thread-3) Stop TCP Listener on /0.0.0.0:2575
:
11:05:24,023 INFO [org.jboss.as.server] (management-handler-thread - 8) WFLYSRV0009: Undeployed "dcm4chee-arc-ear-5.x-psql.ear" (runtime-name: "dcm4chee-arc-ear-5.x-psql.ear")
到这里 dcm4chee-arc-light-5.4.1 安装完成!