DICOM:开源DICOM服务框架DCM4CHE 构建

背景:

前一篇博文DICOM:开源DICOM服务框架DCM4CHE 安装中介绍了一款开源DICOM服务框架DCM4CHE,对于开源项目学习的流程是先下载二进制可执行包安装,然后使用测试。在熟悉了大致的功能服务后,从官网下载源代码进行本地构建(Build),进而从根本上了解开源项目的底层框架设计,为后续修复、扩展做准备。本博文是继DCM4CHE安装后的续篇,讲解如何在本地构建DCM4CHE开源项目,文中尽量做到全面,但是由于刚开始接触J2EE领域,且多半都是自学,因此博文中还留有部分未解问题,如有熟悉的博友还望不吝赐教。

构建环境搭建:

DICOM:开源DICOM服务框架DCM4CHE 安装所述,dcm4chee整体包含多个模块,各模块编译、连接会用到各种第三方工具。因此在构建dcm4chee之前需要下载并安装所需的工具,现总结各工具包配置表如下,

工具 版本 下载链接 安装 配置 备注
Ant 最新版 http://ant.apache.org/ 下载安装包后,直接解压到同一安装路径下即可,例如本机路径设置为:
c:\dcm4chee\thirdlibrary\apache-ant-1.9.3
要想在系统中运行ant,需要进行环境变量配置。例如本机Win7 64位系统环境变量配置方式为:
1)右键“计算机”
2)选择“属性”
3)选择“高级系统设置”
4)高级标签页,选择“环境变量”
5)系统变量栏目下,“新建”,输入:
变量名:ANT_HOME
变量值:c:\dcm4chee\thirdlibrary\apache-ant-1.9.3.
最后确定即可。

编辑Path变量,添加%ANT_HOME%\bin
在设置环境变量时需要注意:ANT_HOME变量值最后不能有“\"(Windows系统),或者"/"(Unix/Linux系统)。
XDoclet 最新版 http://xdoclet.sourceforge.net/xdoclet/install.html 下载安装包后,直接解压到同一安装路径下即可,例如本机路径设置为:
c:\dcm4chee\thirdlibrary\xdoclet-1.2.3
ApacheFOP 0.95 http://www.apache.org/dyn/closer.cgi/xmlgraphics/fop http://xmlgraphics.apache.org/fop/quickstartguide.html
官方文档中提到了Download、Install、Configuration等步骤,这里只需要下载二进制安装包,解压即可,本机目录为:
c:\dcm4chee\thirdlibrary\fop-0.95
按照上述步骤添加FOP_HOME环境变量,
变量名:FOP_HOME
变量值:
c:\dcm4chee\thirdlibrary\fop-0.95
编辑Path变量,添加%FOP_HOME%\bin
1)目前Apache FOP官方镜像网站很难找到FOP0.95老版本,可在CSDN中下载:
http://download.csdn.net/detail/wssmao/663634
2)同上,FOP_HOME变量值中最后不能附带”/"或"\"
Jakarta Cactus 最新版 http://archive.apache.org/dist/jakarta/cactus/binaries/ 直接解压到指定路径即可,
c:\dcm4chee\thirdlibrary\cactus-1.8.0-bin
添加环境变量,
变量名:CACTUS_HOME
变量值:
c:\dcm4chee\thirdlibrary\cactus-1.8.0-bin
编辑Path变量,添加%CACTUS_HOME%\bin
cactus只在编译dcm4jboss-ejb测试用例时使用过,构建dcm4chee过程中其实用不到。
JBoss 4.2.3GA http://sourceforge.net/projects/jboss/files/JBoss/JBoss-4.2.3.GA/ 直接解压缩,例如本机目录
c:\dcm4chee\thirdlibrary\ jboss-4.2.3.GA
设置环境变量,
变量名:JBOSS_HOME
变量值:
c:\dcm4chee\thirdlibrary\ jboss-4.2.3.GA
编辑Path变量,添加%JBOSS_HOME%\bin
dcm4chee是托管在JBoss AS应用服务器中的应用,因此run.bat脚本需要依赖于JBoss运行时文件,在后续具体构建过程中需要运行install_jboss.bat(Windows系统)或install_jboss.sh(Unix/Linux系统)
Maven 最新版 http://maven.apache.org/download.cgi 直接解压,例如本机目录
c:\dcm4chee\thirdlibrary\apache-maven-2.2.1
设置环境变量
变量名:M2_HOME
变量值:
c:\dcm4chee\thirdlibrary\apache-maven-2.2.1
变量名:M2
变量值:%M2_HOME%\bin
编辑Path变量,添加%M2%
 
