Architettura EJB

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:

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.