Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 42 Next »

Date:

Author:

Version:

Changes:

Completed

Ext.

Int.

Is in Core

Jira Ref.

0.1

Doc. created

Yes/No

x

 

N/A

 

14/04-2016Anders Granau Høfft0.2Sections expandedNox N/ACDRRM-733
11 May 2016Emil Ifrim0.3Database configurationNox 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:

  1. 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.
  2. Optional: Add a build section to the newly created pom wherein an alternative output directory is specified for the war + an alternative name.
  3. Add the pom to a subfolder of the folder containing the projects main pom.
  4. 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.
  5. 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.

  1. Retrieve the rator-selfcare-rest-api .war file (either from Jenkins/Nexus, see Resources, or by building the .war yourself, see Build).
  2. Copy the war file to the Tomcat webapps directory and (re-)start the Tomcat application.
  3. Retrieve the swagger-ui dist folder (either from Github, or from our own repositories, see Resources. Or by building the project yourself, see Build).
  4. Copy the dist folder to the Tomcat webapps directory and (re-)start the Tomcat application. You probably want to rename the dist folder to swagger-ui
    1. Nb This can be a different Tomcat installation than in step 2, or the same.
  5. In your browser, enter the URL "http://<Swagger server and port>/<base-path>/?url=http://<REST server and port>/<base-path>/api/swagger.json". 
  6. You should now see a list of the resources available on the REST server.

 

Compatibility matrix
rator-selfcare-rest-apSwagger UI
1.02.1.1

Database setup

  1. Run table_changes.sql
  2. 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 client
    Insert 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 client
    Insert 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:

  1. 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.
  2. 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.
  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

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

  1. Check out the source code (See the Resources paragraph above)
  2. Create the artifact: mvn clean package
  3. 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:

  1. Check out the source code (See the Resources paragraph above.)
  2. npm install
  3. gulp
  4. You should see the distribution under the dist folder. Open ./dist/index.html to launch Swagger UI in a browser

 

 

 

  • No labels