dcm4chee2.18.3 安装步骤及问题

一、系统环境
硬件环境:内存8G
操作系统:Windows10 Business 64bit
软件环境:
2、jboss:jboss-4.2.3.GA
4、dcm4che:dcm4che-3.3.7
5、Oviyam:Oviyam-2.7.1
二、安装步骤
1、安装JDK
    教程暂无,后续补充
2、安装MySQL
    教程暂无,后续补充
3、安装Jboos
    1)解压jboss-4.2.3.GA至D盘根目录
    2)配置JBOSS_HOME环境变量:JBOSS_HOME=D:\jboss-4.2.3.GA
    3)进入JBOSS -> bin目录下,运行下run.bat;提示以下信息
dcm4chee2-18-3-installation-question-01
    4)打开地址http://localhost:8080/,正常访问即启动成功

dcm4chee2-18-3-installation-question-02

4、安装dcm4chee
    1)解压dcm4chee-2.18.3-mysql安装包到某个目录
    2)把Dcm4chee-2.8.13源码的install_jboss.bat文件复制到dcm4chee-2.18.3-mysql\bin目录,这个是因为作者生成二进制包漏了这个批处理文件,(未找到Dcm4chee-2.8.13源码,用dcm4chee-2.18.1源码中install_jboss.bat亦可)
    3)运行Install_jboss.bat脚本
参数为JBOSS的安装目录,该脚本会把JBOSS复制到Dcm4chee的相应目录里, 命令如下:
D:\Dcm4chee\dcm4chee-2.18.3-mysql\bin>install_jboss.bat D:\jboss-4.2.3.GA
修改server/default/conf/xmdesc/dcm4chee-wado-xmbean.xml文件,找到ImageWriterClass属性,把value值改成com.sun.image.codec.jpeg.JPEGImageEncoder
    4)安装PACS数据库
mysql> create database pacsdb;
mysql> grant all on pacsdb.* to ‘pacs’@’localhost’ identified by ‘pacs’;
mysql> exitl
执行数据库初始化脚本, 位于sql目录
> mysql -upacs -ppacs pacsdb < dcm4chee-2.18.3-mysql/sql/create.mysql
这个执行过程需要大约2-3分钟,创建完成后,我们可以看到已经生成了各种表
    5)启动Dcm4Chee服务
进入bin目录,运行run.bat
    6)登录Dcm4Chee
账号: admin
密码:admin
    7)登录JMX管理界面,修改AET
打开浏览器登录 http://localhost:8080/jmx-console/
过滤 service=AE,点击 service=AE修改信息
dcm4chee2-18-3-installation-question-03
输入要修改的AET和新的AET,点击invoke
dcm4chee2-18-3-installation-question-04
修改成功后,再回到Dcm4Chee页面,点击Application Entities的Tab标签,可以看到AET已经更新
5、安装dcm4che工具
    8)测试图像存储功能
DCM4CHE将dcm4che-3.3.7\bin添加到环境变量中,就可以直接在命令行执行dcm4che的命令了,具体有哪些功能可参考 https://github.com/dcm4che/dcm4che其中,storescu与storescp用来接收和发送dicom文件,例如向DCM4CHEE传送dicom文件时,可在命令行输入:storescu -c MyAETE@localhost:11112 image.dcm,完成后就可以在MyAET的folder菜单下看到传送过来的病人信息、图像等
    多帧文件上传定位到目录即可 storescu -c MyAET@localhost:11112 AA06C935\F7154D95a
6、安装Oviyam
    1)部署Oviyam
解压Oviyam-2.7.1,将Oviyam-2.7.1-bin下的oviyam2.war文件,拷贝到dcm4chee-2.18.3-mysql\server\default\deploy\目录下即可。因为JBoss支持热部署,拷贝完成后,打开浏览器输入localhost:8088/oviyam2/即可打开Oviyam2登陆界面。
    2)配置Oviyam的DICOM服务
Oviyam2可以方便的与dcm4chee配合,进行相关数据可视化。登陆后单击界面右上角的“settings”即可打开DICOM节点配置页面,如下图所示,我这里的设置都是采用官方默认参数,也可以根据自己实际情况进行适当修改。Description 不要太长 AE Title最好不要修改 地址和端口可改。
dcm4chee2-18-3-installation-question-05
dcm4chee2-18-3-installation-question-06
至此配置环境完成 用Java上传DCM格式的文件测试了下效果如下,上传的文件点击Search就会显示在列表里
dcm4chee2-18-3-installation-question-07
双击你要打开的文件就能查看影像文件如下:
dcm4chee2-18-3-installation-question-08
三、问题总结
    1、JDK版本的选择(推荐JDK1.7.0.80 32bit)
我先用了JDK1.8 64bit安装Jboss1.7,结果Jboss1.7启动时,卡着不动,后改为JDK1.6 64bit,Jboss1.7启动成功;由于dcm4chee2.18.3 推荐使用jboss-4.2.3.GA,JDK更改为JDK1.6 32bit(dcm4chee2.18.3在Linux下支持JDK32/64,在windows仅支持JDK32,不支持JDK64);由于Oviyam-2.7.1最低需要jdk1.7 最终使用的JDK1.7.0.80(32bit);更郁闷的情况,由于其他项目需要,将开发环境切换至JDK1.8 64bit,后来再run.bat,dcm4chee功能未发现异常,Oviyam未发现异常
  2、Inspecting a bean in my JBOSS JMX Agent View fails with an error
This worked in jboss-4.2.3.GA: In file
/server/{xxx}/deploy/jmx-console.war/inspectMBean.jsp
replace the affected
replace(“\””,”&quot;”)
with
replaceAll(“\””,”&quot;”)
    3、执行jdbc查询时抛出异常:
