Dieses Repository ist ein Ergebnis des Projekts "Maschinenlesbare Bereitstellung von Pflanzenschutzmittelzulassungsdaten für die Anwendung im Precision Farming" von Tech4Germany. Es beschreibt die Installation von einer Infrastruktur, an der die Pflanzenschutzmittel-Datenbank mit einer Schnittstelle (API) des BVL selbst aufgesetzt werden kann und diese mit Unit-Tests überprüft werden kann. Ferner können die Unit-Tests auch genutzt werden, um die in Zukunft vom BVL zur Verfügung gestellte API zu testen.
Dieses Projekt hat daher zwei Anwendungsfälle:
- Das Aufsetzen einer REST Schnittstelle mittels ORDS auf der Pflanzenschutzmitteldatenbank des BVL.
- Das Testen der REST Schnittstelle mithilfe von Unit Tests.
Das BVL übernimmt keinerlei Haftungen und steht in keinem Zusammenhang zu diesem Repository.
- Dumpfile der Zulassungsdaten psm.dmp
- Centos7
- Oracle 12c
- ORDS 20.2
- Tomcat 9
- Apache2
- fail2ban
Dieser Abschnitt beschreibt die Skripte, welche während eines Deployments ausgeführt werden.
Für eine Dokumentation der einzelnen aufgerufenen Methoden, wie ORDS.define_module()
und ORDS.define_handler()
siehe die ORDS Dokumentation.
Skript: ords_disable_schema.sql
Für den Fall, dass bereits ein Datenbankschema für ORDS aktiviert ist, muss dieses erst deaktiviert werden bevor es wieder aktiviert werden kann. Dafür muss nur das Skript auf dem betroffenen Schema ausgeführt werden.
Skript: ords_enable_schema.sql
Um ORDS auf einzelnen Tabellen aktivieren zu können, muss zunächst das Schema, dem die Tabellen zugehören, aktiviert werden. Dazu kann dieses Skript auf dem betroffenen Schema ausgeführt werden.
Skript: ords_define_psm_service.sql
Mit diesem SQL Skript wird ein ORDS API Endpunkt auf allen 40 vorhandenen BVL-DB Tabellen aktiviert. Dafür wird zu Beginn ein Module definiert, dem dann Templates und Handler für jede einzelne Tabelle hinzugefügt werden. In den p_comments Argumenten steht zusätzlich für jeden Endpunkt eine Beschreibung der Tabelle/des Endpunkts und der Parameter.
In Eclipse wird das TestNG Plugin benötigt.
Checklist:
- Domain bzw. Subdomain vorhanden
- Server bzw. virtuelle Maschine vorhanden
- Oracle ist installiert (siehe: Installation Oracle)
- ORDS ist installiert und konfiguriert (siehe: ORDS)
- Swagger-UI läuft (optional) (siehe: Swagger-UI Setup).
Zur Installationsanleitung für Oracle: Installation Oracle
Skript: create_user_and_roles.sql
/***********************************************************************
Erstellt den Benutzer "psm" sowie eine Rolle mit Berechtigungen
für den import und eine readOnly Rolle
***********************************************************************/
-- Benutzer psm anlegen
CREATE USER psm IDENTIFIED BY yourPassword;
-- Benutzer psm die Berechtigung für unlimited tablespace geben
GRANT UNLIMITED TABLESPACE TO psm;
-- rolle für den import inkl. der notwendigen Berechtigungen erstellen
CREATE ROLE psm_imp;
GRANT CONNECT, CREATE SESSION, IMP_FULL_DATABASE TO psm_imp;
-- die import rolle dem Benutzer psm zuweisen
GRANT psm_imp TO psm;
-- rolle mit readOnly Berechtigung erstellen
CREATE ROLE PSM_READONLY;
GRANT CONNECT, CREATE SESSION TO PSM_READONLY;
-- die readOnly Rolle den Benutzer psm zuweisen
GRANT PSM_READONLY TO PSM;
/***********************************************************************
Um auf readOnly Berchtigungen umzustellen,
wird die unlimited tablespace Berechtigung dem Benutzer psm entzogen,
und die Zuweisung der import rolle entfernt.
***********************************************************************/
--REVOKE UNLIMITED TABLESPACE FROM psm;
--REVOKE psm_imp FROM psm;
Dumpfile psm.dmp
imp psm/yourPassword file="psm.dmp" full=y;
Installationsanleitung für Tomcat 9
Anschließend können die Deployment Skripte ausgeführt werden.
Apache 2 und Swagger UI.
SSL Zertifikate für Apache2 und Tomcat mit LetsEncrypt.
Konfigurationsbeispiele für Request Limits und einfachen Schutz vor DoS Attacken mit fail2ban.
Kurze Beschreibung der RestAssured und Postman Tests.
Zur Generierung von Java Klassen kann Telosys verwendet werden. Bereits generierte Klassen sind im Ordner dto zu finden. Alle Dto Klassen wurden mit einer angepassten Version des java-doman-T300 Templates erzeugt. Von uns verwendete Templates für die Code Genrierung liegen im Ordner codegen. Die Code Generierung erfolgt auf dem Datenbankschema, auf dem die Schnittstelle aufbaut.