Classloader

Da wiki.maggioli.it.
Versione del 27 mar 2012 alle 16:37 di imported>Ermes.bertoni
Jump to navigation Jump to search

Scopo

Scopo di questa componente di Sicraweb è quello di sostituire Java Web Start nel ruolo di supporto all'esecuzione di Sicraweb da remoto via protocollo http. Questo con l'obiettivo di risolvere i problemi legati a Java Web Start per bug e/o incompatibilità con le diverse versione della Java Virtual Machine.

Vincolo della soluzione è quello di non dover modificare nulla nell'applicazione Sicraweb che quindi continua a poter funzionare anche 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