1. 2020-09-25
1.1. Übung WebSocket, SSE und gRPC
Erstellen Sie gemäß Ihrem Thema ein Projekt und implementieren Sie untenstehende Technologien:
-
SSE
-
Testen Sie die einzelnen Technologien automatisiert
-
Dokumentieren Sie die einzelnen Technologien in Form von gh-pages mit Asciidoctor
-
Einsatzgebiet von gRPC (Welches Problem wird gelöst)
-
Alternativen zu gRPC
-
Grundlegende Funktionsweise von gRPC
-
Dokumentieren Sie die automatisierten Tests
-
-
Pushen Sie das Endergebnis sowie die Zwischenergebnisse hierhin: https://classroom.github.com/a/WHJoF_6T
2. 2020-10-02
-
Was ist gRPC
-
Alternative zu REST
-
binär
-
sehr effizient und performant
-
…
-
-
Feedback zu Übungen
-
Ansehen der Definition von gRPC lt. Rainer Stropek - gRPC mit C#
4. 2020-11-09
4.1. Logging in Jakarta EE (Quarkus)
-
Es wird empfohlen den jboss-Logger zu verwenden.
@ApplicationScoped
public class GreetingService {
private static final Logger logger = Logger
.getLogger(GreetingService.class.getSimpleName()); (1)
int counter;
public String greeting(String name) {
logger.info(String.format("Hello %s (%d x verwendet)", name, ++counter)); (2)
return String.format("Hello %s (%d x verwendet)", name, ++counter);
}
}
1 | Man muss einen Logger deklarieren. Der Klassenname wird übergeben. |
2 | Man kann den Logger verwenden |
2020-11-06 09:40:53,795 INFO [at.htl.con.GreetingService] (executor-thread-198) Hello susi (1 x verwendet!)
-
Es gibt Log-Levels
-
INFO
-
ERROR
-
FATAL
-
DEBUG
-
…
-
-
Es gibt sogenannte Appender zur Ausgabe auf verschiedenen Medien
-
Konsole
-
in Text-Files (auch rotierend)
-
zB 3 Files mit einer bestimmten Größe (zB 10k).
-
Sind alle 3 Files beschrieben, wird das erste File gelöscht und neu beschrieben
-
Vorteile:
-
Der Speicher (Festplatte) wird nicht vollgeschrieben
-
Es stehen immer Log-Meldungen aus der Vergangenheit zur Verfügung
-
-
-
in Datenbanken
-
auf einen REST-Endpoint
-
…
-
4.1.1. Logging mit Dependency Injection
Man kann auch einen Logger mit DI injizieren
public class LoggerProducer {
@Produces
public Logger produceLogger(InjectionPoint injectionPoint) {
return Logger.getLogger(injectionPoint.getBean().getBeanClass());
}
}
@ApplicationScoped
public class GreetingService {
@Inject
private Logger logger; (1)
int counter;
public String greeting(String name) {
logger.info(String.format("Hello %s (%d x verwendet!)", name, ++counter)); (2)
return String.format("Hello %s (%d x verwendet!)", name, ++counter);
}
}
1 | Die Logger Klasse wird injiziert. |
2 | Die Verwendung bleibt gleich |
7. 2021-03-19
-
Termin der Leistungsfeststellung 9.4.2021
-
Termin der Prüfungen 16.4.2021
7.1. Übung: Vorbereitung zur Matura
7.1.1. Ausführung der Übung
-
Jeder Schüler erstellt mit dem Thema des Mikroprojekts, des vorigen Jahres ein kleines Projekt mit folgender aufgabenstellung
-
Die Anzahl der Tabellen des Datenmodells soll 4-5 Tabellen nicht überschreiten
-
Die Commits-Messages müssen mit dem Nachnamen beginnen
|
Classroom: https://classroom.github.com/a/QD-A8-Vc
-
Erstellen Sie in diesem Repo sowohl für das Frontend als auch für das Backend einen eigenständigen Ordner (
frontend
undbackend
) -
Termine
-
26. März 2021: Abgabe des Backends (Datenmodelle + Repositories).
-
An diesem Tag wird kontrolliert, ob die (bereits implementierten) Klassen ok sind.
-
Das generierte Klassendiagramm und das ERD sind im README.md darzustellen.
-
-
3. April 2021: Abgabe des restlichen Projekts
-
dieses Projekt wird dann von den Lehrkräften durchgesehen
-
Kriterien um den Test abzusagen:
-
Alle SchülerInnen geben ein Projekt ab
-
Die abgegebenen Projekte erfüllen ein Mindestmaß an Funktionalität (nicht leer)
-
-
-
7.1.3. Aufgabenstellung
-
Backend (Quarkus)
-
Frontend (Angular)
Klassen erstellen und persistieren
-
Datenmodell wird als ERD vorgegeben
-
→ Klassen erstellen
-
→ mit vorgegebenen INSERT.sql befüllen
-
REST-Endpoints erstellen
Für die Endpoints sind NamedQueries in den Repositories zu erstellen.
-
vorgegeben ist zB
-
GET /api/vehicle/get-broken
-
POST
-
UPDATE
-
DELETE
-
-
Mit POSTs können auch
-
Images
-
Files (csv, json usw) hochgeladen werden → Verwenden der Streaming API
-