Classloader

Da wiki.maggioli.it.
Jump to navigation Jump to search

Obiettivi

Scopo principale di questa componente di Sicraweb è quello di sostituire Java Web Start nel ruolo di supporto all'esecuzione di Sicraweb da remoto via protocollo HTTP.

L'utilizzo del modulo permette di conseguire i seguenti vantaggi:

  • Sono automaticamente risolti tutti i problemi dovuti a malfunzionamenti e/o incompatibilità dello stesso Java Web Start nelle sue diverse versioni (notare che la versione di Java Web Start dipende dalla versione della Java Virtual Machine sui client, mentre il modulo classloader Sicraweb è incorporato neell'applicazione Sivcraweb).
  • L'impegno di risorse di rete è ridotto in quanto il modulo scarica sul client le sole risorse strettamente necessarie alle funzionalità di Sicraweb utilizzate dall'operatore che utilizza quel client. In particolare questo è ottenuto gestendo le risorse a livello di singole classi java piuttosto che di interi file jar.

Ulteriore caratteristica del modulo è quella di non pregiudicare l'utilizzo di Sicraweb nella modalità tradizionale. Allo stesso server sicraweb possono quindi connettersi contemporaneamente alcuni client nella vecchia modalità e altri nella nuova (utilizzando link a file jnlp diversi).

Principi di funzionamento

Nelle sue linee essenziali il modulo si compone di una mini-applicazione di startup, eseguita questa per mezzo di Java Web Start, che istanzia un classloader diverso da quello di Java Web Start. Viene quindi eseguito un secondo task java che utilizza questo classloader e che esegue l'applicazione Sicraweb. Il classloader, per funzionare, necessita di un interlocutore sul server, che gli fornisca le risorse (classi java e altre risorse). Questa componente è realizzata come servlet ed ha il compito di fornire ai diversi client che si connettono le risorse necessarie. La servlet mantiene anche una base dati di statistiche d'uso delle risorse in modo da ottimizzare l'invio delle stesse ai client.

Componenti

Componenti logici

Dal punto di vista logico i componenti sono i seguenti:

  • Startup: miniapplicazione di 'innesco'
  • Classloader: vero e proprio classloader
  • Servlet: servlet di supporto ai classloader sui client
  • Setup: inizializzazioni e upgrade secondo gli standard Sicraweb
  • Amministrazione: funzioni di attivazione, disattivazione e tuning

Componenti fisici

I componenti fisici sono i seguenti jar:

  • it.saga.library.classLoader.admin.jar (form di amministrazione)
  • it.saga.library.classLoader.client.jar (startup e classloader)
  • it.saga.library.classLoader.menu.jar (menu di amministrazione)
  • it.saga.library.classLoader.server.jar (servlet e parte server di amministrazione)
  • it.saga.library.classLoader.setup.jar (setup)

Startup

La miniapplicazione di startup viene lanciata mediante Java Web Start. Questo rende necessario l'utilizzo di un nuovo e diverso file JNLP.

Nuovo JNLP vs. vecchio JNLP

Al termine dell'avvio di Sicraweb, osservando i processi attivi sul client si potranno vedere quindi due processi: un processo javaw.exe (la miniapplicazione di startup) ed un processo java.exe (sicraweb).

Classloader

Il classloader fornisce all'applicazione Sicraweb le classi Java e le risorse man mano che sono necessarie. Allo scopo mantiene sul file system del client una cache delle risorse. Nel caso la risorsa richiesta da Sicraweb sia già presente nella cache, questa viene letta da essa, altrimenti viene chiesta al server, scaricata, messa a disposizione di Sicraweb e aggiunta alla cache locale.

Cache client

Precaricamento delle risorse

Servlet

La servlet si occupa di:

  • inizializzarre (la prima volta) una cache contenente tutte le risorse che necessitano ai client
  • a ogni avvio di jboss, controllare se ci sono stati eventuali upgrade ai jar e riallineare, se necessario, la cache
  • informare i client se le risorse contenute nelle loro cache sono obsolete
  • fornire ai client le risorse richieste, ottimizzando le risposte in base alle statistiche d'uso
  • mantenere statistiche sull'utilizzo delle risorse

Cache server

Amministrazione

Attivazione e disattivazione del classloader

Configurazione dei parametri globali

Configurazione della connessione