2010-04-22 8 views
8

Sto riscontrando un problema con un'applet Java che ho distribuito che si rifiuta di essere memorizzato nella cache nella cache "sticky" di jvm (o dal browser). Per qualche ragione ogni volta che un utente carica la pagina su cui questa applet è attiva, la jvm esegue nuovamente il download del file jar dal server che provoca un lungo ritardo.Applet Java non in cache

La pagina web contenente l'applet si accede via Internet, in modo secondo il Sun's Java applet documentation che sto utilizzando un tag <applet> piuttosto che un tag <object> o <embed>.

Qualsiasi aiuto di debug o identificazione del problema sarebbe molto apprezzato.

riportano di seguito le tag applet piena sto usando:

<applet alt="Scanning Applet failed to load" archive="scanning.jar" 
     code="scanning.scanlet.class" codebase="/java/" codetype="application/java" 
     height="30" mayscript="True" name="scanlet" width="200"> 
    <param name="domain" value="192.168.12.23" /> 
    <param name="publishName" value="scan_attachment" /> 
    <param name="publishURL" value="http://192.168.12.23/draft/update/52" /> 
    <param name="curURL" value="http://192.168.12.23/draft/edit/52" /> 

Your browser is unable to process the Java &lt;APPLET&gt; tag needed to display this applet 
<br /> 
One solution would be to download a better web browser like 
<a href="http://www.mozilla.com/firefox">Mozilla's Firefox</a> 

</applet> 
+0

Ho abilitato la registrazione e la traccia tramite il Pannello di controllo Java-> Avanzate-> Debug e sto ottenendo molte iterazioni del seguente messaggio: rete: voce cache non trovata [url: http : //192.168.12.23/java/scanning.jar, versione: 1.0] –

+0

General StackOverflow Domanda: non c'è modo di formattare i "Commenti" così come la domanda iniziale? –

risposta

1

questo articolo ufficiale descrive come è possibile modificare il tag applet per aumentare la cache:

http://java.sun.com/products/plugin/1.3/docs/appletcaching.html

+0

Jon, grazie per la rapida risposta, sfortunatamente sono stato su e giù per quel documento ufficiale. Secondo questo, dato che stavo usando l'attributo di archivio, avrei dovuto ottenere una sorta di cache di livello del browser di riserva anche senza i nuovi attributi cache_ *, giusto? –

+0

Ad ogni modo, dopo aver aggiunto gli attributi cache_ * al mio tag applet come segue, l'applet continua a rifiutarsi di essere memorizzato nella cache da jvm: ... stessi parametri, ecc.

+0

Bene, questo "caching del livello del browser di fallback" è ancora fatto dalla JVM e di solito è il problema – ArtemGr

2

Personalmente ho risolto il problemi di memorizzazione nella cache utilizzando i parametri cache_archive e cache_version documentati a http://java.sun.com/javase/6/docs/technotes/guides/plugin/developer_guide/applet_caching.html

My ca che_version è basato sulla data di modifica del file, ad es.

val archive = libs.map("/" + _.getPath).mkString (", ") 
val version = libs.map(_.getUpdated/1000/20 - 59281420).mkString (", ") 

e di lavorare con MSIE sembra come:

if (msie) { 
    cms write <OBJECT 
    classid="clsid:CAFEEFAC-0016-0000-0000-ABCDEFFEDCBA" 
    codebase="http://java.sun.com/update/1.6.0/jinstall-6-windows-i586.cab" 
    width="100%" height="100%"> 
    ... 
    <PARAM name="cache_archive" value={archive}/> 
    <PARAM name="cache_version" value={version}/> 
    </OBJECT> 
} else { 
    cms write <applet ... 
    cache_archive={archive} cache_version={version}></applet> 
} 
+0

ArtemGr, thx per la risposta dettagliata Tutti i nostri utenti accedono al sito tramite Firefox, quindi non posso usare . il mio tag applet include gli attributi cache_ * (_archive, _option e _version), ma l'applet viene ancora scaricata ogni volta che torno alla pagina in questione. Ecco il mio tag applet modificato: < applet cache_archive = "scanning.jar" cache_option = "Plugin" cache_version = "1.0" code = "scan.scanlet.class" codebase = "/ java /" codetype = "application/java" height = "30" mayscript = "True scanlet "name =" "width =" 200 "> ... stessi parametri, ecc. –

+0

Succede solo a voi o capita a tutti (alcuni) agli utenti del sito web? Se il primo, allora potrebbe essere che il plugin Java sul tuo computer non può memorizzare il file in cache per qualche motivo? Su Windows Java Plugin è disponibile un'opzione per memorizzare nella cache del browser, nel qual caso potrebbero essere applicate le limitazioni della cache del browser (è possibile vedere cosa viene memorizzato nella cache tramite il pannello di controllo, BTW); su UNIX ~/.java/deployment/folder è usato per il caching, ~/.java/dovrebbe essere scrivibile ecc. – ArtemGr

+0

Succede a tutti coloro che usano il sito: [. Su macchine Windows, ho guardato attraverso il pannello di controllo Java e solo le impostazioni di "cache" che posso trovare sono in File temporanei Internet-> Impostazioni. Quelle impostazioni sembravano tutte comunque buone. Ho anche guardato sotto Temporary Internet Files-> View per verificare che il file .jar in questione non sia presente nella cache: [ –

4

ho avuto lo stesso problema e ha trovato un trucco che hanno bisogno di essere applicata lato server. Sembra che i jar non vengano memorizzati nella cache se il loro tipo di mimo non è corretto. Controlla la risposta del tuo server usando il tipo di applicazione/jime-archive mime.

Un altro problema riscontrato è relativo a un vaso specifico. Il mio parametro archive elencava molti jar, ma solo alcuni erano memorizzati nella cache. Ho trovato che tutti i barattoli sono stati aggiunti a uno specifico dove sono stati memorizzati nella cache, tutti i barattoli rimanenti non sono stati memorizzati nella cache. Durante il caricamento dell'applet, ho premuto "5" nella sua console java e ho trovato questo messaggio subito dopo l'ultimo jar memorizzato nella cache: cache: la voce firmata mancante da jar. Non so ancora cosa c'è di sbagliato in questo file, ma ho spostato quel jar alla fine dell'elenco dei parametri dell'archivio. Questo "risolve" il problema.

1

Per quanto mi riguarda ho avuto per rimuovere i file Jar dal tag archivio e solo nel parametro cache_archive, e specificare le versioni in quel modo non piggy back al server per l'ultima data di modifica

fisso in firefox per me

Problemi correlati