28.05.2013 Views

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 ...

SHOW MORE
SHOW LESS

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.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!