Jakarta EE/Wildfly: SecurityException: setContextClassLoader vs. thenApplyAsync


Heute mal nur eine Information ohne tiefe Erklärungen, da ich dem Phänomen nicht tiefer auf den Grund gegangen bin (insb. da zukünftig die virtual Threads sicher die bessere Alternative sind). Nach einem Update (vermutlich Java) warf eine unserer Jakarta EE Applikationen den Fehler

CompletableFuture.supplyAsync java.lang.SecurityException: setContextClassLoader

bei der REST-Abfrage verschiedener externer Quellen. Grund war ein whenComplete (ohne async und Angabe des Executors). Erste Untersuchungen haben ergeben, dass es bei einigen Implementierungen vorkommen kann, dass ein Default Executer verwendet wird. Beim Zugriff auf eine Managed Bean kam es nun zu dem angezeigten Sicherheitsfehler. Behoben wurde das Problem durch Nutzung der Async Methode mit dem gleichen Executer, der an alle Teile der Ausführung übergeben wurde z.B.

compFutureWait4End.whenCompleteAsync(stageOpenHabServerDataComplete, this.scheduledExecuterService);

Du hast Fragen oder Anmerkungen? Kontakt: arndt@schoenb.de

,