PdfService teilt den Zustand einer PDF-Erzeugung zwischen gleichzeitigen Anfragen #150

Open
opened 2026-10-25 08:19:48 +00:00 by claude · 0 comments
Collaborator

PdfService ist @ApplicationScoped (PdfService.java:38), es gibt also eine Instanz für alle Anfragen. Trotzdem hält er den Zustand einer einzelnen PDF-Erzeugung in Feldern (PdfService.java:70-72):

  • bold und normal (Schriften), gesetzt bei jedem Aufruf (:84-85);
  • currentSeason, gesetzt bei jedem Aufruf (:79) und von einer anderen Methode gelesen (:191, Kopfzeile „Saison …“).

Folge: Erzeugen zwei Nutzer gleichzeitig ein PDF, kann die zweite Anfrage currentSeason überschreiben, während die erste noch zeichnet. Im schlimmsten Fall trägt ein PDF den Saisonnamen einer anderen Anfrage. Bei den Schriften ist es harmlos (gleicher Wert), aber derselbe Fehler.

Gefunden beim Planen der URL-Neuordnung, Etappe 5a (25.10.2026). Nicht Teil dieser Etappe. 5a gibt der neuen inneren Methode die Saison als Parameter, wenn das ohne Umbau geht.

Mögliche Behebung: Zustand einer Erzeugung in einem lokalen Objekt (z.B. ein kleiner Record mit Schriften und Saison), das die Zeichenmethoden als Parameter bekommen; die Felder fallen weg.

`PdfService` ist `@ApplicationScoped` (`PdfService.java:38`), es gibt also eine Instanz für alle Anfragen. Trotzdem hält er den Zustand einer einzelnen PDF-Erzeugung in Feldern (`PdfService.java:70-72`): - `bold` und `normal` (Schriften), gesetzt bei jedem Aufruf (`:84-85`); - `currentSeason`, gesetzt bei jedem Aufruf (`:79`) und von einer anderen Methode gelesen (`:191`, Kopfzeile „Saison …“). **Folge:** Erzeugen zwei Nutzer gleichzeitig ein PDF, kann die zweite Anfrage `currentSeason` überschreiben, während die erste noch zeichnet. Im schlimmsten Fall trägt ein PDF den Saisonnamen einer anderen Anfrage. Bei den Schriften ist es harmlos (gleicher Wert), aber derselbe Fehler. **Gefunden** beim Planen der URL-Neuordnung, Etappe 5a (25.10.2026). Nicht Teil dieser Etappe. 5a gibt der neuen inneren Methode die Saison als Parameter, wenn das ohne Umbau geht. **Mögliche Behebung:** Zustand einer Erzeugung in einem lokalen Objekt (z.B. ein kleiner Record mit Schriften und Saison), das die Zeichenmethoden als Parameter bekommen; die Felder fallen weg.
Sign in to join this conversation.
No description provided.