Cannot execute statement: impossible to write to binary log since BINLOG_FORMAT = STATEMENT and at least one table uses a storage engine limited to row-based logging. InnoDB is limited to row-logging when transaction isolation level is READ COMMITTED or READ UNCOMMITTED.
原因:
This is required by MySQL:
Statement based binlogging does not work in isolation level
READ UNCOMMITTED and READ COMMITTED since the necessary
locks cannot be taken.
根据tomcat抛异常,提示是事务级别在read committed和read uncommitted的时候binlog必须设置为row格式。这个是java设置的一个局限性,java默认的事务级别是read committed,而mysql默认设置的binlog_format=statement。将binlog_format设置为mixed
将binlog_format设置row即可
途径(一)
set global binlog_format=row;
途径(二)
修改mysql配置文件my.ini 增加一行,重启mysql
binlog_format=row
查看结果命令:
show variables like ‘binlog_format’ 可以验证修改
4、Unsupported JPEG process: SOF type 0xc3
核心关键是安装jai_imageio库:
1.安装32位的JDK
2.将jai_imageio-1_0_01-lib-windows-i586-jdk 安装到32位JDK
3.切换java运行环境为32 位JDK
备注:按照dcm4chee官方安装说明文档,dcm4chee以及dcm4che2-tools在Linux32bits以及Linux64bits,以及Windows32bits可以顺利完成dcm压缩和解压缩,唯独Windows64bits环境不可,32位环境的问题。
5、遗留问题及后续方向
1)登录dcm4chee之后偶尔会有异常页面
dcm4chee2-18-3-installation-question-09
dcm4chee2-18-3-installation-question-10
2)源码部署dcm4chee2.18.3或2.18.1

解决aspnet中“Thread was being aborted.”

一、系统环境
开发环境
1、操作系统:Windows10 Business 64bit,内存8G
2、软件环境:Asp.Net4.0、IIS7.0、5.6.26-log MySQL Community Server
部署环境
1、操作系统:Windows7 Professional 32bit,内存:4G
2、软件环境:Asp.Net4.0、IIS7.0、5.6.26-log MySQL Community Server

二、问题描述
程序在[开发环境]正常运行
程序在[部署环境]中IIS配置可以正常访问aspx页面,无容器级别的BUG,但是在导出数据时,运行1~2min开始报以下错误:

[2018-10-16 14:25:08,694][7792][ERROR][JH.LDR.Web.Ajax.AjaxJsonBase]-HOST:::1,MAC:10-E7-C6-B3-29-E0,ERROR:Thread was being aborted.
[2018-10-16 14:25:09,077][7792][ERROR][JH.LDR.Web.Ajax.AjaxJsonBase]- at System.Array.Copy(Array sourceArray, Int32 sourceIndex, Array destinationArray, Int32 destinationIndex, Int32 length, Boolean reliable)
at System.Collections.Generic.List`1.set_Capacity(Int32 value)
at System.Collections.Generic.List`1.EnsureCapacity(Int32 min)
at System.Collections.Generic.List`1.Add(T item)
at System.Text.RegularExpressions.RegexNode.AddChild(RegexNode newChild)
at System.Text.RegularExpressions.RegexParser.ScanRegex()
at System.Text.RegularExpressions.RegexParser.Parse(String re, RegexOptions op)
at System.Text.RegularExpressions.Regex..ctor(String pattern, RegexOptions options, Boolean useCache)
at JH.LDR.Common.NPOIHelper.isNumeric(String message, Double&amp;amp; result)
at JH.LDR.Common.NPOIHelper.ExportDTI(DataTable dtSource, String strHeaderText, FileStream fs)
at JH.LDR.Common.NPOIHelper.ExportDTtoExcel(DataTable dtSource, String strHeaderText, String strFileName)
[2018-10-17 10:42:52,070][4556][ERROR][JH.LDR.Web.Ajax.AjaxJsonBase]-HOST:::1,MAC:10-E7-C6-B3-29-E0,ERROR:Thread was being aborted.
[2018-10-17 10:42:52,196][4556][ERROR][JH.LDR.Web.Ajax.AjaxJsonBase]- at System.Threading.Monitor.ReliableEnter(Object obj, Boolean&amp;amp; lockTaken)
[2018-10-19 10:48:54,433][3928][ERROR][JH.LDR.Web.Ajax.AjaxJsonBase]-HOST:::1,MAC:10-E7-C6-B3-29-E0,ERROR:Thread was being aborted.
[2018-10-19 10:48:54,796][3928][ERROR][JH.LDR.Web.Ajax.AjaxJsonBase]- at MyNetworkStream.HandleOrRethrowException(Exception e)

三、解决办法及思路
1、首先每次报错都有“ERROR:Thread was being aborted”,但细节错误不一样,起初认为是IIS内存不够导致,因为导出数据量较多;修改导出方案为分批次导出数据,报错依旧
2、修改IIS的虚拟内存使用情况及专用内存使用情况:1024*1024=1048576(KB),错误依旧
3、通过虚拟机模拟部署环境:可以正常导出。
操作系统:Windows7 Professional 32bit,内存:2G
软件环境:Asp.Net4.0、IIS7.0

4、Google“asp.net Thread was being aborted”找到参考资料[1]得到启发,根据参考资料[2]在web.cofnig配置<system.web>节点增加相关配置,成功导出数据
<system.web>
    <httpRuntime maxRequestLength="102400" executionTimeout="720" />
</system.web>
参考资料[3]中为页面跳转时错误,可以通过try,catch搞定;该程序未涉及,但网上转发较多
步骤如有遗漏,请多指教
四、参考资料
1、Why am i getting “Thread was being aborted” in asp.net?
2、如何设置ASP.NET页面的运行超时时间
3、Thread was being aborted 分析与解决