dcm4che14 1.4 svn checkout svn://svn.code.sf.net/p/dcm4che/svn/ dcm4che-svn
最好现在dcm4che14源码,在本机进行构建    
JDK SE 6 http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase6-419409.html 双击运行。 设置环境变量,
变量名:JAVA_HOME
变量值:C:\Program Files\Java\jdk1.6.0_45,默认安装路径。
编辑Path变量,添加%JAVA_HOME%\bin
 

【备注1】:按照官方文档的建议,将上述第三方工具统一安装部署到同一文件夹下,方便管理和配置。例如本文中我设置的统一安装路径为:c:\dcm4chee\thirdlibrary。路径中不能有空格,否则会引起JDK异常。

【备注2】:在修改Path变量时要注意两个问题,第一两个不同的路径之间用英文半角“;”隔开;第二,各个环境变量结尾处同样不应有"\"或"/"

构建开始:

【注意事项】:dcm4chee和maven的配置文件中都会依赖于${user.home},例如在dcm4chee顶级目录中存在Build.property配置文件,maven中conf目录下的setting.xml文件,两者其中都存在${user.home},在windows系统下为了避免出现问题,最简单的方式就是讲两者统一设置成绝对路径。搜索dcm4jboss-all目录下所有文件,包含${user.home}的文件有16个,总共出现67次该变量。

DICOM:开源DICOM服务框架DCM4CHE 构建_第1张图片

(1)构建dcm4che14:

正如准备环境中的备注所述,dcm4che14不能用Java7进行构建。【注】:具体原因是dcm4che14中使用的dcm2jpg实例用到了com.sun.image.codec.jpeg包,该包在JDK6中开始弃用,到JDK7就完全剥离了。所以无法使用Java7编译,只能使用JDK5或JDK6。一种解决方案就是用JAI ImageIO重写dcm2jpg工具。

(2)构建dcm4chee-arr:

计入dcm4chee-arr,输入mvn install -Ddb=mysql.(mvn install -Ddb=<database>,database应该替换成自己选择的数据库,例如我的是mysql)

【官方说明指出】:第一次构建dcm4chee-arr时会提示失败,缺少avax.transaction./jta/1.0.1B/jta-1.0.1B.jar包,一种折中解决方法是先编译dcm4chee-web,然后再编译dcm4chee-arr,因为dcm4chee-web中会下载avax.transaction./jta/1.0.1B/jta-1.0.1B.jar包。

【对于Mysql类型的dcm4chee-arr】:在创建arrdb时会失败,尤其是对于MySQL5.5,因为构建脚本ddl中的type=语法已经被弃用,应该改成engine=。修改的文件位置是:dcm4chee-arr/dcm4chee-arr-entities/target/hibernate3/sql/dcm4chee-arr-mysql.ddl

在具体安装过程中,经过多次测试dcm4chee-arr模块编译时并未出现过任何错误。

(3)构建dcm4chee-audit:

进入dcm4chee-audit目录下,输入mvn install即可编译通过。

(4)构建dcm4chee-docstore

进入dcm4chee-docstore,输入mvn install即可编译通过。

(5)构建dcm4chee-xds-infoset

进入dcm4chee-xds-infoset,输入mvn install即可编译通过。

(6)构建dcm4chee-web

进入dcm4chee-web,输入mvn -Pall -Ddb=mysql install

【备注1】:dcm4chee-web模块依赖于dcm4chee-arc3-entities, dcm4chee-icons, dcm4chee-web-common, dcm4chee-dashboard, dcm4chee-usr五个模块,要确保以上五个模块与dcm4chee-web目录处在同一目录下。

【备注2】:dcm4chee-web在真实编译过程中会弹出格式各样的错误,诸如缺少jar文件,如下图所示:

DICOM:开源DICOM服务框架DCM4CHE 构建_第2张图片

【解决方案】:对于该类错误的解决方案如下,手动从http://www.dcm4che.org/maven2/下载相应的jar、sar包,手动安装到mvn本地库中。(可以利用mvn install:install-file命令行参数或者直接在.ms\repository\下建立对应目录直接将包拷贝进入即可)。

