Date: | Author: | Version: | Changes: | Completed | Ext. | Int. | Is in Core | Jira Ref. |
---|---|---|---|---|---|---|---|---|
0.1 | Doc. created | Yes/No | x |
| N/A |
| ||
14/04-2016 | Anders Granau Høfft | 0.2 | Sections expanded | No | x | N/A | CDRRM-733 | |
11 May 2016 | Emil Ifrim | 0.3 | Database configuration | No | x | N/A |
Overview
This is a brief guide on how to install the REST service (rator-selfcare-rest-api project).
The document also describes how to deploy the third-party documentation service called Swagger UI. This is not required for the REST service to work, but provides useful documentation.
How to include the REST api in customer projects
This section is about how to modify the customer project's pom so as to include the selfcare-rest-api
in the build.
You will need to create a new pom and put it in a subfolder of your customer project. Follow these steps:
- Create a customer REST API module, i.e. a "wrapper pom" that specifies dependencies to A)
rator-selfcare-rest-api
and B) customer core branch containing customized logic. - Optional: Add a build section to the newly created pom wherein an alternative output directory is specified for the war + an alternative name.
- Add the pom to a subfolder of the folder containing the projects main pom.
- Add a reference to the created module in a module tag in the projects main pom. Fx:
<module>OisterREST/oister-selfcare-rest-api</module>
where the folder 'oister-selfcare-rest-api' contains the pom. - In a terminal, navigate to the folder of the project's main pom and type 'mvn package'. Verify that the expected wars and jars are created, among other the
selfcare-rest-api.war
.
Customer REST-api pom example
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.cdrator.projects.oister</groupId> <artifactId>oister-project</artifactId> <version>16.01</version> <relativePath>../../pom.xml</relativePath> </parent> <artifactId>oister-selfcare-rest-api</artifactId> <packaging>war</packaging> <name>Oister REST API Module</name> <description>Oister REST API Module Code</description> <!-- Dependencies for this module. --> <dependencies> <dependency> <groupId>${project.groupId}</groupId> <artifactId>oister-billing</artifactId> <version>${project.version}</version> <scope>runtime</scope> </dependency> <dependency> <groupId>com.cdrator</groupId> <artifactId>rator-selfcare-rest-api</artifactId> <version>0.0.1-SNAPSHOT</version> <scope>runtime</scope> <type>war</type> </dependency> </dependencies> <build> <finalName>REST-api</finalName> <plugins> <plugin> <artifactId>maven-war-plugin</artifactId> <configuration> <outputDirectory>${project.parent.build.directory}</outputDirectory> </configuration> </plugin> <plugin> <groupId>com.cdrator.maven.plugins</groupId> <artifactId>rator-maven-renamer-plugin</artifactId> </plugin> </plugins> </build> </project>
If the 'oister-selfcare-rest-api' pom above resides in a '/OisterREST/oister-selfcare-rest-api
' [relative to customer project's main pom] the we need to add the following to the Oister project's pom: <module>OisterREST/oister-selfcare-rest-api</module>
.
Now, when building the project, we also get the selfcare-rest-api war file constructed (and placed in the main target folder and named REST-api.war
).
Install Tomcat 7
A Tomcat must be installed on your environment.
Make sure to use Apache Tomcat version 7.X.X as version 8 and above does not respect class path order (which CDRator's code rely on)
Installation
If you are developing from Eclipse, and deploying to a local Tomcat installation, Eclipse automatically handles build and deployment. See fx the tomcat-section of this guide.
- Retrieve the
rator-selfcare-rest-api
.war file (either from Jenkins/Nexus, see Resources, or by building the .war yourself, see Build). - Copy the war file to the Tomcat webapps directory and (re-)start the Tomcat application.
- Retrieve the swagger-ui
dist
folder (either from Github, or from our own repositories, see Resources. Or by building the project yourself, see Build). - Copy the dist folder to the Tomcat
webapps
directory and (re-)start the Tomcat application. You probably want to rename thedist
folder toswagger-ui
.- Nb This can be a different Tomcat installation than in step 2, or the same.
- In your browser, enter the URL "http://<Swagger server and port>/<base-path>/?url=http://<REST server and port>/<base-path>/api/swagger.json".
- You should now see a list of the resources available on the REST server.
Compatibility matrix | |
rator-selfcare-rest-ap | Swagger UI |
---|---|
1.0 | 2.1.1 |
Database setup
- Run table_changes.sql
Configure REST api clients - who is allowed to get security tokens in order to access resources that require authentication/authorization. Here are some examples:
oauth2 selfcare clientInsert into OAUTH_CLIENT_DETAILS (CLIENT_ID, CLIENT_SECRET, SCOPE, AUTHORIZED_GRANT_TYPES, ACCESS_TOKEN_VALIDITY, REFRESH_TOKEN_VALIDITY) Values ('rator-selfcare-web-app', 'ratorselfcare', 'read,write', 'password', 600, 0);
Note: Swagger-ui client should only be used in development environments!
oauth2 swagger-ui clientInsert into OAUTH_CLIENT_DETAILS (CLIENT_ID, CLIENT_SECRET, SCOPE, AUTHORIZED_GRANT_TYPES, ACCESS_TOKEN_VALIDITY, AUTOAPPROVE) Values ('your-client-id', 'your-client-secret', 'read-write:api-doc', 'implicit', 600, 'true');
Verify deployment
In your browser, enter the URL:
http://<Swagger server and port>/<base-path>/?url=http://<REST server and port>/<base-path>/api/swagger.json
You should now see a list of the resources available on the REST server.
If both the Swagger UI and the REST application has been deployed to the same Tomcat, and if Tomcat's default "base path to web-app configuration" has not been overwritten, the URL to call may look like this:
http://localhost:8080/swagger-ui/?url=http://localhost:8080/rator-selfcare-rest-api/api/swagger.json
If you get an error response from the server, try pin pointing the problem:
- Verify that the Swagger UI service is available: Enter http://<Swagger server and port>/<base-path> in a browser. <base-path> will by "
swagger-ui"
if you have followed the installation steps and if the default Tomcat behavior has not been modified. If you get a 404 server error, see step 3. - Verify that the rator-selfcare-rest-api is available: Enter
http://<REST server and port>/<base-path>
. This should show you the index.html page, which is (currently) a (very) short text stating that you have reached the RESTful webservice. If you get a 404 error response from the server, see step 3. - Tomcat maps "base paths" to the web apps in your Tomcats
webapps
folder. The is called the context. Unless you specify otherwise, the base path is the name of the given web application's main folder. If you get a 404 error response from the server, you should investigate if Tomcat's default base path/context configuration has been overwritten, and with which values. This is general Tomcat configuration, and as such outside the scope of this documentation.
A brief remark on Tomcat's base path:
Your Tomcat installation's server.xml file will sometimes specify a base path for the REST project in a <context.../> tag.
<Context antiJARLocking="true" docBase="C:\Program Files\Tomcat\apache-tomcat-7.0.54\webapps\rator-selfcare-rest-api" path="" reloadable="true" source="org.eclipse.jst.jee.server:rator-selfcare-rest-api"/>
If the Tomcat's server.xml file had a <Context/> tag like the above, where the base path for the rator-selfcare-rest-api is set to the empty string, the project would be available at http://localhost:8080/api/<SOME RESOURCE>
.
When deploying from Eclipse, such entry might have been added automatically. Configuring the context in the server.xml seems to be discouraged by various online sources.
If 404 errors are returned from the server, when accessing the deployed services, you must either modify the base path, or modify the URL accordingly. If you are deploying from Eclipse, you may want to specify the base path on the modules subpane of the server pane.
Resources
Source code is available both in our SVN repository, in Jenkins and in Nexus (where our Jenkins build deploys to).
The artifacts to deploy (the REST application and Swagger UI) can either be produced manually from source code (see below - Installation guide), downloaded from Nexus, or retrieved from Jenkins.
SVN
- https://svn.cdrator.com/svn/dev/ui/rator-selfcare-rest-api
- https://svn.cdrator.com/svn/dev/rator-core-api
- https://svn.cdrator.com/svn/dev/thirdparty/swagger-ui
Please notice that the Swagger UI web service is not a Java project, but a collection of HTML, Javascript and CSS.
Jenkins
Jobs are set up to do continuous integration. The artifacts produced from a build are placed in the given job's "Workspace
" (Arbejdsområde
) page, in the folder "target
":
Nexus
Our Jenkins jobs are configured to deploy to Nexus. On Nexus, you can find both the source code and the artifacts produced from the build.
Build
This paragraph contains information about how to "manually" build the referenced projects from terminal (Mostly of interest to developers).
For information about how to include the selfcare-rest-api project in the customer project's build, see the section 'How to include the REST api in customer projects'.
You can build the artifacts yourself. Notice that the Swagger UI is not a Java project, for which reason its build procedure is different than the REST application.
rator-selfcare-rest-api
- Check out the source code (See the
Resources
paragraph above) - Create the artifact:
mvn clean package
- You should now have a
rator-selfcare-rest-api-<version>.war
file in the target folder.
Please notice that the REST project use Java 8 functionality. If your JAVA_HOME environment variable points to a jdk7, or below, you will get compile errors.
Since, in the time of writing, most other CDRator projects are compiled with jdk7, you might have your JAVA_HOME pointing to jdk7. In that case you need to change your JAVA_HOME. This can be done manually by Windows GUIs. In case you only want this change to be temporary, you can use the following convenience script (where you replace the path to jdk8 with your own installation):
@echo off set prev_java_home=%JAVA_HOME% set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_72 cmd /c mvn %* set JAVA_HOME=%prev_java_home%
Place the script in a file called, fx, mvn8.bat
and place the file in your apache-maven-<version>/bin
folder (where an mvn.bat
file should already be present). With this in place, the command in step 2 should be: mvn8 clean package
Developers working with the dependent project rator-core-api
, should likewise be aware that this is a Java 8 application.
Swagger UI
Refer to http://swagger.io/swagger-ui/, or follow the steps below.
Prerequisites:
- You have node.js installed, and thereby access to the tool
npm
(node package manager). If not, install node.js from https://nodejs.org/en/download/ (there is a .msi installer for windows). The installer will most likely automatically add the nodejs folder to the system environment so as to avoid needing to write the full path to the node.js executable. Similiarly, Gulp should be installed. See online guides.
In a command prompt assert a successfull install by writing "node -v" so as to output the version number.
Now, follow these steps to build the Swagger UI:
- Check out the source code (See the
Resources
paragraph above.) npm install
gulp
- You should see the distribution under the dist folder. Open
./dist/index.html
to launch Swagger UI in a browser