Questo argomento fornisce una panoramica dettagliata dell'architettura del componente
distribuito definito nella specifica di architettura Sun Microsystems Enterprise JavaBeans (EJB).
Le specifiche di Enterprise JavaBeans e le descrizioni complete della tecnologia sono disponibili sul sito Web java.sun.com
.
I bean enterprise forniscono diversi vantaggi per gli sviluppatori di applicazioni:
- Consentono di generare applicazioni distribuite combinando componenti sviluppati utilizzando strumenti di
doversi fornitori.
- Semplificano la scrittura di applicazioni. Non è necessario preoccuparsi dei dettagli di livello inferiore delle
transazioni né della gestione dello stato, dei multithread, del pool delle risorse
e di altre API di livello inferiore complesse. Tuttavia, se necessario, i programmatori esperti possono ancora accedere direttamente alle
API di livello inferiore.
- Possono essere sviluppate una volta e quindi distribuite su più piattaforme senza che sia necessario
ricompilare o modificare il codice di origine.
- La specifica EJB che regola l'uso dei bean enterprise è compatibile con altre API Java e CORBA. Inoltre consente interoperabilità tra bean
enterprise e applicazioni non Java.
- Bean enterprise
- Un bean enterprise è un componente non visivo di un'applicazione enterprise
distribuita e orientata agli oggetti. Generalmente i bean enterprise vengono distribuiti in contenitori
EJB e vengono eseguiti su server EJB. È possibile personalizzarli modificandone i descrittori di distribuzione
e assemblarli con altri bean per creare nuove applicazioni. Esistono tre tipi di bean enterprise:
bean di sessione, bean di entità e bean basati sui messaggi.
- Bean di sessione: i bean di sessione sono bean
enterprise non persistenti. Possono essere stateful o stateless. Un bean di sessione
mantiene le informazioni sulla sessione specifiche del client (chiamate anche stato colloquiale)
in più chiamate di metodi e transazioni.
Un bean di sessione dura per tutta una singola sessione client/server. Un bean di sessione stateless, invece, non conserva alcuno stato colloquiale.
I bean di sessione stateless sono raccolti dai rispettivi contenitori per gestire più richieste
da più client.
- Bean di entità: i bean di entità sono bean enterprise
che contengono dati persistenti e che possono essere salvati in diversi archivi di dati persistenti. Ciascun bean di entità ha una sua propria identità. I bean di entità che gestiscono la propria
persistenza sono definiti bean di entità BMP (bean-managed persistence). I bean di entità che delegano la propria persistenza ai contenitori EJB
sono definiti bean di entità CMP (container-managed persistence).
- Bean basati sui messaggi: i bean basati sui messaggi sono
bean enterprise che ricevono ed elaborano messaggi JMS. A differenza dei bean di sessione o di entità, i bean
basati sui messaggi non hanno interfaccia. È possibile accedervi solo attraverso la messaggistica e
non conservano alcuno stato colloquiale. I bean basati sui messaggi consentono la comunicazione asincrona tra la coda e il
listener e permettono di separare l'elaborazione dei messaggi e la logica business.
- Vista Client remoto
- La vista Client remoto è disponibile a partire dalla versione EJB 1.1. La vista Client remoto di un bean enterprise è indipendente dal percorso.
Un client in esecuzione nella stessa JVM come istanza bean utilizza la stessa API per
accedere al bean come client in esecuzione su una JVM diversa sulla stessa macchina o su una macchina diversa.
- Interfaccia remota: l'interfaccia remota specifica i metodi
business remoti che un client può richiamare su un bean enterprise.
- Interfaccia home remota: l'interfaccia home remota specifica i metodi utilizzati
dai client remoti per individuare, creare e rimuovere le istanze di classi di bean enterprise.
- Vista Client locale
- La vista Client locale è disponibile EJB 2.0 o in versioni successive. A differenza della vista Client remoto, la vista Client locale di un bean dipende dal percorso. L'accesso della vista Client locale al bean enterprise, richiede che sia il client locale che il
bean enterprise si trovino nella stessa JVM. La vista Client locale, quindi, non consente di individuare
il percorso come accade nella vista Client remoto. Le interfacce locali e le interfacce home locali forniscono
supporto per l'accesso da bean enterprise che sono client locali. I bean di sessione e di entità possono essere associati ai rispettivi client, consentendo l'accesso
senza il carico generalmente associato alle chiamate ai metodi remoti.
- Interfaccia locale: l'interfaccia locale è una versione semplificata
dell'interfaccia remota, destinata a client locali. Include i metodi di logica
business che possono essere richiamati da un client locale.
- Interfaccia home locale: l'interfaccia home locale specifica i metodi utilizzati
dai client locali per individuare, creare e rimuovere le istanze di classi di bean enterprise.
- Vista Client di servizi Web
- Nella specifica EJB 2.1, l'architettura EJB ha introdotto il supporto per i servizi
Web. Un client per un bean di sessione può essere un client di servizi Web.
I client di servizi Web possono utilizzare la vista Client di servizi Web dei bean di sessione,
che dispone di una interfaccia dell'endpoint di servizio corrispondente.
- Interfaccia dell'endpoint di servizio
- L'interfaccia dell'endpoint di servizio per i bean di sessione stateless, mostra
la funzionalità dei bean di sessione come un endpoint di servizio Web. Il documento WSDL (Web Service
Description Language) di un servizio Web, descrive il servizio Web come insieme di
endpoint che operano sui messaggi. Un documento WSDL può includere la
Service Endpoint Interface di un bean di sessione stateless come uno dei propri endpoint.
È possibile modificare un bean di sessione stateless esistente affinché includa una vista Client di servizi
Web, o è possibile associare una Service Endpoint Interface da un WDSL esistente affinché fornisca
l'interfaccia corretta.
La vista Client di servizi Web è indipendente dal percorso
ed è possibile accedervi mediante le chiamate remote.
- File Jar client EJB
- Un file JAR client EJB è un file JAR facoltativo che può contenere le interfacce client necessarie
a un programma per utilizzare le viste del client dei bean enterprise contenuti nel file JAR EJB. Se si decide di non creare il file JAR client EJB per un modulo EJB, tutte le classi di interfaccia del
client saranno contenute nel file JAR EJB. Per impostazione predefinita, il workbench crea progetti JAR di client EJB
per ciascun progetto EJB corrispondente.
- Contenitore EJB
- Un contenitore EJB è un ambiente di runtime che gestisce uno o più bean enterprise. Il contenitore EJB gestisce i cicli di vita degli oggetti bean enterprise, coordina le transazioni
distribuite, ed implementa la protezione degli oggetti. Generalmente, ciascun contenitore
EJB viene fornito da un server EJB e contiene un insieme di bean enterprise
che viene eseguito sul server.
- Descrittore di distribuzione
- Un descrittore di distribuzione è un file XML compresso con i bean enterprise
in un file JAR EJB o in un file EAR. Contiene metadati che descrivono i contenuti
e la struttura dei bean enterprise, la transazione di runtime e le informazioni di protezione
per il contenitore EJB.
- Server EJB
- Un server EJB è un processo di alto livello o un applicazione che fornisce un ambiente di
runtime che supporta l'esecuzione delle applicazioni server che utilizzano i bean enterprise. Un server EJB fornisce un servizio di denominazione accessibile per JNDI, gestisce e
coordina l'allocazione delle risorse alle applicazioni client, fornisce accesso alle risorse
del sistema e fornisce un servizio di transazione. Un server
EJB potrebbe essere fornito da, per esempio, un database o da un server di applicazioni.