2017-02-09 6 views
1

Wir haben eine Anwendung, die auf mehreren Servern mit unterschiedlichen IP-Adressen bereitgestellt wird. Die JNLP werden zur Build-Zeit generiert. Deshalb definierten wir die JNLP ohne Code-Basis:Wie verwende ich JNLP ohne Codebasis?

<jnlp spec="1.0+" href="app.jnlp"> 

Wenn jedoch diese Anwendung ein zweites Mal starten (aus dem Desktop-Symbol, das auf dem ersten Start erstellt wurde) die Code-Basis auf das lokale Dateisystem festgelegt ist, die absolut nutzlos . Ich würde erwarten, dass Java Webstart die Codebasis mit der tatsächlichen Ursprungsadresse beim ersten Start der Anwendung setzt. Das scheint nicht wahr zu sein.

Wie kann ich einen generischen JNLP vorbereiten, der ohne Änderung auf verschiedenen Servern verwendet werden kann?

+0

Wenn Sie es sind zu erzeugen, warum nicht eine separate .jnlp Datei für jeden Server generieren? – VGR

+0

@VGR Es wird zur Erstellungszeit generiert. Zur Build-Zeit kennen wir die IP-Adressen der Zielserver nicht. Sie können sich im Laufe der Zeit sogar ändern. – radlan

+1

Mit welcher Software laufen die Server? Wenn es sich um einen Servlet-Container (Tomcat, GlassFish usw.) handelt, können Sie den Inhalt von .jnlp dynamisch bereitstellen. – VGR

Antwort

0

Die JnlpDownloadServlet vorhanden in der Probe/jnlp/Servlet-Verzeichnis des JDK, kann verwendet werden, um die JNLP aus einer Vorlage zur Laufzeit zu erzeugen, die zB korrekte Codebasis Einsetzen:

<jnlp spec="1.0+" codebase="$$codebase" href="app.jnlp"> 

Mojohaus eine mavenized Paket bereitgestellt des Servlets here.

Sie müssen auch eine JNLP-INF/APPLICATION_TEMPLATE.JNLP-Datei im signierten Hauptjar bereitstellen. Dieser dupliziert Ihre app.jnlp aber hat einen Stern für die $$ Code-Basis:

<jnlp spec="1.0+" codebase="*" href="app.jnlp"> 
Verwandte Themen