Skip to content

Administration_Installation

Florian Fehring edited this page Apr 15, 2025 · 5 revisions

Installationsvoraussetzungen

  • Postgres-Datenbankserver (ab Version 11.x)
  • Java17
  • Payara WebServer (Version 6.x)
  • Mind. 20 MB Speicherplatz (Anwendung)
  • 1 GB RAM
  • 900 MHz

Einfache Installation

  1. Datenbank anlegen
    1. Datenbanknutzer anlegen (Sichern Sie jede Datenbank mit einem eigenen Benutzer und Passwort. SmartData akzeptiert keine default und root Datenbanknutzer)
    2. Datenbank und Schema auf dem DB-Server anlegen
    3. Tabellen anlegen
  2. Anlegen eines Connection-Pools im Payara
    1. Der postgres jdbc Treiber muss im Payara installiert sein
    2. Payara Admin-Oberfläche öffnen (http://localhost:4848)
    3. Unter Resources / JDBC / JDBC Connection Pools auf "new" klicken
    4. Pool-Namen eingeben (z.B. SmartData)
    5. Connection-Type: javax.sql.ConnectionPoolDataSource
    6. Databasevendor: postgresql
    7. Auf next klicken
    8. Die Datenbankzugangsdaten in die entsprechenden Felder eintragen
  3. Anlegen einer Ressource "jdbc/SmartData", welche auf den Connection-Pool verweist
    1. Unter Resources / JDBC / JDBC Resources auf "new" klicken
    2. JNDI-Name: "jdbc/SmartData" (oder ein anderer, siehe dazu Hinweise unten)
    3. Pool-Name: Den zuvor angelegten auswählen
  4. Deploy der SmartData.war
    1. Über Applications dann auf Deploy klicken und die .war-Datei auswählen
    2. Prüfen Sie über http://localhost:8080/SmartData die Verfügbarkeit, unter dem Abschnitt "Tabellen" sehen Sie, welche Tabellen die API erkennt.
  5. Konfiguration (optional)
    1. Erstellen Sie eine Konfigurationsdatei für weitere Optionen.

Problembehebung

Ich kann eine oder mehrere Tabellen nicht über die API abfragen

Prüfe, ob die Tabellen die erforderlichen Berechtigungen haben. Der Datenbankbenutzer, der in der JDBC Resource eingestellt ist, muss Zugriffsrechte auf die Tabellen und ggf. übergeordnete Elemente wie Schemata besitzen.

Ich habe ein Problem, dass hier nicht aufgeführt ist

Schreibe eine Mail an florian.fehring@hsbi.de, um weitere Hilfe zu bekommen.

Installation zusätzlicher Instanzen

Zusätzliche Instanzen können über das Deployen der Anwendung unter einem anderen Anwendungsnamen angelegt werden. Die zusätzlichen Instanzen können denselben Connection-Pool verwenden, oder einen anderen. Soll ein anderer Connection-Pool verwendet werden, ist eine Konfigurationsdatei notwendig.

Siehe auch:

Einrichten der Datenbank

Grundsätzlich kann SmartData mit jeder postgre-Datenbank verwendet werden, ohne dass eine spezielle Konfiguration der Datenbank notwendig ist.

Hinweise für die Verwendung von Geodaten

Soll mit Geodatentypen in der Datenbank gearbeitet werden, ist Folgendes zu beachten:

  • Die postgis-Erweiterung muss im Schema "public" installiert werden

Datenbankseitige Skripte

Die Datenbank kann um weitere Funktionen zur Information externer Anwendungen erweitert werden. Diese Erweiterungen sind optional. Dafür müssen die folgenden Skripte auf er Datenbank ausgeführt werden:

Hinweise:

  • SCHEMANAME jeweils durch den Namen des Schemas austauschen
  • Die Funktionen werden derzeit noch nicht durch SmartData genutzt, aber die OpenDataApp benötigt diese

Information bei Datenänderungen

CREATE OR REPLACE FUNCTION SCHEMANAME.datachanged()
 RETURNS trigger
 LANGUAGE plpgsql
AS $function$
BEGIN
  PERFORM pg_notify('smartdata_datachanged', TG_TABLE_NAME);
  RETURN NEW;
END;
$function$
;

Information bei gelöschter Tabelle

CREATE OR REPLACE FUNCTION SCHEMANAME.deletetable()
 RETURNS trigger
 LANGUAGE plpgsql
AS $function$
BEGIN
  PERFORM pg_notify('smartdata_tabledeleted', row_to_json(OLD)::text);
  RETURN OLD;
END;
$function$
;

Information bei neuer Tabelle

CREATE OR REPLACE FUNCTION SCHEMANAME.newtable()
 RETURNS trigger
 LANGUAGE plpgsql
AS $function$
BEGIN
  PERFORM pg_notify('smartdata_tablecreated', row_to_json(NEW)::text);
  RETURN NEW;
END;
$function$
;

Information bei geänderter Tabelle

CREATE OR REPLACE FUNCTION SCHEMANAME.updatetable()
 RETURNS trigger
 LANGUAGE plpgsql
AS $function$
BEGIN
  PERFORM pg_notify('smartdata_tablechanged', row_to_json(NEW)::text);
  RETURN NEW;
END;
$function$
;

Clone this wiki locally