Aktuelle Anpassungen
This commit is contained in:
parent
edc2b5e15f
commit
2ec3b84090
5 changed files with 39 additions and 105 deletions
|
@ -2,11 +2,10 @@
|
||||||
\chapter{Konzept}
|
\chapter{Konzept}
|
||||||
\label{ch:concept}
|
\label{ch:concept}
|
||||||
|
|
||||||
Das folgende Kapitel enthält die im Rahmen dieser Arbeit entstandenen Konzepte, um die aktuellen Probleme aufzuzeigen.
|
Das folgende Kapitel enthält die im Rahmen dieser Arbeit entstandenen Konzepte, um die vorhanden Probleme zu
|
||||||
Hierbei sind verschiedene Vorgehen zu verwenden, da die Anwendung aktuell noch nicht als produktive Anwendung
|
identifizieren und mit entsprechenden Maßnahmen entgegenzusteuern. Hierbei werden zum einen die Konfigurationen
|
||||||
freigegeben ist. Zum einen werden die aktuelle Mitarbeiter befragt, zu anderen wird der Produktionsserver selbst
|
der eingesetzten Software überprüft. Zum anderen werden die verschiedenen Schichten der entwickelten Software
|
||||||
überprüft. Danach wird die Anwendung an sich untersucht und zum Schluss wird eine Neuentwicklung mit Hilfe anderer
|
auf mögliche Optimierungen untersucht und bewertet.
|
||||||
Frameworks diskutiert.
|
|
||||||
|
|
||||||
\section{Allgemeine Betrachtung des Systems}
|
\section{Allgemeine Betrachtung des Systems}
|
||||||
\label{sec:concept:viewsystem}
|
\label{sec:concept:viewsystem}
|
||||||
|
@ -29,7 +28,7 @@ Server an seiner Leistungsgrenze arbeitet und dadurch es nicht mehr schafft die
|
||||||
abzuarbeiten.
|
abzuarbeiten.
|
||||||
|
|
||||||
Da unter Linux der Arbeitsspeicher nicht mehr direkt freigegeben wird, ist hier die Page-Datei der wichtigere Indikator.
|
Da unter Linux der Arbeitsspeicher nicht mehr direkt freigegeben wird, ist hier die Page-Datei der wichtigere Indikator.
|
||||||
Wenn dieses in Verwendung ist, dann benötigt die aktuell laufenden Programme mehr Arbeitsspeicher als vorhanden ist,
|
Wenn dieses in Verwendung ist, dann benötigen die aktuell laufenden Programme mehr Arbeitsspeicher als vorhanden ist,
|
||||||
wodurch der aktuell nicht verwendete in die Page-Datei ausgelagert wird. Hierdurch erhöhen sich die Zugriffszeiten auf
|
wodurch der aktuell nicht verwendete in die Page-Datei ausgelagert wird. Hierdurch erhöhen sich die Zugriffszeiten auf
|
||||||
diese Elemente drastisch.
|
diese Elemente drastisch.
|
||||||
|
|
||||||
|
@ -42,7 +41,7 @@ zwischengespeichert werden kann und daher diese Daten immer wieder direkt von de
|
||||||
\label{sec:concept:softwarestructure}
|
\label{sec:concept:softwarestructure}
|
||||||
|
|
||||||
Bei der Performance-Untersuchung der Anwendung, wird sich im ersten Schritt auf die Dokumentenliste beschränkt. Anhand
|
Bei der Performance-Untersuchung der Anwendung, wird sich im ersten Schritt auf die Dokumentenliste beschränkt. Anhand
|
||||||
dieser können die Optimierungen getestet und überprüft werden. Im Nachgang können die daraus gewonnen Kenntnisse auf
|
dieser können die Optimierungen getestet und überprüft werden. Im Nachgang können die daraus gewonnenen Kenntnisse auf
|
||||||
die anderen Abfragen übertragen werden.
|
die anderen Abfragen übertragen werden.
|
||||||
|
|
||||||
Die Dokumentenliste zeigt direkte und indirekte Informationen zu einem Dokument an. Hierzu gehört die Kennung des
|
Die Dokumentenliste zeigt direkte und indirekte Informationen zu einem Dokument an. Hierzu gehört die Kennung des
|
||||||
|
@ -52,10 +51,10 @@ dem Schreibdatum sortiert, um die Ergebnisse bei gleichen Werten der zu sortiere
|
||||||
immer in einer chronologisch aufsteigenden Form zu darzustellen.
|
immer in einer chronologisch aufsteigenden Form zu darzustellen.
|
||||||
|
|
||||||
Aktuell verwenden die Editoren die Dokumentenliste um die Briefe eines Adressaten zu filtern und diese in
|
Aktuell verwenden die Editoren die Dokumentenliste um die Briefe eines Adressaten zu filtern und diese in
|
||||||
chronologische Reihenfolge aufzulisten und zu untersuchen wie Kommunikation zwischen den Wedekind und dem Adressat
|
chronologische Reihenfolge aufzulisten und zu untersuchen wie Kommunikation zwischen Herrn Wedekind und dem Adressaten
|
||||||
abgelaufen ist. Ebenso wird nach Standorten sortiert, um zu prüfen mit welchen Personen sich an den ...
|
abgelaufen ist. Ebenso wird nach Standorten sortiert, um zu prüfen mit welchen Personen sich an den ...
|
||||||
|
|
||||||
\mytodos{Hier noch mehr INfos dazu, für was genau die Editoren diese tun}
|
\mytodos{Hier noch mehr Infos dazu, für was genau die Editoren diese tun}
|
||||||
|
|
||||||
Da die Daten in der 3. Normalform in der Datenbank gespeichert werden, sind einige Relationen für die Abfragen
|
Da die Daten in der 3. Normalform in der Datenbank gespeichert werden, sind einige Relationen für die Abfragen
|
||||||
notwendig. Dies wird durch die generische Abfrage in \autoref{lst:documentlist} gezeigt. Zusätzlich wird für jedes
|
notwendig. Dies wird durch die generische Abfrage in \autoref{lst:documentlist} gezeigt. Zusätzlich wird für jedes
|
||||||
|
@ -109,96 +108,22 @@ Seite mit den Daten zu rendern um diese an den Client auszuliefern. Diese 2 Zeit
|
||||||
Seite mit dargestellt werden. Somit kann der Benutzer auch direkt sehen, wenn das laden länger gedauert hat, an welcher
|
Seite mit dargestellt werden. Somit kann der Benutzer auch direkt sehen, wenn das laden länger gedauert hat, an welcher
|
||||||
Stelle die Verzögerung aufgetreten ist.
|
Stelle die Verzögerung aufgetreten ist.
|
||||||
|
|
||||||
Zum Schluss soll die gesamte Anwendung noch automatisiert getestet werden. Hierfür wird ein Shell-Skript erstellt, dass
|
Die Abfragen werden ebenfalls untersucht und mit verschiedenen Methoden optimiert. Hierfür werden zum einen auf native
|
||||||
automatisiert alle URLs der Webseite mehrfach abfragt. Die Dauer der Aufrufe der Webseiten werden gemessen und
|
SQL"=Anfragen umgestellt und die Ausführungszeiten überprüft. Ebenfalls werden die Abfragen durch Criteria API erzeugt
|
||||||
|
und dessen Ausführungszeit ermittelt.
|
||||||
|
|
||||||
|
% https://www.tutorialspoint.com/jpa/jpa_jpql.htm
|
||||||
|
|
||||||
|
Zusätzlich werden im SQL-Server Optimierungen vorgenommen, darunter zählen die materialized views, welche eine erweiterte
|
||||||
|
View sind. Neben der Abfrage der Daten beinhalteten diese auch noch nicht vorberechneten Daten der Abfrage, womit diese
|
||||||
|
viel schneller abgefragt werden können. Zusätzlich werden die cached queries überprüft ob diese eine Verbesserung der
|
||||||
|
Performance und der Abfragedauern verkürzen können.
|
||||||
|
|
||||||
|
Um die Optimierungen in der Anwendung zu überprüfen, werden die Webseiten über ein Shell-Skript abgefragt. Das Skript
|
||||||
|
ruft automatisiert die URLs der Webseite mehrfach ab. Die Dauer der Aufrufe der Webseiten werden gemessen und
|
||||||
statistisch ausgewertet. Für einen späteren Vergleich werden diese Informationen gesichert und mit einem erneuten Aufruf
|
statistisch ausgewertet. Für einen späteren Vergleich werden diese Informationen gesichert und mit einem erneuten Aufruf
|
||||||
nach den Optimierungen verglichen. Hierdurch kann auch festgestellt werden, ob die Optimierungen erfolgreich waren.
|
nach den Optimierungen verglichen. Hierdurch kann auch festgestellt werden, ob die Optimierungen erfolgreich waren.
|
||||||
Um die Netzwerklatenz ignorieren zu können, wird das Skript auf dem gleichen Computer aufgerufen, auf dem die Webseite
|
Um die Netzwerklatenz ignorieren zu können, wird das Skript auf dem gleichen Computer aufgerufen, auf dem die Webseite
|
||||||
gestartet wurde.
|
gestartet wurde.
|
||||||
|
|
||||||
Das zugehörige Script ist im Anhang \ref{ap:timing} angehängt.
|
Das zugehörige Script ist im Anhang \ref{ap:timing} angehängt.
|
||||||
|
|
||||||
\section{Vergleich mit anderen Technologien}
|
|
||||||
\label{sec:concept:technologiecompare}
|
|
||||||
|
|
||||||
\mytodos{Noch tiefer eingehen?}
|
|
||||||
|
|
||||||
Damit eine Umsetzung auf eine andere Technologie umgestellt werden kann, muss dies den kompletten Technologie"=Stack
|
|
||||||
besitzen, wie dies von der \ac{JSF} unterstützt wird. Daher fallen reine FrontEnd"=Bibliotheken wie VueJS oder React aus
|
|
||||||
der Betrachtung heraus, da sie zusätzlich noch einen Backend für die Anwendungslogik (englisch business logic) benötigt.
|
|
||||||
|
|
||||||
\subsection{C\# - ASP.NET Core MVC}
|
|
||||||
\label{sec:concept:technologiecompare:aspnetcore}
|
|
||||||
|
|
||||||
Beim Vergleich zu \ac{JSF} steht ASP.NET Core MVC in nichts nach. Im großen und ganzen ist der Funktionsumfang der
|
|
||||||
gleiche und mit dem EntityFramework gibt es ebenfalls einen sehr mächtigen \ac{ORM}. Hierbei wird die Programmierung anhand
|
|
||||||
des \ac{MVC}"=Entwurfsmuster implementiert \citep{AspNetCore:2024:MVC}. Dieses Muster erleichtert die Trennung der
|
|
||||||
Benutzeranforderungen, welche durch die Controller mithilfe der Modelle abgearbeitet werden, von der Bedienoberfläche,
|
|
||||||
die hier in der Standardelementen von Webseiten, wie \ac{HTML}, \ac{CSS} und Javascript definiert werden. Zusätzlich
|
|
||||||
existiert noch ein spezifischer Syntax um die Daten dynamisch in die Seiten einzufügen.
|
|
||||||
|
|
||||||
Das System selbst ist in Schichten, auch Middleware genannt, aufgebaut \citep{AspNetCore:2024:Middleware}. Hierbei
|
|
||||||
übernimmt jede Middleware ihre entsprechende Aufgabe oder gibt die Anfrage an die nächste Middleware weiter und wartet
|
|
||||||
auf deren Antwort um diese und den Client zurückzugeben.
|
|
||||||
Diese Konzept wird direkt vom Standard umgesetzt und somit sind die unterschiedlichen Verarbeitungen getrennt
|
|
||||||
implementiert worden, was zu besserer Wartbarkeit des Programmcodes führt. Und die eigene Anwendung kann dadurch
|
|
||||||
je nach Bedarf die Middleware aktivierten, die wirklich benötigt wird.
|
|
||||||
|
|
||||||
Zusätzlich können über eine Vielzahl an vorhandenen NuGet-Paketen das Programm erweitert werden. Oder Komponenten
|
|
||||||
komplett ersetzt werden, wie z.B. das EntityFramework durch eine einfachere leichtere Version eines reinen \ac{ORM}
|
|
||||||
zu ersetzt.
|
|
||||||
|
|
||||||
C\# ist wie Java durch die neue .NET Runtime, aktuell in der Version 8 verfügbar, für die meisten Betriebssystem verfügbar.
|
|
||||||
Bei der Übersetzung hat C\# einen Vorteil gegenüber von Java, da hier der Code wie bei Java zuerst in eine Zwischencode
|
|
||||||
\ac{IL} kompiliert wird und zur Laufzeit über einen \ac{JIT} Compiler dann direkt in optimierten Maschinencode übersetzt wird.
|
|
||||||
Hierbei haben die meistens Test gezeigt, dass das .NET Framework hier um einiges effizienter und schneller arbeitet als
|
|
||||||
die Java Runtime. Zusätzlich wird bei ASP.NET Core nicht noch ein zusätzlicher Server benötigt um die Anwendung aktiv
|
|
||||||
zu halten.
|
|
||||||
|
|
||||||
\subsection{Golang}
|
|
||||||
\label{sec:concept:technologiecompare:golang}
|
|
||||||
|
|
||||||
Go (auch Golang) ist eine junge Programmiersprache, die sich durch Simplizität und Multifunktionalität auszeichnet, was
|
|
||||||
eines der Ziele bei der Entwicklung ist. Weitere Ziele waren die native Unterstützung von Nebenläufigkeit und die
|
|
||||||
leichte Verwaltung von großen Codebasen in größeren Entwicklerteams und ein hohen Übersetzungsgeschwindigkeit.
|
|
||||||
Hierdurch ist es sehr einfach und effizient möglich eine Anwendung mit Go zu entwickeln \citep{Golang:2024}.
|
|
||||||
Zusätzliche überzeugt Go durch die Typsicherheit und die automatische Speicherbereinigung durch den \ac{GC}.
|
|
||||||
Die Entwicklung von Microservices mit Go wird durch die integrierten Funktionen und Bibliotheken gut Unterstützt,
|
|
||||||
wodurch die Entwicklung, Bereitstellung und Skalierung erleichtert wird.
|
|
||||||
|
|
||||||
Go wird in eine native Anwendung übersetzt, da für die großen Betriebssystem entsprechende Compiler existieren, sind
|
|
||||||
Anwendung in Go ebenfalls nahezu Plattformunabhängig. Durch den integrierten Cross-Compiler, kann die Software direkt
|
|
||||||
für andere Betriebssystem mit erstellte werden.
|
|
||||||
|
|
||||||
Für eine dynamische Webseite, reichen die Standard-Bibliotheken, wobei auch hier gibt es verschiedene Frameworks die
|
|
||||||
eine Unterstützung für \ac{MVC} einbauen. Ein direkter \ac{ORM} ist ebenfalls vorhanden, um den einfachen Zugriff
|
|
||||||
auf eine Datenbank zu ermöglichen.
|
|
||||||
|
|
||||||
\subsection{PHP}
|
|
||||||
\label{sec:concept:technologiecmopare:php}
|
|
||||||
|
|
||||||
Mit der Skriptsprache PHP ist es sehr einfach eine dynamische Webseite zu entwickeln, da diese genau für solche
|
|
||||||
Zwecke entwickelt wurde. Hierbei wird der Code nicht übersetzt, sondern immer zu Laufzeit interpretiert, was im
|
|
||||||
Gegensatz zu den anderen vorgestellten Möglichkeiten im Sinne der Performance eindeutig ein Nachteil ist.
|
|
||||||
Dafür ist eine Änderung nur mit Hilfe eines Texteditor sehr einfach und schnell umzusetzen.
|
|
||||||
Der Zugriff auf eine Datenbank, ist direkt mit integriert und muss nur durch die Bereitstellung der passenden Treiber
|
|
||||||
aktiviert werden.
|
|
||||||
|
|
||||||
Die Template-Funktion für die Webseite wird nicht direkt unterstützt, sonder hier muss zwingend eine externe Bibliothek
|
|
||||||
verwendet werden. Sonst entsteht sehr viel gleicher Code, der auf Dauer nicht mehr Wartbar bleibt.
|
|
||||||
|
|
||||||
Für PHP gibt es ebenfalls umfangreiche Frameworks für die \ac{MVC}"=Unterstützung, wie z.B. \textit{Laravel} oder
|
|
||||||
\textit{Symfony}. Um diese Webseiten aber nun wieder auf den Webserver betreiben zu können wird der \textit{composer}
|
|
||||||
benötigt, der den Quellcode zusammenpackt und für die Bereitstellung vorbereitet. Hierbei ist die Leichtigkeit der
|
|
||||||
Skriptsprache aber verloren gegangen.
|
|
||||||
|
|
||||||
\subsection{Fazit}
|
|
||||||
\label{sec:concept:technologiecompare:summary}
|
|
||||||
|
|
||||||
Den größten Vorteil würde man aktuell mit der Umsetzung in Go bekommen, da dies für seine Geschwindigkeit und einfach
|
|
||||||
bekannt und Entwickelt wurde. Zudem ist die Programmiersprache sehr jung und hat keine Altlasten mit dabei. Der
|
|
||||||
größte Nachteil darin ist aber, dass hierfür noch nicht so viele Entwickler existieren, die dann das Projekt
|
|
||||||
unterstützen können.
|
|
||||||
|
|
||||||
Meiner Einschätzung nach, wäre ein Umstieg im aktuellen Stadium nicht sehr sinnvoll, da zum einen der großteil der
|
|
||||||
Anforderung umgesetzt ist, und für jeden Änderung die Mitarbeiter sich erst in die neue Code-Basis einarbeiten müssten.
|
|
||||||
Bei Weiterentwicklungen durch Studenten, ist man mit Java im Vorteil, da dies an der Uni gelehrt wird.
|
|
||||||
|
|
|
@ -29,9 +29,6 @@ prüfen, die den Cache von OpenJPE auswerten}
|
||||||
Nun werden die unterschiedlichen Schichten betrachtet und möglichen Performance-Verbesserungen untersucht und deren
|
Nun werden die unterschiedlichen Schichten betrachtet und möglichen Performance-Verbesserungen untersucht und deren
|
||||||
Vor"= und Nachteile herausgearbeitet.
|
Vor"= und Nachteile herausgearbeitet.
|
||||||
|
|
||||||
\subsection{Caching im PostgreSQL}
|
|
||||||
\label{sec:performance-checking:investigation-application:caching-postgresql}
|
|
||||||
|
|
||||||
\subsection{Caching im OpenJPA}
|
\subsection{Caching im OpenJPA}
|
||||||
\label{sec:performance-checking:investigation-application:caching-openjpa}
|
\label{sec:performance-checking:investigation-application:caching-openjpa}
|
||||||
|
|
||||||
|
@ -41,9 +38,6 @@ Vor"= und Nachteile herausgearbeitet.
|
||||||
\subsection{Caching in \ac{EJB}}
|
\subsection{Caching in \ac{EJB}}
|
||||||
\label{sec:performance-checking:investigation-application:caching-ejb}
|
\label{sec:performance-checking:investigation-application:caching-ejb}
|
||||||
|
|
||||||
\subsection{Abfragen Native}
|
|
||||||
\label{sec:performance-checking:investigation-application:query-native}
|
|
||||||
|
|
||||||
\subsection{Abfragen JPQL}
|
\subsection{Abfragen JPQL}
|
||||||
\label{sec:performance-checking:investigation-application:query-jpql}
|
\label{sec:performance-checking:investigation-application:query-jpql}
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
% ****************************************************************************************************
|
% ****************************************************************************************************
|
||||||
% 1. Personal data and user ad-hoc commands
|
% 1. Personal data and user ad-hoc commands
|
||||||
% ****************************************************************************************************
|
% ****************************************************************************************************
|
||||||
\newcommand{\myTitle}{Analyse und Optimierung der Webseite des Wedekind Projektes\xspace}
|
\newcommand{\myTitle}{Multi-Layer Optimization Strategies for Enhanced Performance in Digital Editions: A Study on Database Queries, Caches, Java EE and JSF\xspace}
|
||||||
%\newcommand{\mySubtitle}{An Homage to The Elements of Typographic Style\xspace}
|
%\newcommand{\mySubtitle}{An Homage to The Elements of Typographic Style\xspace}
|
||||||
\newcommand{\myDegree}{Bachelor of Science (B.Sc.)\xspace}
|
\newcommand{\myDegree}{Bachelor of Science (B.Sc.)\xspace}
|
||||||
%\newcommand{\myDegree}{Bachelor of Arts (B.A.)\xspace}
|
%\newcommand{\myDegree}{Bachelor of Arts (B.A.)\xspace}
|
||||||
|
|
BIN
thesis.pdf
BIN
thesis.pdf
Binary file not shown.
17
thesis.tex
17
thesis.tex
|
@ -119,6 +119,10 @@
|
||||||
% https://books.google.de/books?hl=de&lr=&id=3qO8DQAAQBAJ&oi=fnd&pg=PA1&dq=frank+wedekind&ots=S4LHWQ0h2e&sig=Mz8PEGF-md4n3AwH9cgXq-5vUac#v=onepage&q=frank%20wedekind&f=false
|
% https://books.google.de/books?hl=de&lr=&id=3qO8DQAAQBAJ&oi=fnd&pg=PA1&dq=frank+wedekind&ots=S4LHWQ0h2e&sig=Mz8PEGF-md4n3AwH9cgXq-5vUac#v=onepage&q=frank%20wedekind&f=false
|
||||||
% https://www.martin.germanistik.uni-mainz.de/forschung/frank-wedekind/
|
% https://www.martin.germanistik.uni-mainz.de/forschung/frank-wedekind/
|
||||||
|
|
||||||
|
% Webseiten für Java und Payara
|
||||||
|
% https://blog.payara.fish/how-to-deploy-an-application-on-payara-server-5
|
||||||
|
% https://docs.payara.fish/community/docs/6.2023.1/Technical%20Documentation/Ecosystem/IDE%20Integration/IntelliJ%20Plugin/Payara%20Server.html
|
||||||
|
|
||||||
% Probleme mit Latexmk nach einen Update
|
% Probleme mit Latexmk nach einen Update
|
||||||
% pacman -S texlive-meta
|
% pacman -S texlive-meta
|
||||||
% > fmtutil-user --all
|
% > fmtutil-user --all
|
||||||
|
@ -134,9 +138,11 @@
|
||||||
% 1. Neue Payara Server - Local hinzufügen
|
% 1. Neue Payara Server - Local hinzufügen
|
||||||
% 2. Bei Before Lunch "Build artifact" hinzufügen und "WedekindJSF.war" auswählen
|
% 2. Bei Before Lunch "Build artifact" hinzufügen und "WedekindJSF.war" auswählen
|
||||||
% 3. Unter Deployment "Artifact" "WedekindJSF.war" hinzufügen
|
% 3. Unter Deployment "Artifact" "WedekindJSF.war" hinzufügen
|
||||||
|
% 4. Sollte es Probleme mit dem Deyploment geben, ala "kann ...Servlet-class nof found" einfach alle target-Verzeichnis löschen und deployen
|
||||||
|
|
||||||
% Konfiguration Glassfish/Payara (Muss scheinbar nach jedem neustart des Rechners gemacht werden)
|
% Konfiguration Glassfish/Payara (Muss scheinbar nach jedem neustart des Rechners gemacht werden)
|
||||||
% 1. Payara-Server starten, damit man an die Admin-Oberfläche kommt unter http://localhost:4848/
|
% 1. Payara-Server starten, damit man an die Admin-Oberfläche kommt unter http://localhost:4848/
|
||||||
|
% > /opt/payara/bin/asadmin start-domain domain1
|
||||||
% 2. Unter Ressources\JDBC\JDBC Connection Pools einen neuen Anlegen:
|
% 2. Unter Ressources\JDBC\JDBC Connection Pools einen neuen Anlegen:
|
||||||
% 2.1. Poolname vergeben
|
% 2.1. Poolname vergeben
|
||||||
% 2.2. Resource Type: javax.sql.DataSource
|
% 2.2. Resource Type: javax.sql.DataSource
|
||||||
|
@ -149,4 +155,13 @@
|
||||||
% 3.1. JNDI Name: jdbc/wedekindPostgreSQL (muss mit jta-data-source aus persistence.xml zusammen passen)
|
% 3.1. JNDI Name: jdbc/wedekindPostgreSQL (muss mit jta-data-source aus persistence.xml zusammen passen)
|
||||||
% 3.2. Pool Name: den unter 2 angelegten Pool auswählen
|
% 3.2. Pool Name: den unter 2 angelegten Pool auswählen
|
||||||
% 3.3. Mit Save bestätigen
|
% 3.3. Mit Save bestätigen
|
||||||
% 4. Payara-Server neustarten
|
% 4. Payara-Server neustarten
|
||||||
|
|
||||||
|
% Sollte der Ping nicht gehen, dann braucht man noch die Treiber, welche hier zu finden sind: https://jdbc.postgresql.org/download/
|
||||||
|
% Häufige Fehlermeldung dafür ist "No suitable driver found for jdbc:postgresql://...."
|
||||||
|
% Nach dem Download mit nachfolgendem Kommando hinzufügen:
|
||||||
|
% > /opt/payara/bin/asadmin add-library /path/to/download/jdbcdriver.jar
|
||||||
|
% > sudo -i -u postgres
|
||||||
|
% > psql
|
||||||
|
% > CREATE EXTENSION adminpack;
|
||||||
|
% danach sollte der Ping auf der Webseite gehen
|
Loading…
Reference in a new issue