Studio e Realizzazione di Architetture Concorrenti per Sistemi ad ...
Studio e Realizzazione di Architetture Concorrenti per Sistemi ad ...
Studio e Realizzazione di Architetture Concorrenti per Sistemi ad ...
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
<strong>Architetture</strong> <strong>Concorrenti</strong> in prodotti a larga <strong>di</strong>ffusione - Confronti 35<br />
2.4.3 Specifiche <strong>per</strong> la concorrenza<br />
EJB non entra nel merito dell'interfaccia Container-server (il cui confine non è<br />
neanche eccessivamente delimitato), ma si concentra particolarmente sulle<br />
specifiche <strong>per</strong> quella Container-Bean: <strong>per</strong> questo motivo l'amministrazione delle<br />
risorse è nascosta, ed o<strong>per</strong>azioni come la gestione delle connessioni ai database,<br />
quella della memoria e dei thre<strong>ad</strong> sono demandati interamente al server (<strong>di</strong>pendente<br />
dal fornitore). Un server EJB provvede a tutta l'infrastruttura necessaria <strong>per</strong><br />
l'esecuzione dei Container.<br />
In EJB non esistono, quin<strong>di</strong>, specifiche riguardanti le politiche <strong>di</strong> concorrenza da far<br />
<strong>ad</strong>ottare <strong>ad</strong> un server, ma alcune limitazioni concernenti vengono esplicitamente<br />
imposte alle implementazioni dei Bean <strong>per</strong> evitare l'insorgere <strong>di</strong> problemi <strong>di</strong><br />
sicurezza, <strong>di</strong> quelli tipici del multi-threa<strong>di</strong>ng e favorire il controllo da parte dei<br />
Container:<br />
1. Un Container deve assicurare che al più un thre<strong>ad</strong> possa eseguire una data<br />
istanza <strong>per</strong> volta: se, mentre un'implementazione è in esecuzione, giunge una<br />
seconda richiesta, da parte <strong>di</strong> un client, sulla stessa istanza, questa deve essere<br />
rifiutata e bisogna lanciare un'opportuna eccezione.<br />
2. Un Bean non deve <strong>ad</strong>ottare le primitive <strong>di</strong> sincronizzazione <strong>di</strong> Java; in particolare<br />
non deve mai contenere la parola chiave "synchronized". Alcuni Container<br />
potrebbero infatti utilizzare più <strong>di</strong> una JVM (Java Virtual Machine) <strong>per</strong> eseguire<br />
<strong>di</strong>verse istanze invalidando la sincronizzazione.<br />
3. Un Bean non deve mai cercare <strong>di</strong> amministrare thre<strong>ad</strong>: non può invocare primitive<br />
quali stop(), suspend() e resume(), né gestire priorità o gruppi <strong>di</strong> thre<strong>ad</strong>. Queste<br />
funzioni sono <strong>di</strong> competenza del Container che ne deve avere il controllo assoluto<br />
<strong>per</strong> l'appropriata gestione dell'ambiente [Bibl. 18]<br />
2.5 Confronti<br />
Tra i prodotti presentati, quelli più facilmente confrontabili sono DCOM e CORBA.