Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Classloader Cache

  1. #1

    Classloader Cache

    Buongiorno,
    sto sviluppando un'applet che effettua un pooling ogni 30 secondi verso un server ed aggiorna la lista degli utenti presenti online.
    Ad ogni richiesta, la lista generata viene rimossa ed impostata a null:
    tuttavia al successivo passaggio, la JVM decide di ricaricare la copia che ha sulla memoria cache, mandando fuori sincronia la mia applet.
    Questa teoria sembra essere avvalorata dal fatto che se premo "x" (cancellazione cache classloader) in maniera manuale sulla console, quella specifica richiesta aggiorna correttamente la lista.
    Come posso prevenire il fatto che quella lista vada a finire in cache? O come posso pulire
    la cache da codice? Grazie per l'attenzione.
    Saluti.

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Classloader Cache

    Originariamente inviato da ^EvAmPiReS^
    sto sviluppando un'applet che effettua un pooling ogni 30 secondi verso un server ed aggiorna la lista degli utenti presenti online.
    Ad ogni richiesta, la lista generata viene rimossa ed impostata a null:
    tuttavia al successivo passaggio, la JVM decide di ricaricare la copia che ha sulla memoria cache, mandando fuori sincronia la mia applet.
    No, alt. Facciamo un momento un po' di chiarezza.
    La questione del "caching" del classloader riguarda le definizioni delle classi. Ma tu non stai cercando di ricaricare una nuova versione della/e tua/e classe/i ... vero?
    Cioè ogni 30 secondi presumo che tu faccia una richiesta ad un server per ottenere un nuovo insieme di dati e la mantieni in una struttura dati. Ma la applet, la sua istanza, è sempre quella in esecuzione, no?

    E allora il "caching" del classloader non centra nulla. Potrebbe centrare invece come fai la richiesta al server. Usi le classi di networking standard di Java? URL, URLConnection & company?
    Tieni presente che al livello di questo networking esiste una gestione del "caching" delle request (in base e dipendentemente dal protocollo), vedi il metodo setUseCaches() di URLConnection.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Si, dunque il problema è un pelino più complesso
    Comunque hai ragione, la mia classe non cambia, cambiano i valori di una struttura dati al suo interno, ho sbagliato ad impostare la discussione.
    Il contenuto della struttura dati in questione, viene recuperato tramite una libreria Java,
    che si chiama RestFB (praticamente serve per sfruttare le API di Facebook).
    Questa libreria a fronte di una query, genera una lista di oggetti di tipo List, che poi viene convertita in Sequence e passata al lato JavaFX.
    Ora andrò a vedermi i dettagli implementativi, poi riposterò per eventuali novità.
    Grazie intanto.

  4. #4
    Bella, ci son riuscito!
    La libreria ha una classe che si chiama DefaultWebRequestor che implementa
    un'interfaccia WebRequestor, utilizzando parametri pressochè (appunto) di default.
    Al suo interno istanzia un oggetto di tipo HttpURLConnection, allora come da consiglio
    ho impostato:

    codice:
    httpUrlConnection.setUseCaches(false);
    Poi ho ricompilato ed ora sembra non cachare più i risultati della query
    Dopotutto è stato più difficile ricompilare con ANT che cambiare una riga di codice.
    Grazie andbin, mi chiedo come faccia ogni volta ad inquadrare così velocemente il
    problema.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.