wiki:CaTissue HowTo Build & Deploying CaTissue from the source code?

CaTissue HowTo Build & Deploying CaTissue from the source code

Tags: CaTissue OpenSpecimen

1) Download caTissue suite from caTissue site (https://gforge.nci.nih.gov/frs/?group_id=689) named with caTissue v1.2 installable
2) Once you have downloaded the caTISSUE_SUITE_v12_Installable_Pack.zip, extract the contents of the file to any directory.
This folder contains two additional compressed files; caTissue_Suite_v1.2_Installable and caTissue_Suite_API_Client_v1.2_Installable
3) Unzip the caTissue_Suite_v1.2_Installable.zip, extract the contents of the file to any directory.
4) Unzip the caTissue_Suite_API_Client_v1.2_Installable.zip, extract the contents of the file to any directory.
5) In the installation folder caTissueInstall.properties is the Property file in which all the application configuration parameters are listed, we need to change it according to our local environment
6) In the installation folder build.xml is ANT script used to deploy the application on a JBoss server. This also creates the database schema for Oracle or MySQL.
7) In the installation folder SQL folder containing SQL scripts required for deployment
8) In the installation folder modules folder containing various caTissue modules
9) JBoss version should be 4.2.3 GA and Mysql version should be 5.0.45
10) In order to prevent lower case problem in ubuntu mysql you have to set set lower_case_table_names=1 in your /etc/mysql/my.cnf file.
11) Once above step is done shutdown the mysql server and restart it.
12) Before starting deployment make sure that jboss shouldn't be running.
13) Create the database first (eg: catissuecore) in mysql before starting of the building the application, as shown below,

Drop DATABASE if exists catissuecore;

CREATE DATABASE catissuecore;

GRANT ALL PRIVILEGES ON catissuecore.* TO 'root'@'localhost' IDENTIFIED BY 'root' WITH GRANT OPTION;

GRANT ALL PRIVILEGES ON catissuecore.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;

USE mysql;

UPDATE User SET File_priv = 'Y' where User='root';

FLUSH PRIVILEGES;

14) There seems to be a problem with a missing log4j.properties in the root config directory, so create an empty log4j.properties file in jboss-4.2.3.GA/server/default/catissuecore-properties
15) /usr/local/jboss/server/default/lib> mv hibernate3.jar hibernate3.jar.bak
16) /usr/local/jboss/bin> pico run.conf # set the jboss configuration options, MaxPermGen etc as per the catissue deployment guide
17) Start deploying the catissue application using build.xml with the argument deploy_all, if you see any error while in deployment because of upgrade_metadata_cnstrProp.sql then uncomment ALTER TABLE DYEXTN_COLUMN_PROPERTIES TYPE = INNODB; and ALTER TABLE DYEXTN_CONSTRAINTKEY_PROP TYPE = INNODB; in the same file. Start redeploying the application.
18) If you see any errors in building the application, once you resolved the issues freshly build the application with the arguments clean_server and delete_files (delete the previously created dependencies). Once this is done then you build the application with deploy_all.
19) Once build is successful war file will be automatically deployed into your jboss, start the jboss server.
20) Once the JBoss server is started, you can access the application using a web browser. The following is the URL pattern used for the application: http://machine_name:port_number/catissuecore.[[BR]] 21) When the browser displays the home page of caTissue Suite, you can log on to the application by specifying the values which were configured in first.admin.emailAddress and first.admin.password of caTissueInstall.properties before deployment.

Following is the sample caTissueInstall.properties file



#Enter absolute path of the installed directory of JBoss server {JBOSS_HOME}.
#Please note that the path must be separated by Unix style path separator "/".
jboss.home.dir=/home/localadmin1/jboss-4.2.3.GA

#Please specify the server configuration name of jboss where you want to deploy.
#By default it is set to 'default' configuration. This is useful if someone wants
#to run multiple instances of suite application on same jboss.
jboss.server.name=default

#Enter server port on which JBoss is listing the client request
# Please do not specify the port number in case of an Apache Front ended server
#Default port is 8080
jboss.server.port=8080

#Hostname or IP address of the machine on which the JBoss server is running.
#CAUTION: This parameter should not be set to localhost. Set the actual hostname or IP address
jboss.server.host=localhost

#Enter yes/no to specify Secure HTTP connection
jboss.container.secure=

#database type permissible values: oracle or mysql
database.type=mysql

#Hostname or IP address of the machine on which the database server is running.
database.host=localhost

#Port number to connect with the database server
#Default port for MySQL : 3306
#Default Port for Oracle: 1521
database.port=3306

#Oracle TNS name, applicable only when database.type=oracle
oracle.tns.name=

