Spezifikation / Framework-APIWeb Realtime2.2
Jakarta WebSocket
Jakarta WebSocket standardisiert server- und clientseitige WebSocket-Endpunkte.
Einordnung
Spezifikation / Framework-API
Enterprise-Rolle
WebSocket eignet sich für bidirektionale, langlebige Kommunikation, nicht für jeden normalen REST-Call.
Fachliches Verständnis
WebSocket eignet sich für bidirektionale, langlebige Kommunikation, nicht für jeden normalen REST-Call. In der Praxis ist wichtig, die Spezifikation nicht mit der konkreten Runtime zu verwechseln. Der Standard beschreibt die portablen APIs, die Implementierung entscheidet über Konfiguration, Performance, Betrieb und Support.
Kernkonzepte
- @ServerEndpoint.
- Session und Message Handler.
- Encoder/Decoder.
- ClientEndpoint für ausgehende Verbindungen.
Typische Einsatzfälle
- Live-Status, Chat, Monitoring, Push-Updates.
- Backend-Verbindung zu WebSocket-Gateway.
Technisches Beispiel
java
@ServerEndpoint("/ws/orders/{orderId}")
public class OrderStatusEndpoint {
@OnOpen
public void open(Session session, @PathParam("orderId") String orderId) {
session.getUserProperties().put("orderId", orderId);
}
@OnMessage
public void onMessage(String message, Session session) throws IOException {
session.getBasicRemote().sendText("ack:" + message);
}
}
Architekturregel: Jakarta APIs gehören an Systemgrenzen und Infrastrukturpunkte. Fachentscheidungen bleiben in Application Services und Domain-Modellen testbar und möglichst unabhängig vom Container.
Enterprise-Fallen
- Keine Backpressure-Strategie.
- Session-Zustand unkontrolliert im Speicher.
- WebSocket für CRUD missbrauchen.
Legacy-Modernisierung
Polling-basierte Legacy-UIs können gezielt auf Push-Kommunikation umgestellt werden.
Vertiefung: Review-Fragen für Senior-Entwickler
- Welche Spezifikation ist hier wirklich nötig?
- Welche Runtime-Funktion wird genutzt und ist sie portabel?
- Wo liegt die Transaktionsgrenze?
- Sind API-Verträge, DTOs und Domain-Modelle getrennt?
- Ist der Code ohne Application Server testbar?