Frage

Wir verwenden Java Webstart eine Java-Anwendung in unserem Intranet bereitstellen. Die Anwendung empfängt häufiges Updates. Einmal in einer Weile ein Benutzer die Anwendung von ihrem Desktop-Symbol wird gestartet, nachdem wir die JAR-Dateien aktualisiert / IST auf dem Webserver (Zeitstempel geändert) und Java Web Start werden die alte Version starten, anstatt einen neuen herunterzuladen.

Hier ist eine Paste aus unserer JNLP, wie Sie sehen können offline-allowed ist, aber Update-Prüfung immer und Politik immer. Auch Download-Flag ist eifrig. Von meinem Verständnis sollen diese Optionen führen immer zu einer Überprüfung des Cache gegen Zeitstempel auf dem Server und einen Download der JAR-Datei.

Ich fange mit Webstart zu frustriert! Hat jemand similiar Probleme gesehen? Jede Lösung? Ich bin krank von Menschen zu Fuß durch ihre webstart Cache zu löschen manuell jedes drittes oder fünftes Update.

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE jnlp PUBLIC "-//Sun Microsystems, Inc//DTD JNLP Descriptor 6.0//EN" "http://java.sun.com/dtd/JNLP-6.0.dtd">
<jnlp spec="1.0+" codebase="$$codebase" href="$$name">
  <information>
    <title>TITLE</title>

    <vendor>VENDOR</vendor>

    <description>Our Utility Application</description>

    <description kind="short">Our Utility Application PRD</description>
    <icon href="images/util_icon.png" height="64" width="64"/>
    <offline-allowed/>
    <shortcut online="true">
      <desktop />
      <menu submenu="Utility Apps"/>
    </shortcut>
  </information>

  <security>
     <all-permissions />
  </security>

  <update check="always" policy="always" />

  <resources>
    <!-- requires 1.6+ -->
    <j2se version="1.6+" href="http://java.sun.com/products/autodl/j2se" java-vm-args="-ea" initial-heap-size="128m" max-heap-size="512m" />

    <!-- application code, download jar before we start. -->
    <jar href="OurUpdatedJarName.jar" main="true" download="eager" />

    <property name="configfile" value="updatedJarName.config" />
  </resources>

  <application-desc main-class="main.Client">
    <argument>-D</argument> 
  </application-desc>
</jnlp>
War es hilfreich?

Lösung

Sie könnten das Problem gelöst haben - aber jnlp spec = "1.0+" - Das Element wird nur unterstützt, nach jnlp spec 6.0+. Wahrscheinlich ist, das ist einer der Gründe für Ihr Updates versagen.

Andere Tipps

Unter der Annahme, das Client-JREs auf dem neuesten Stand ist, du vielleicht <update check="timeout" policy="always"/> versuchen, wie in diesem vorgeschlagen fädeln und beschrieben in dem JNLP Syntax Dokumentation.

Ich hatte die gleichen Probleme haben wie Sie und löste es, indem Sie folgendermaßen vorgehen:

  1. Ändern

    <jar href="OurUpdatedJarName.jar" ...

    <jar href="OurUpdatedJarName-$VERSION.jar" ...

  2. Setzen Sie $ VERSION in den <a href="foo-$VERSION.jnlp">Run</a>

Wir automatisch $ VERSION für jeden Einsatz aktualisieren.

Ich weiß, es ist eine hässliche Lösung, aber es ist eine, die jedes Mal für uns funktioniert.

dieses Problem durch offline-allowed Tag verursacht wird.

Per JNLP spec

Wenn offline-allowed angegeben, Java Web Start wird auch zu prüfen, ob ein Update verfügbar ist. Wenn jedoch die Anwendung bereits heruntergeladen wird die Überprüfung nach einigen Sekunden wird Timeout, wobei in diesem Fall der im Cache gespeicherte Anwendung stattdessen gestartet werden. Bei einer einigermaßen schnelle Server-Verbindung, die neueste Version der Anwendung wird in der Regel ausgeführt werden, aber es ist nicht garantiert . Die Anwendung kann jedoch offline ausgeführt werden.

haben wir Java-Web-Start-Anwendungen über ein Dutzend Länder verteilt und wenn wir gefunden haben, dass die Anwendung nicht korrekt war Aktualisierung war es für eine Fehlkonfiguration des Kreis Netz oder in den Netzwerkeinstellungen des Benutzers Computer, vor allem die Proxy. In unserem zentralen officines in Spanien Java Web Allways Arbeit ok starten.

Ich habe webstart nextx.jar Klon, der das Java im Einsatz. Ich verfolgte meine nicht die Aktualisierung JAR Ausgabe auf die Verwendung des URLConnection.getLastUpdated () -Methode. Da es die HEAD-Methode verwendet die Lastupdated des Dateinamen zu bekommen, dann ist dies der Grund, warum es manchmal nicht wegen () des Caching des getLastUpdated herunterladen. Wir entschieden uns, unsere eigene Methode erfrischender unsere Anwendung zu verwenden, wie webstart fehlerhaft ist.

Ich hatte dieses Problem nur, weil ich die App nicht geöffnet genug Zeit ließ sich das Update abzuschließen.

Wenn Sie diese Option haben: Update-Check = "background" in Ihrem JNLP, einige Zeit warten, bevor die Anwendung schließen, um das Update zu ermöglichen Finish (auf Hintergrund läuft)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top