database.name=catissuecore
database.username=root
database.password=root

#If CAS authentication server needs to be deployed on the
#same server as caTissue (specified by jboss.home.dir), then set this property to "true"
deploy.cas.on.catissue.jboss=true

#If cas.deploy is "false", then fill the following CAS related properties:
#Hostname or IP address of the machine on which the CAS server is running.
#CAUTION: This parameter should not be set to localhost. Set the actual hostname or IP address
cas.jboss.server.host=
cas.jboss.port=
#Enter yes/no to specify Secure HTTP connection for CAS
cas.jboss.container.secure=
#CAS is deployed on HTTPS server then Specify the .keystore file path of CAS server.
cas.server.keystore.path=

email.administrative.emailAddress=
email.sendEmailFrom.emailAddress=
email.mailServer=

# Option to use the common package's email handler on server exception. Values = [true|false]
# Default = [false]
use.email.commonpackage.config=false
# Send the exception email to e-addresses. Can have comma seperated values.
email.sendEmailTo.emailAddress=
# Admin Email address. This would be included in case above entry is empty or invalid.
email.admin.support.emailAddress=
# Email-From Name.
email.sendEmailFrom.name=
# The subject line of the email.
email.exception.subject=System Exception Occured.

#Application login timeout interval in minutes.
#Default value is 30 minutes
session.timeout=30
#sets the addition info on home page
app.additional.info=

#Information related to first administrator account
first.admin.department=d
first.admin.institution=i
first.admin.cancerresearchgroup=c
first.admin.emailAddress=admin@…
first.admin.password=Login123

#Enter path for the MMTx home directory
caties.mmtx.home=

#Values for DE API
caCORE.jBoss.home.dir=
caCORE.project.name=

#Choose below option to associate dynamic extensions default clinical and pathology forms to the Collection Protocols.
#Choose false to show all clinical and pathology default annotations for data entry
#Choose true and edit the Show_Hide_Forms.xml present in the installable folder to associate selective forms to Collection Protocol for data entry
show.hide.forms.based.on.CPs=false

#URL needed for category creation.
Application.url=

#Set the location where caCore is generated
cacore.deployable.location=./cacore_deployable

#Comma separated Entity Groups which are to be excluded.
exclude.entitygroup=

#Comma separated Entity Groups which are only to be included.
include.entitygroup=

#Set the owner for the old saved queries prior to v1.2. Enter the login name of the user whom
#you want to make the owner.
saved.query.owner=

#CSM DATABASE CREDENTIALS
csm.database.type=
csm.database.host=
csm.database.port=
csm.database.name=
csm.database.username=
csm.database.password=


Update for CaTissue Plus deployed on LAMP servers

  1. The default version of Java installed on the LAMP v1 servers is OpenJDK 1.5 - this doesn't play well with JBoss. So we've additionally installed OpenJDK 1.7. This seems to work better, but requires that JBoss is started thus:

JAVA_HOME=/usr/java/jdk1.7.0_21/ /local/jboss/bin/run.sh -b 0.0.0.0 &

This doesn't need to be done as root.

on LAMP v2 servers, the default java is 1.7.0_21 so that should be OK.

  1. The end user accesses a 'load balancer' by means of an alias:

https://catissue-dev.lcbru.le.ac.uk

which routes the request to the server itself at www15.lamp.le.ac.uk:80 - this machine only has port 80 accessible, so Apache is listening on port 80 and using mod_proxy and mod_proxy_http to reverse proxy to port 8080 for JBoss to pick up the request.

From loadmodule.conf in the /local/apache2/etc directory:
# Proxy to divert to the JBoss Application Server
LoadModule proxy_module                   /usr/lib64/apache2-prefork/mod_proxy.so
LoadModule proxy_http_module               /usr/lib64/apache2-prefork/mod_proxy_http.so

From httpd.conf in the /local/apache2/etc directory:
# Proxy to provide access to the JBoss Application Server
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/

It works sufficiently to show the JBoss interface and the caTissue index page.

NOTE THAT THIS APPROACH HAS BEEN REPLACED WITH mod_jk AS PER KRISHAGNI RECOMMENDATIONS

