DLE Version mit Java 21

Jetty 12

Die neue DLE Version, die auf Java 21 Basis funktioniert bringt auch eine neue Webserver-Version mit. Von Jetty 9 wurde nun auf Jetty 12 mit Jakarta Enterprise Edition 10 und Servlet API 6.0 umgestellt. Diese Änderung bringt die Notwendigkeit mit sich einige Konfigurationsdateien zu aktualisieren. So zum Beispiel eventuell vorhandene jetty-web.xml Dateien. Dort muss eine neue WebAppContext-Klasse angegeben werden. Dies erfolgt üblicherweise durch das DLE-Update selbst. Es wird statt org.mortbay.jetty.webapp.WebAppContext (Jetty 6) bzw. org.eclipse.jetty.webapp.WebAppContext (Jetty 9) nun at.visionflow.dle.server.webserver.DLEWebAppContextForWebsockets (Jetty 12 und folgende) verwendet.

Java Locale Provider

In Java werden für die Verwaltung von Datums und Nummernformaten so genannte Locale-Klassen verwendet. Jede DLE-Session hält eine Instanz dieser Klasse, damit Datumsformattierungen und Zahlenformattierungen entsprechend dieser Sprach- bzw. Ländereinstellung erfolgen können.

Die Erzeugung solcher Locale-Instanzen wird in Java durch LocaleServiceProvider bewerkstelligt. Bis zur Version 9 wurde als Standard-Locale-Provider ein Provider mit dem Schlüssel JRE bzw. COMPAT verwendet. Neuere Java Versionen verwenden allerdings CLDR als Standardprovider. COMPAT und JRE-Provider werden vorraussichtlich in der Version 23 und folgende nicht mehr zur Verfügung stehen. Dadurch können Probleme bei der Datumsermittlung entstehen. So produzierte vor Java 9 das Datumsformat EEE MMM d HH:mm:ss yyyy mit einer deutschen Locale die Zeichenfolge Mi Mär 15 09:33:43 2006. Mit dem neuen CLDR Provider wird dies nun zu Mi. März 15 09:33:43 2006. Dies kann zu Problemen bei der Datumsermittlung führen. Es gibt die Möglichkeit eine Java-Systemproperty mit -Djava.locale.providers=COMPAT zu setzen und damit das alte Verhalten wiederherzustellen. Allerdings nur bis zum Zeitpunkt an dem im Java-Standard dieser Provider ebenfalls deaktiviert wird (Java 23).

Auch für Nummernformate ändert sich z.B. das Standardformat für die Schweiz. Das Tausender-Gruppierungszeichen ist nun ’ statt '. Dies kann mit der besagten System-Property rückgängig gemacht werden, aber nur mittelfristig.