Warum startet die Java WebStart-Anwendung nicht, wenn die JNLP-URL% enthält?

8

Ich habe eine merkwürdige Sache bemerkt, als ich versuchte, JNLP-Dateien basierend auf URL-Parametern, die an einen HTTP-Server übergeben wurden, dynamisch zu generieren. Wenn ich so etwas in meinem HTML-Code habe, funktioniert es:

%Vor%

Wenn ich andererseits ein % -Zeichen im launchjnlp -Attribut habe, macht das Plugin einfach nichts:

%Vor%

Keine Fehlermeldungen, kein Standard-Java-Begrüßungsbildschirm, nichts, das stumm schlägt. (Ohne zu versuchen, die JNLP-Datei abzurufen.)

Ist das eine Art Sicherheitsfunktion? Wenn es ist, vor was soll es schützen? Oder könnte es ein einfacher Fehler sein?

Update: Die Verwendung der Entität % anstelle von % sign funktioniert auch nicht.
Update 2: Ich habe es versucht und konnte nicht gefunden werden Dokumentation zur genauen Semantik des Attributs launchjnlp , aber das gesamte Tag wird von deployJava.launchWebStartApplication (jnlp) , das angeblich die "offizielle" Art ist, eine Web Start-Anwendung von einem Browser aus zu starten.
Update 3: Um ganz klar zu sein: Das obige Beispiel ist genau das: ein Beispiel. Sie können das beschriebene Verhalten mit absolut any URL (relativ, absolut, file: //, http: //, Sie nennen es), any mit URL-codierten Zeichen beobachten. oder sogar eine ungültige Escape-Sequenz (obwohl in diesem Fall es mehr oder weniger gerechtfertigt ist), das Vorhandensein oder Fehlen einer tatsächlichen JNLP-Datei ist irrelevant , weil wir nicht einmal zu dem Punkt kommen, wo das Plugin würde versuchen, die JNLP-Datei zu laden.

    
biziclop 26.03.2015, 22:18
quelle

1 Antwort

6
  

Ist das eine Art Sicherheitsfunktion? Wenn es ist, was ist es?   vorbeugen? Oder könnte es ein einfacher Fehler sein?

Von dem, was ich herausfinden kann, ist ein "einfacher Fehler" die Antwort. Hier ist die Problemseite:

Ссылка

Es sieht so aus, als ob es nicht vor der Veröffentlichung von JDK 9 repariert werden soll.

Ich würde vorschlagen, eine andere JDK-Implementierung zu versuchen, aber das scheint kaum etwas zu ändern, wenn man Menge an Code, der zwischen den Oracle- und OpenJDK-Implementierungen ausgetauscht wird und der Tatsache, dass WebStart Code scheint proprietär / closed-source zu sein.

Daher ist die Lösung, die Sie mit base64-encoding entwickelt haben, wahrscheinlich die beste Option. Wenn Sie dies häufig tun müssen, kann der Codierungsschritt möglicherweise in die deployJava.launchWebStartApplication(jnlp) JavaSript-API gerollt werden, damit sie bei Bedarf automatisch erfolgt.

    
aroth 29.03.2015, 02:02
quelle

Tags und Links