Java Webstart – JNLP-Datei wird nicht aktualisiert

Javas Webstart ist an und für sich eine sehr geile Erfindung um Applikationen schmerzlos zu verteilen.

Jeder Benutzer bekommt immer die aktuellsten Programmdateien und man selber muss sich nicht mit irgendwelchen Installern herumschlagen. Eine super Sache z.B. auch für www.beamer-tool.de.

Einziger Nachteil: Neuere .jar-Dateien werden ohne Komplikationen heruntergeladen und genutzt.
Nur die beschreibende .jnlp-Datei (XML-Datei) wird nicht so ohne weiteres aktualisiert.

Nur über das manuelle Löschen des Caches von Java ließ er sich dazu bewegen die .jnlp-Datei erneut herunterzuladen. Keine sehr schöne Lösung.
Eine Suche bei Google liefert zwar viel Müll aber auch andere Menschen mit dem selben Problem. Nur eine Lösung ist immer fern.

Die Lösung für dieses Problem ist jedoch das Anpassen der HTTP-Header-Informationen Cache-Control und Expires (klingt komisch, ist aber so). So wird immer die .jnlp-Datei heruntergeladen.
Da ich meine .jnlp-Datei über einen PHP-Host verteile hier die Lösung in PHP. Sie lässt sich aber mit jeder anderen Technik zum Anpassen des Headers auch nutzen:

<?php
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Thu, 01 Jan 1970 00:00:01 GMT"); // Former times
header("Content-type: application/x-java-jnlp-file");
?>

Die letzte Zeile ist wohl bei jedem in der einen oder anderen Konstellation zu finden.
Cache-Control und Expries sorgen aber in dieser Konfiguration dafür, dass der Webstart immer wieder die .jnlp-Datei herunterlädt und so Änderungen auch anwendet.

Nie mehr User die sich über fehlende .jar-Dateien beschweren und das Programm nicht starten können. Juhu 😀

Schreibe einen Kommentar