The mod_jk approach requires:

  • mod_jk to be enabled in apache
  • a mod_jk.conf with configuration options: in /local/apache2/etc/mod.d/mod_jk.conf for our servers
  • a workers.properties with settings for the specific connection to jboss: in /local/apache2/etc/conf.d/workers.properties for our servers
  • a mod_jk_log (created automatically)
  • server.xml to define the jvmRoute to match the specified connection worker: in /local/jboss/server/default/deploy/jboss-web.deployer/server.xml for our servers
  1. Originally I tried with jboss.server.host set to 'lcbru-catissue-dev.rcs.le.ac.uk' - this caused infinite redirect loops, and is bad. It isn't clear what this config setting is used for, and if it is used for building page URLs then the full alias is needed. I've changed this now to the actual IP address of the server itself (but this will not work if supplied to a browser as a link to a resource). It is now possible to log in to CaTissue.
  1. There used to be an issue with flex / caused by the fact that https is used to connect to the load balancer, but the JBoss connection itself is not securely piped. That isn't a problem because it is all behind the firewall of the load balancer, but flex doesn't like it. The solution as documented on a number of websites is to edit WEB-INF/flex/services-config.xml:
I changed my-secure-amf definition in services-config.xml to use a SecureAMFChannel but point 
to a non-secure AMFEndpoint. A re-compile and deploy solved the issue. 

<channel-definition id="my-secure-amf" 
class="mx.messaging.channels.SecureAMFChannel"> 
             <endpoint 
url="https://{server.name}:{server.port}/{context.root}/messagebroker/am\ 
fsecure" class="flex.messaging.endpoints.AMFEndpoint"/> 
             <properties> 
                <add-no-cache-headers>false</add-no-cache-headers> 
             </properties> 
  </channel-definition> 

Then do a 'jar cvf catissuecore.war *' in the home directory of the unpacked files and copy the resulting war file into the jboss directories.

  1. Krishagni deployment notes

https://catissueplus.atlassian.net/wiki/display/CAT/Deploying+caTissue+Plus

Settings for caTissueInstall.properties on LAMP v2

jboss.home.dir=/local/jboss jboss.server.name=default jboss.server.port=8080 jboss.server.host=143.210.56.57 jboss.container.secure=no application.environment=LCBRU DEVELOPMENT email.mailServer=sendmail.le.ac.uk load.balancer.url=https://catissue-dev.lcbru.le.ac.uk/catissuecore

JBoss 5

CaTissuePlus v3.0 is configured to work with JBoss 5, which is preferable to 4.2.3

When using JBoss 5, remember to put the following the JBoss run.sh. Especially the last parameter in blue.

JAVA_OPTS="-Xms128m -Xmx1024m -XX:MaxPermSize=512m -Dorg.jboss.resolver.warning=true -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Dorg.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING=false"

Additionally, the security vulnerability (as below) must be addressed by deleting the admin console and the jmx console packages. We don't need them.

Comment out the LabelGenerator

By default CaTissue automatically assigns specimen labels and barcodes - this causes a problem with the API client. Following deployment of CaTissue, check that the jboss/server/default/catissuecore-properties/LabelGenerator.Properties file doesn't have the extra definitions which force barcode generation (i.e. comment out 'specimenLabelGeneratorClass' and 'specimenBarcodeGeneratorClass' and 'storageContainerLabelGeneratorClass') before running JBoss.

Update: Security vulnerability in JBoss

There is a known security vulnerability in JBoss, the JMX console to be precise, in certain versions of JBoss, including the one which CaTissue uses. It is imperative that when setting up JBoss on a server to deploy CaTissue, the JMX console is removed from the server, or patched as per http://java.dzone.com/articles/jboss-jmx-console

Using the 'BRISSkit' package for JBoss - stored in the LCBRU artifact repository at http://lcbru-data.rcs.le.ac.uk/jboss/jboss-4.2.3.GA-brisskit-development.zip - will ensure the JBoss jmx console is not installed. Alternatively delete from the server/default/deploy directory the directories which deliver the jmx console and the admin console.

Ant optional jar

Running 'ant deploy_all' on a LAMP v2 server, results in a 'BUILD FAILED' message, because the ant optional packages are not installed. Installing the optional jar for the relevant ant version and then calling the process as "CLASSPATH=/local/ant/ant-nodeps-1.7.0.jar ant deploy_all" is a solution.

Or, to re-deploy after config changes, use CLASSPATH=/local/ant/ant-nodeps-1.7.0.jar ant deploy_app

Home page image

CaTissuePlus includes the facility for a customised image on the home page.

We have created three different ones, as attached to this page.

Details of how to configure the image: https://catissueplus.atlassian.net/wiki/display/CAT/Configuration+To++Display+Institute+Logo+On+Home+Page

Note that this requires a re-deploy of the app, which then implies checking the LabelGenerator.properties and the log4j.properties files.

Error: Macro BackLinks(None) failed
'Environment' object has no attribute 'get_db_cnx'

Last modified 8 years ago Last modified on 05/09/15 14:22:55

Attachments (3)

Download all attachments as: .zip

Note: See TracWiki for help on using the wiki.