Nella mia azienda stiamo utilizzando Java Web Start per distribuire il software client ai clienti. Stanno usando diverse versioni di Windows: XP, Vista e 7.Java Web Start memorizza sempre nella cache il file JNLP su Windows XP
Abbiamo distribuito una versione tramite JWS con problemi minimi in passato. La nostra ultima versione include diverse modifiche ai file, alcuni vasi sono andati, altri sono comparsi, ecc.
Abbiamo scoperto che l'aggiornamento su macchine Windows XP non riesce perché JWS cerca ancora di cercare i file jar che non sono più disponibili sul web server. Ho controllato il registro del mio server HTTP e il file JNLP non è mai accessibile dalle macchine XP durante l'avvio dell'applicazione. Se provo lo stesso su Vista o Windows 7, tutto funziona correttamente, JWS recupera il descrittore JNLP e scarica le differenze quando è disponibile un aggiornamento. Quindi su macchine XP vengono aggiornati solo i file jar conosciuti e JWS genera un errore se non trova qualcosa dal set di file di JNLP memorizzato nella cache.
Ho scritto un servlet che genera manualmente il file JNLP. Sto usando il seguente header config nel mio codice servlet.
response.setDateHeader("Last-Modified", lastModification);
// IE won't download JNLP file if Cache-Control header presents
//response.setHeader("Cache-Control", "no-cache, must-revalidate");
response.setHeader("Expires", "Mon, 26 Jul 1990 05:00:00 GMT");
Questo rende il file JNLP sempre obsoleto che dovrebbe far scattare ricontrollo del file ogni volta che il client viene avviato tramite JWS. Posso anche vedere questa data nel visualizzatore di cache su XP:
ho trovato un problema mai risolvere su questo sul sito bugreport di Oracle: Bug ID: 6189106 appena testato lo stesso con Java7 su Windows XP, ma questo problema esiste ancora. Ma solo su XP a causa dei caratteri di spazio bianco nel percorso della cache di distribuzione ("Documenti e impostazioni" si sa). Qualcuno dice che se cambio il percorso della cache di implementazione in qualcosa che non contiene spazi, risolverà il problema. Beh, non è una soluzione reale perché gli utenti non possono quasi mai scrivere in posizioni diverse dal proprio profilo.
Poiché questo errore esiste per così tanto tempo, credo che ci dovrebbe essere una sorta di soluzione alternativa. Non mi piace dire al cliente ogni volta di svuotare la cache Java e reinstallare l'applicazione dal web. Ci piace passare a un ciclo di rilascio più rapido in futuro che renderà questo ancora più difficile. Spero che qualcuno abbia una buona idea per questo. : |
Dalle opzioni java nel riquadro di controllo, non è possibile deselezionare l'etichetta "mantieni il file temporaneo"? – hurtledown
Non vuole che il cliente lavori con il Pannello di controllo –