Cloud Installation and Configuration
Cloud Installation and Configuration
they do.
1. Add a file system to the NEARLINE storage group
1. Open a web browser, and navigate to the JMX console.
e.g. http://localhost:8080/jmx-console
2. Locate the dcm4chee.archive section, and click on
group=NEARLINE_STORAGE,service=FileSystemMgt
3. Scroll down to the List of MBean Operations section and find the
addRWFileSystem() operation. Enter in a path for nearline storage. This will
not actually be used, since we are going to store the files in S3, but we need
to configure something here so that the system knows we are using the
NEARLINE storage. I have entered: tar:/storage/nearline. Note the tar prefix.
This tells dcm4chee that all of the files going to this storage group will be
tarred up.
4. Click Invoke to create add the file system record into the database.
2. Configure the FileCopy service
The FileCopy service is responsible for physically copying files to your nearline
storage. This is where we configure our particular plugin.
1. Specify a value for the DestinationFileSystem. This value should equal the
value you specified for your nearline storage file system so that dcm4chee
knows that this FileCopy service is associated with that file system
configuration. e.g. tar:/storage/nearline
2. Specify a value for HSMModulServicename. This should be the JMX
ObjectName of our S3 plugin module, and enables it for use within this
service when storing and retrieving files. Enter:
dcm4chee.archive:service=FileCopyHSMModule,type=S3
3. Leave the FileStatus set to TO_ARCHIVE. This will be the status of files stored
in S3. When the SyncFileStatus service runs and verifies that these files are
stored properly, it will change the status to ARCHIVED.
4. Click Apply Changes.
3. Configure the TarRetriever service
This service is responsible for fetching and extracting tar files from the nearline
storage during retrieve requests.
1. Specify a value for HSMModulServicename. This should be the JMX
ObjectName of our S3 plugin module, and enables it for use within this
service when storing and retrieving files. Enter:
dcm4chee.archive:service=FileCopyHSMModule,type=S3
2. Click Apply Changes.
4. Configure the S3 HSMModule (service=FileCopyHSMModule,type=S3)
Now we are ready to configure the S3 integration. Here are the main things to
configure here:
1. Amazon S3 bucket name
2. Amazon AWS Access Key
3. Amazon AWS Secret Key (this is write only, and you will not see a value after
clicking Apply Changes)
4. The Outgoing and Incoming directories in this configuration are temporary
storage areas that are used for tarring and untarring files.
5. Click Apply Changes.
5. Configure the SyncFileStatus service
This service will run periodically and verify the files that have been stored to S3. It
will fetch the tar files and ensure that the correct files are contained within. Once it
verifies the files, it will update the file status in the database to ARCHIVED.
1. Specify a value for the MonitoredFileSystem. This value should equal the
value you specified for your nearline storage file system so that dcm4chee
knows that this service is associated with that file system configuration. e.g.
tar:/storage/nearline
2. Specify a value for HSMModulServicename. This should be the JMX
ObjectName of our S3 plugin module, and enables it for use within this
service when fetching tar files. Enter:
dcm4chee.archive:service=FileCopyHSMModule,type=S3
3. Specify a TaskInterval. It is set to NEVER by default, so you you should set it
to a proper interval that is good for your workflow, preferably not during peak
business hours.
Summary
At this point you should be able to store DICOM objects to dcm4chee and it will archive
them to Amazon S3. The S3 key will be a hierarchical path, which should look familiar to
you if you have looked at how dcm4chee stores objects on a file system. For example, here
is a screenshot of my Amazon Management Console showing the archived path:
In the database, the files should have a changed file status, and should reflect their tar
path as shown in this screenshot:
Note the tar designator in the path. This tells the system that the file is contained within
a tar file.
Note that this is only an example. Your retention/deletion requirements may differ!
1. Configure deletion of ONLINE studies
1. Open a web browser, and navigate to the JMX console.
e.g. http://localhost:8080/jmx-console
2. Locate the dcm4chee.archive section, and click on
group=ONLINE_STORAGE,service=FileSystemMgt
3. Set DeleteStudyIfNotAccessedFor = your retention period (52w or whatever
your SLA requires)
4. Set DeleteStudyOnlyIfStorageNotCommited = false
5. Set DeleteStudyOnlyIfCopyOnMedia = false
6. Set DeleteStudyOnlyIfCopyOnReadOnlyFileSystem = false
7. Set ScheduleStudiesForDeletionInterval = a reasonable time interval for the
system to check the database and schedule deletion jobs.
8. Set DeleteStudyOnlyIfCopyOnFileSystemOfFileSystemGroup =
NEARLINE_STORAGE
9. Set DeleteStudyOnlyIfCopyArchived = true (only delete studies that have been
verified by the SyncFileStatus service. If you dont care about that or are not
running that service, you can set this false.)
10.Click Apply Changes
At this point, dcm4chee will look for studies in ONLINE that meet these criteria and
schedule them for deletion. After they are deleted, and the only copy is on S3, a retrieve
request will trigger a fetch from Amazon. The tar file(s) will be fetched, images extracted
and sent to the destination.
Thats it!
Added by Damien Evans, last edited by Jan Pechanec on May 04, 2011 (view change)
DCM4CHEE will work with PostgreSQL 8.x. You may download the database software
from http://www.postgresql.org/
PostgreSQL 9.x
To use PostgreSQL 9.x - it is necessary to upgrade your Postgres driver in
<DCM4CHEE_HOME>/server/default/lib to the 9.0 version:
Set permissions on Postgres database. The following setting will trust only connections
from the localhost, which is reasonable for a development machine, but may need to be
changed for production.
$PGDATA/pg_hba.conf:
# IPv4 local connections:
host all all 127.0.0.1/32 trust
Initiate the archive database instance: pacsdb using create DDL script dcm4chee-psql-
2.13.6/sql/create.psql
> export PGUSER=postgres
> createdb pacsdb
> psql pacsdb -f dcm4chee-psql-2.13.6/sql/create.psql
In this case, before you create the database (in step 7 above), create a tablespace.
1. Create a directory on the desired file system to hold the dcm4chee data files.
File System Permissions
Ensure that the postgres Service User has full control of the created directory, with
regards to Windows (or other operating system) Security/Permissions for the folder.
2. Right click on Tablespaces
3. Select New Tablespace for the database.
4. The tablespace location should be the directory you just created, and the owner
should be postgres (or other user if you're using a non-default user id for dcm4chee
database access). Name the tablespace dcm4chee.
5. Specify this tablespace when you create the dcm4chee database (see step 7
above).
Tuning
Your mileage may vary on this, as every installation is different. I have had success with
these parameters in some installations. Again, keep in mind that tuning is very specific to
the usage of the archive.
The following table lists some modifications that may be made to the default Postgres
settings.
VERSION: 8.3.1
Defaul
Property dcm4chee
t
autovacuum on on
maintenance_work_me
16MB 64MB
m
checkpoint_segments 3 10
128M
effective_cache_size 512MB
B
Related Content:
http://www.kaltenbrunner.cc/blog/index.php?/archives/21-8.3-vs.-8.2-a-simple-
benchmark.html
http://www.powerpostgresql.com/PerfList
ySql 5.5+
The file create.mysql contains SQL instructions that populate the database with empty tables.
Until this bug is fixed, create.mysql must be edited before it can be used with MySql 5.5+.
The tables will be created automatically when the audit record repository first starts up.
If you're using a different database name, user name, etc., you'll need to update this file.
You should also optimize the database configuration in my.cnf or my.ini. See Getting Started with MySQL, Using
Option Files, and this post
You will find similar (but not as detailed) installation documentation in the doc directory of
your dcm4chee distribution.
Supported Databases
Need to install separately.
PostgreSQL 8.1+
MySQL 4.1+
Oracle 9i+
SQL Server 2000+
DB2 8.1+
Firebird 2.1+
Hypersonic SQL (Embedded in JBoss AS) - not suitable for production use!
Compression Notes
For image compression/decompression, dcm4chee utilizes Sun's Java Advanced Imaging
Image I/O Tools 1.1.
The binary distribution packages of dcm4chee already includes necessary JARs and
native libraries for Windows and Linux i586.
For Linux-amd64, and Solaris, you have to download the SW package from
Sun here yourself and replace the Linux version of libclib_jiio.so in dcm4chee-2.17.1-
xxx/bin/native from the JAI Image IO package for Linux-amd64 or Solaris. Or see this
post for a more recent version.
If you have already installed (or are installing) the JAI Image IO distribution
from http://download.java.net/media/jai-imageio/builds/release/1.1/ separate from
dcm4chee in a standalone or classpath fashion, you should remove the following
files, or potentially suffer from version conflicts:
$DCM4CHEE_HOME/server/default/lib/jai_imageio.jar
$DCM4CHEE_HOME/server/default/lib/clibwrapper_jiio.jar
$DCM4CHEE_HOME/bin/native/clib_jiio.dll
$DCM4CHEE_HOME/bin/native/clib_jiio_sse2.dll
$DCM4CHEE_HOME/bin/native/clib_jiio_util.dll
$DCM4CHEE_HOME/bin/native/libclib_jiio.so
For Mac OSX and 64 bit Java on Windows there is no free, native Image I/O
implementation available. Because of the missing implementations you have to
change a file in dcm4chee if you want to have the WADO service running. Please
have a look at step 8 to see how to change the file (or modify the settings via the
JMX console). See also:
http://java.net/jira/browse/JAI_IMAGEIO_CORE-103
http://java.net/jira/browse/JAI_IMAGEIO_CORE-62
FYI - You can run on 64-bit Windows, you just need to use the 32-bit JDK! In that
case you do not need to do the above steps of changing the WADO service.
I want to clarify the big misunderstanding about the Java imageio library included in
dcm4chee and Weasis. I understand that the compression issue with imageio is confusing.
The imageio lib is used for reading and writing the different image formats (image
compression). It contains a pure java part (jai_imageio.jar) and a native part (set in
$DCM4CHEE_HOME/bin/native/). The native part only exist for the following operating
systems:
Windows 32-bit
Linux x86 32 and 64-bit
Solaris (all processors)
Thanks to Sun and Oracle for this limitation, but that's not all, some encoders and
decoders are exclusively available in the native part. That means NOT available in
the pure java part. Here are these TSUIDs:
1.2.840.10008.1.2.4.51 JPEG Extended (Process 2 & 4): Default Transfer Syntax for
Lossy JPEG 12 Bit Image Compression (Process 4 only)
1.2.840.10008.1.2.4.57 JPEG Lossless, Non-Hierarchical (Process 14)
1.2.840.10008.1.2.4.70 JPEG Lossless, Non-Hierarchical, First-Order Prediction
(Process 14 [Selection Value 1]): Default Transfer Syntax for Lossless JPEG Image
Compression
1.2.840.10008.1.2.4.80 JPEG-LS Lossless Image Compression
1.2.840.10008.1.2.4.81 JPEG-LS Lossy (Near-Lossless) Image Compression
And some codecs exist in the pure Java library but have a different implementation
in the native library (the native implementation is used by default when available):
1.2.840.10008.1.2.4.50 JPEG Baseline (Process 1): Default Transfer Syntax for Lossy
JPEG 8 Bit Image Compression
1.2.840.10008.1.2.4.90 JPEG 2000 Image Compression (Lossless Only)
1.2.840.10008.1.2.4.91 JPEG 2000 Image Compression
About dcm4chee:
That's why it is recommended to install dcm4chee on Linux, Solaris or Windows
(also with windows 64-bit but only with a 32-bit Java Runtime). Otherwise, the
dcm4chee services won't be able to compress or uncompress some DICOM files.
One of the mandatory requirement (WADO spec) of a WADO service is to uncompress
any DICOM file. The latter requirement cannot be totally fulfilled if you install
dcm4chee on OS X.
We provide on the Osirix website this document which recommends to install
dcm4chee on Linux and to use the jpeg2000 compression (if you want to compress
all the images stored in dcm4chee).
About Weasis:
In the table of [Platform Compatibility of DICOM Transfer
Syntax|../../../../../../../../../display/WEA/Dicom+Conformance] you can see the
compatibility related to the list above. This compatibility is true ONLY when Weasis
loads files from a local storage (not WADO). When downloading images with the
WADO service of dcm4chee that contain native imageio library, ALL the images can
be read on ALL operating systems, because Weasis (in recent version) is able to
request the WADO server for an uncompressed syntax (see [WEA-
73|../../../../../../../../../../jira/browse/WEA-73]) when the syntax is not supported by the
operating system running Weasis.
I'm working to provide a real multiplatform Java wrapping of jpeg, jpeg-ls and
jpeg2000 but I progress slowly because my time is very limited for doing that. The
implementation is limited to the Weasis use.
Hope it helps
Installation Procedure:
1. Download and extract the binary distribution package of
dcm4chee:
Download the latest version of dcm4chee that is relevant to the database of your choice
from the dcm4che Sourceforge site . Extract the package (e.g. dcm4chee-2.17.1-psql.zip for
the PostgreSQL version). When extracting, avoid using a directory that has a name that
contains spaces in order to avoid issues with running command line applications with
spaces in the path name.
2. Download the binary distribution package of JBoss Application
Server 4.2.3.GA:
Download the binary distribution of JBoss 4.2.3.GA from their website and extract it into a
different directory.
If you want to use JDK 5, don't download JBoss for JDK 6 (jboss-4.2.3.GA-jdk6.zip) - use
jboss-4.2.3.GA.zip!
dcm4chee requires Java Development Kit (JDK) and not just the Java Runtime
Environment (JRE).
For example:
C:\apps\dcm4chee-2.17.1-psql\bin>install_jboss.bat c:\apps\jboss-4.2.3.GA
If you're not sure what an environment variable is, check with your IT staff or review this
wikipedia page and/or consult the documentation for your operating system.
Linux/Unix/OSX: dcm4chee-2.17.1-xxx/bin/run.conf
# Specify options to pass to the Java VM.
if [ "x$JAVA_OPTS" = "x" ]; then
JAVA_OPTS="-Xms128m -Xmx512m -XX:MaxPermSize=128m ..
fi
according available RAM and memory requirements of other processes on this node.
E.g.: if only 512 MB RAM are available, you should decrease the default value -Xmx512m to
(e.g.) -Xmx300.
8. Mac OSX and Windows x64 specific changes for the WADO service:
Because there are no native codecs (compression/decompression) for these platforms, it
is necessary to edit configuration to disable the loading of the native codecs. These
platforms are not able to take advantage of compression/decompression. The only default
loading of the codecs is in the WADO service. You can either edit the property within the
JMX Console web user interface (see step 11), or edit the configuration files directly:
Change com.sun.media.imageioimpl.plugins.jpeg.CLibJPEGImageWriter to
com.sun.image.codec.jpeg.JPEGImageEncoder for the ImageWriterClass:
$DCM4CHEE_HOME/server/default/conf/xmdesc/dcm4chee-wado-xmbean.xml:
@@ -122,7 +122,7 @@
<name>ImageWriterClass</name>
<type>java.lang.String</type>
<descriptors>
- <value value="com.sun.media.imageioimpl.plugins.jpeg.CLibJPEGImageWriter" />
+ <value value="com.sun.image.codec.jpeg.JPEGImageEncoder" />
</descriptors>
</attribute>
JBOSS_HOME: /home/gunter/dcm4chee-2.17.1-psql
JAVA: /usr/lib/j2sdk1.5-sun/bin/java
CLASSPATH: /home/gunter/dcm4chee-2.17.1-psql/bin/run.jar:
/usr/lib/j2sdk1.5-sun/lib/tools.jar
=========================================================================
23:17:52,373 INFO [Server] Starting JBoss (MX MicroKernel)...
23:17:52,374 INFO [Server] Release ID: JBoss [Trinity] 4.2.3.GA (build:
SVNTag=JBoss_4_2_3_GA date=200807181439)
:
23:19:49,580 INFO [AjpProtocol] Starting Coyote AJP/1.3 on ajp-127.0.0.1-8009
23:19:49,632 INFO [Server] JBoss (MX MicroKernel) [4.2.3.GA (build:
SVNTag=JBoss_4_2_3_GA date=200807181439)] Started in 1m:57s:103ms
The directory used for caching generated PDF representations of archived Structured
Report Documents requested by IHE Retrieve Information for Display (RID) Services can be
specified by modifying BASE_DIR=docstore/rid/store in file conf/dcm4chee-
docstore/dcm4chee-docstore-cfg.xml (this file will not exists before processing the first
RID request).
By default, JBoss does not bind to anything except the local address. Use
run -b 0.0.0.0
to allow running generic access.
Expand one study row to show contained series. Expand one of these series to show
contained instances. In the case of images, you can follow the image icon on the right, to
invoke a http WADO request for a JPEG presentation of this image, which will be displayed
in a separate browser window.
You also need to configure an additional Application Entity Title identifying this Move
Destination. Do so in the "AE Management" tab within the Web user interface.
E.g. new AET
AE Title: DCMRCV
Hostname: localhost
Port: 11113
Switch back to the Study List ("Folder"), mark studies to retrieve using the check box on
the right, select "DCMRCV" as send destination in the combo box above and click on the
send button left from it.
Windows:
install it as Windows service executing install_service.bat (see Running dcm4chee
PACS as a Windows service or daemon)
aditional notes:
to adjust maximum allocation of heap memory - you need to edit
install_service.bat (not run.bat)
for 64-bit Windows download JavaService version 2.0.7.64
from http://javaservice.objectweb.org and replace file bin/JavaService.exe
if your service fails while starting ("Service could not be started") and you are
using JDK 6:
1. check your your Windows Event Log - if there are messages like "The
specified module could not be found.", "Failed creating java ...\jvm.dll" -
continue with next step
2. try to add %JAVA_HOME%\bin to the system PATH environment variable,
so java could find file mscvr71.dll (for details
see https://issues.apache.org/bugzilla/show_bug.cgi?id=41538 and http:/
/www.duckware.com/tech/java6msvcr71.html)
many versions of Windows need to be restarted after modifying environment
variables (like JAVA_HOME and PATH)
Labels
installation
windows
Page: DB2
Page: Firebird
Page: Hypersonic SQL
Page: Microsoft SQL Server
Page: MySQL
Page: Oracle
Page: PostgreSQL
Comments (5)
Hide Comments
Collapse All
1. Oct 12, 2011
Nikhil says:
Do not use MySQL 5.5 my SQL 5.5 does not have support for TYPE in Create table w...
Do not use MySQL 5.5 my SQL 5.5 does not have support for TYPE in Create table which
causes arrdb startup to fail. MySQL 5.1 worked for me.
P
ermalink
Jul 17, 2012
Mark Messer says:
You can use the latest MySQL. The problem is the MySQL syntax for Create Table c...
This means you must modify the MySQL script that creates the tables.
Open dcm4chee-arr-3.0.11-mysql\sql\dcm4chee-arr-mysql.ddl in a text editor.
Find all occurrences of type=
Replace them with engine=
P
ermalink
It allows attackers to use the jmxconsole to use your server to attack other servers.
___________________________________________________________________________
<security-constraint>
<web-resource-collection>
<web-resource-name>HtmlAdaptor</web-resource-name>
<description>
An example security config that only allows users with the role
JBossAdmin to access the HTML JMX console web application
</description>
<url-pattern>/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>JBossAdmin</role-name>
</auth-constraint>
</security-constraint>
___________________________________________________________________________
___________________________________________________________________________
<security-constraint>
<web-resource-collection>
<web-resource-name>HtmlAdaptor</web-resource-name>
<description>
An example security config that only allows users with the role
JBossAdmin to access the HTML JMX console web application
</description>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>JBossAdmin</role-name>
</auth-constraint>
</security-constraint>
___________________________________________________________________________
https://access.redhat.com/kb/docs/DOC-30741
P
ermalink
Jul 09, 2012
Ben Rexwinkel says:
I'm not really sure if this also needs to be done, but the original source also ...
I'm not really sure if this also needs to be done, but the original source also states
removing or commenting these lines in the
file <dcm4chee>/server/default/deploy/management/console-mgr.sar/web-
console.war/WEB-INF/web.xml
Anyway, the file stated by Raj seems to be properly modified in dcm4chee 2.17.1
P
ermalink
After updating the default AE Title in (optional) step 12, I had problems retrieving images
from dcm4chee as well as not being able to echo other entities from the web-interface.
The following solves those problems:
NOTE: this only works if you add these lines before invoking updateAETitle(). If you
already changed the AE Title as in step 12 above, you'll need to manually change the AE
Title in the four sections mentioned (under dcm4chee.web).
See the forum for the full thread: fleetwoodfc in "dcm4chee 2.17.1 studies export
problem"
P
ermalink
4.