【备注3】:在解决了缺少依赖包的错误后,又会出现编译错误。如下图所示:

DICOM:开源DICOM服务框架DCM4CHE 构建_第3张图片

【解决方案】:对于该类错误,经过了几个周末的尝试我还未找到解决方案。在官方说明文档详细版中有如下提示,

DICOM:开源DICOM服务框架DCM4CHE 构建_第4张图片

如果dcm4chee-web未构建成功,后续的dcm4jboss-all中的dcm4jboss-sar模块无法通过编译,会出现下文中提到的错误。上图中的提示指出,可以进入dcm4chee-web-dist子目录构建单独的dcm4chee-web包文件,确保后续的dcm4jboss-all能够顺利通过。

(7)构建dcm4chee-jboss-all

dcm4chee-jboss-all目录下有多级子目录,包括:dcm4jboss-build, dcm4jboss-ejb, dcm4jboss-hl7, dcm4jboss-rid, dcm4jboss-sar, dcm4jboss-wado, and dcm4jboss-web。所有该目录下的工程需要使用Ant进行构建,dcm4jboss-build中不包含任何Java源代码,只是起到启动Ant编译的作用,该目录下的是整个dcm4jboss-all的主构建脚本。

【官方说明】:Ant在构建时会搜索两个属性文件,即dcm4jboss-all\build.properties以及dcm4jboss-all\各级子目录\build.properties,第一个属性文件对所有子文件有效。在配置该类属性文档时,主要是告知Ant各种工具包的目录,以及版本号,注意即使使用的是JDK6,也保留配置文档中的javac.source和javac.target为1.5.

为了更清楚的说明(6)和(7)两部分的关系,以表格形式列出其各子模块之间的关系。

项目 依赖 各模块描述
dcm4chee-web dcm4chee-arc3-entities
dcm4chee-icons
dcm4chee-web-common
dcm4chee-dashboard
dcm4chee-user
dcm4chee JPA Entities,JPA含义见:
http://baike.baidu.com/link?url=_PwwR8guVIFgzY14DvavTJ6jMrTHNZoX-G0j59H4sk_O6ot_6nj1iouXl1WAGZayulE2xjuKbshTS0avBvLZ7K
一种通过JDK5或XML注解描述对象-关系表的映射,并将运行时对象持久化到数据库的技术。
dcm4chee-icons:Icon theme for dcm4chee application modules
dcm4chee-web-common:web应用的工具集合
dcm4chee-dashboard:报表
dcm4jboss dcm4chee-arr
dcm4chee-audit
dcm4chee-docstore
dcm4chee-xds-infoset
dcm4chee-arr:audit record repository
dcm4chee-audit:Audit Logger,
  • - dcm4che-audit-logger : JMX Service for emitting DICOM Supp95 Audit Trail  Messages, and
  • - dcm4che-audit-login : JAAS login module emitting User Authentication message



dcm4chee-docstore:Generic Document Storage
dcm4chee-xds-infoset:Infoset classes for XDS,将Java中的注释信息自动转换成配置文档之类的。

【备注1】:按照官方说明,在构建dcm4jboss-all时,会出现如下错误,

DICOM:开源DICOM服务框架DCM4CHE 构建_第5张图片

该错误是由于缺少CAStorSDK-1.3.1-CS40.jar包所致。

【解决方案】:该类错误是由于安装第三方依赖库时错误操作所致。如【构建环境搭建】中说述,诸如ant、maven等工具直接解压到指定目录下即可。并不会用到解压前的jar包文件。但是对于像CAStorSDK、jsch、jcifs三个工具来说需要在该目录下保留相应的jar文件,构建dcm4jboss-all下的dcm4jboss-sar时才能成功。修改完成后,本地构建成功会出现如下图结果:

DICOM:开源DICOM服务框架DCM4CHE 构建_第6张图片

至此,本地构建dcm4chee的工作顺利完成,当然在构建dcm4chee-web模块时还有部分问题有待进一步研究。

未完待续……

(PS:补充提交图片,之前的图好像挂掉了,2015-04-17)

作者:[email protected]

时间:2015-03-28


你可能感兴趣的:(DICOM,dcm4che,dcm4chee)