Overview
Documents setting up code, config, and data in a development environment using Eclipse.
Prerequisites
- Git client
- Java 8 installed
- Mysql 5.6 installed
- Maven 3.2.+ installed
- Tomcat 8+ installed and configured (or Jetty 9+)
- Eclipse
- Use version 4.4 (Luna) - J2EE edition
- m2e (the maven integration for eclipse - download from the market place)
- m2e-egit connector
- eGit - http://eclipse.github.com/
- Jautodoc - import configuration from Code and XML Formatting in Eclipse
- ObjectAid UML Diagram tool for class hierarchy visualization.
- Installed via Help->Install New Software. Instructions athttp://www.objectaid.net/installation
- FindBugs (static code analysis)
- AngularJS - see https://github.com/angelozerr/angularjs-eclipse/wiki/Getting-Started
Details
Step 1 - Create directories
Setup for Windows
- Create a directory to hold your data files (e.g. c:/refset/data)
- Create a directory to hold your config files (e.g. c:/refset/config)
- Create a directory to hold the code (e.g. c:/workspace/ihtsdo-refset-tool)
- Make sure the "mvn" executable for your local maven installation is in the path
- On Windows this means adding to the PATH variable so that it runs in a "cmd" shell without fully qualified path.
Setup for Unix/Linux/Mac
- Create a directory to hold your data files (e.g. ~/data)
- Create a directory to hold your config files (e.g. ~/config)
- Create a directory to hold the code (e.g. ~/code)
- Make sure the "mvn" executable for your local maven installation is in the path
Step 2 - Clone repository
Clone the Github repository to the directory created to hold the code.
Step 3 - Build project
Build all project modules with "mvn clean install" at the top level - either through Eclipse or via the command line.
- NOTE: this uses the standard "dev-windows" configuration. To use a different configuration artifact pass the following three parameters (this is not commonly needed):
- -Dconfig.groupId=...
- -Dconfig.artifactId=...
- -Dconfig.version=...
- For most dev deployments, the default build is fine because the only setting really used for the rest/webapp packages is the "base.url" which by default is set to http://localhost:8080/refset-rest
- For a production deployment, you would want to use a different setting. For example, see Deploy Instructions (TBD) for the prod deployment instructions.
Step 4 - Setup Configuration
Choose a "dev-windows" or "prod" config project target and unzip it into the directory created to hold your config files.
- config/dev-windows/target/refset-config-dev-windows.*.zip (e.g. unzip to c:/refset/config)
- config/prod/target/refset-config-prod.*.zip (e.g. unzip to ~/refset/config)
Unzip the config/target/refset-config.*.zip file into the directory created to hold your data files (these are the sample data artifacts). For example, unzip to c:/refset/data when building a dev environment on Windows.
Step 5 - Edit configuration
Edit the "config.properties" file in your config files directory to set correctly for your environment. In particular, edit these:
- javax.persistence.jdbc.url
- javax.persistence.jdbc.user
- javax.persistence.jdbc.password
- hibernate.search.default.indexBase ( recommend choosing something in your data dir, e.g. c:/refset/data/indexes or ~/refset/indexes)
- mail.smtp.to (list for automated system emails)
Step 6 - Create database
Create a MySQL UTF8 database. e.g.
- CREATE database refsetdb CHARACTER SET utf8 default collate utf8_unicode_ci;
Step 7 - Generate sample data
Run the admin tool for generating sample data. Here is a sample command line invocation that clears the database and indexes, then loads the sample data. It assumes the config.properties file has been properly edited as described above.
# from top-level code directory cd admin mvn install -PSample -Drefset.config=/home/ihtsdo/config/config.properties -Dmode=create >&! mvn.log
Following is a sample Eclipse run configuration for the same thing.
Step 8 - Deploy application, Launch Server
Deploy the refset-rest.war file to a Tomcat server - either through Eclipse or a standalone tomcat installation. NOTE: It should also be deployable to a simple Jetty container as an alternative.
Setting up Tomcat in Eclipse is very easy, you follow these steps.
- Download and install apache tomcat 8 (or higher) in c:/apache-tomcat-XXXX
- In Eclipse use the J2EE perspective and click on the "Servers" tab.
- From here, you can add a server which simply involves pointing Eclipse to the install directory for Tomcat.
- You can right-click on refset-rest.war file and use "Run As->Run on Server" to deploy to Tomcat.
The Tomcat server needs to be able to find the run configuration. Double-click on the Tomcat server you installed, open the launch configuration and add this setting:
-Drefset.config=c:/refset/config/config.properties
Setting up Jetty in Eclipse is also very easy. Follow these steps:
- Install the "Jetty Eclipse" plugin from the Eclipse marketplace
- Create a "Jetty Webapp" run configuration
- Choose the "context path" (e.g. /umls-term-server).
In the "Arguments" tab, specify your run.config.umls setting as a VM argument, e.g.:
-Drefset.config=c:/refset/config/config.properties
- Launch the run configuration to star the server.
- See screenshots for Jetty/Eclipse configuration
Step 9 - Test application
Check that it all works by going to
http: //localhost:8080/refset-rest/index.html |
This should be a demo app that contains a basic terminology browser and (in the header) a link to a "swagger" Api documenting the service calls available. You should be able to log in to either the application or the Swagger services by authenticating with "guest" username and "guest" password.
NOTE: in the Eclipse dev environment, the swagger API does not load properly because Eclipse m2e is unable to handle the maven plugin executions that handle the interpolation of ${base.url} in the swagger files. Building and deploying the actual umls-server-rest.war file is needed for this to work properly.
Step 10 - Run the Examples
See the examples project for some sample code on using the REST APIs in a variety of different ways. You can run the examples against the standard dev database load through Maven.
cd /path/to/examples/ mvn install -DskipTests=false -Drefset.config=/path/to/config.properties
NOTE: the examples require the server to be running, they do not access the database directly.