MokaByte Numero  44  - Settembre 2000
 
Rassegna di 
application server 
EJB
di 
Andrea Giovannini
Raffaele Spazzoli
In questo articolo presenteremo una rassegna di alcuni application server J2EE freeware/open source

Una breve analisi comparativa fra alcuni dei principali server EJB disponibili gratuitamente su internet

Introduzione
Navigando per i siti specializzati nella programmazione in ambiente Java enterprise si incontrano sempre più spesso implementazioni di EJB container free e/o open source.
Abbiamo deciso di esaminarne alcune prendendo in considerazione i seguenti parametri:
  • La conformità alle specifiche della piattaforma j2ee (java 2 Enterprise Edition[2]).
  • La semplicità della procedura di installazione.
  • La qualità della documentazione.
  • La semplicità del processo di deployment.
  • La qualità degli eventuali tool di supporto che accompagnano il server.
Come si può notare non abbiamo voluto considerare le performance e la scalabilità delle implementazioni. A parte la difficoltà di eseguire correttamente tali test riteniamo che questo tipo di confronti sia da effettuarsi su server commerciali e che invece i server open source siano da usarsi, al momento, solo per fini di apprendimento e sperimentazione.
I server esaminati sono i seguenti:
  • j2sdkee (www.javasoft.com/j2ee)
  • Orion (www.orionserver.com)
  • Jboss (www.ejboss.org)
  • Enhydra (www.enhydra.org)
Il server j2sdkee
Il j2sdkee è l’SDK per lo sviluppo di applicazioni EJB distribuito dalla sun. Esso contiene un EJB container, un web server (Tomcat), un RDBMS (Cloudscape) più alcuni strumenti che semplificano l’istallazione del server e il deploy delle applicazioni. L’EJB container incluso nel j2sdkee, sebbene presenti alcune limitazioni soprattutto per quanto riguarda la scalabilità e le performance, riveste un ruolo di particolare importanza nella comunità degli sviluppatori di EJB; esso, infatti, è la reference implementation delle specifiche di un EJB Container[1]. Questo significa che se le specifiche degli EJB dovessero essere poco precise lasciando adito a interpretazioni diverse da parte di chi voglia implementare un EJB Container il comportamento “giusto” al quale fare riferimento è quello del server contenuto nel j2sdkee.
Noi abbiamo esaminato il j2sdkee1.2.1 che è conforme alle specifiche 1.2 della j2ee; esse richiedono all’EJB Container di essere compatibile con gli EJB 1.1, al web server di avere il supporto per le servlet 2.2 e JSP1.1 e al DMBS di essere accessibile mediante le API di JDBC 2.0. 

Procedura di installazione
La procedura di installazione in ambiente Windows è molto semplice, infatti il j2sdkee viene distribuito in un file autoinstallante. L’unica cosa che bisogna fare è definire due variabili di ambiente: JAVA_HOME e J2EE_HOME in modo che puntino rispettivamente alla directory di installazione del jdk e del j2sdkee.

Tool di supporto
Il j2sdkee comprende il DeployTool: un tool molto potente per creare i package ed eseguire il deploy degli stessi su un server j2sdkee.
Il DeployTool è dotato di una discreta veste grafica  e consente di creare file .jar contenti Enterprise Java Bean, file .war contenenti Web Application e file .ear che è il formato di file in grado di contenere i file precedenti e di cui si può eseguire il deploy.
La cosa molto bella di questo strumento è che il packaging dei file avviene attraverso una serie di wizard che come risultato finale hanno la creazione dei file XML che descrivono il contenuto dei package creati. Tutto questo senza che l’utente debba conoscere nulla del formato dei file XML.
Un’altra cosa molto utile del DeployTool è il verifier, uno strumento che controlla la consistenza delle informazioni contenute nei Deployment Descriptor e ne segnala eventuali irregolarità. 

Deploy
Il deploy di una applicazione in un server j2sdkee avviene mediante il DeployTool ed è semplice quanto la pressione di un tasto. Si noti che il DeployTool è in grado di gestire l’undeploy e l’update delle applicazioni.

Esempi e documentazione
Il j2sdkee è piuttosto ricco di documentazione, in particolare segnaliamo un tutorial per il programmatore [3] molto utile per chi voglia avvicinarsi in maniera rapida alla programmazione degli EJB.
Il j2sdkee è anche molto ricco di esempi che mettono in risalto tutti gli aspetti della programmazione in ambiente j2ee: dai session bean agli entity bean, dai client grafici classici alle applicazioni web con pagine jsp. Proprio da questi esempi abbiamo preso l’applicazione campione ("JavaServer Pages Components") che usiamo per testare la semplicità del deployment sui vari EJB container.
 
 
 

Orion
Abbiamo esaminato la versione 1.0 RC2 di Orion, un application server commerciale per il quale è disponibile una licenza di sviluppo gratuita.
Orion è un server con diverse funzionalità; oltre che come EJB container può essere
infatti utilizzato come server Web (con supporto a servlet 2.2 e JSP 1.1) e server JMS. Una interessante caratteristica di Orion è l'integrazione fra il server Web e il servlet engine che permette di avere migliori prestazioni.
La versione esaminata di Orion fornisce un parziale supporto alla creazione di EJB 2.0.

Procedura di installazione
L'installazione è molto semplice:

  1. si scompatta il file della distribuzione;
  2. si copia il file tools.jar del JDK nella directory creata in modo da poter sfruttare il supporto alle pagine JSP;
  3. si esegue il server con l'opzione di installazione (java -jar orion.jar -install) in modo da terminare l'installazione e configurare la password dell'amministratore.
Dopo queste semplici operazioni il server è pronto per l'esecuzione.

Tool di supporto
Lo sviluppatore che usa Orion ha a disposizione alcuni tool di supporto per le fasi di

  • creazione di un EJB: attraverso un semplice programma a interfaccia grafica (EJB-Maker) è possibile creare tutti i file necessari a un EJB, pronti per essere compilati;
  • assembly: vengono forniti diversi tool per creare i vari archivi che compongono un'applicazione J2EE
  • EJB-Assembler
  • Taglib-Assembler
  • EAR-Assembler
  • Client-Assembler
  • WebApp-Assembler
Gli strumenti disponibili sono diversi ma purtroppo la documentazione sul loro utilizzo è scarsa.

Deploy
Il deploy di un EJB avviene in modo automatico all'avvio del server. Dopo aver copiato i vari file che compongono un'applicazione (jar, war, ear) in una apposita directory si compila un file di configurazione XML che viene letto dal server durante l'inizializzazione. Nel caso si debbano eseguire delle modifiche al componente è sufficiente modificare il file di configurazione e far ripartire il server.

Esempi e documentazione
La distribuzione comprende diversi esempi di applicazioni EJB e JMS che possono essere provati seguendo la documentazione allegata.
La documentazione di Orion deve essere scaricata dal sito Web in un file separato dalla distribuzione e si compone di diverse parti:

  • tutorial per lo sviluppo e deploy di applicazioni;
  • howto per la creazione di una nuova applicazione, compreso lo strato Web;
  • documentazione sui file di configurazione XML;
  • FAQ;
  • la API di Orion;
  • documenti di specifica delle tecnologie J2EE;


Nel sito Web (http://www.orionserver.com) è inoltre disponibile un tutorial per l'estensione dei tag nelle pagine JSP oltre ad alcune demo on-line.
 
 

Enhydra
Abbiamo provato la versione 4.0 alpha 1 di Enhydra. Enhydra è un progetto piuttosto maturo di un application server scritto in java, partito qualche tempo prima della pubblicazione delle specifiche per gli ejb container. I designer di Enhydra hanno progettato, in maniera piuttosto lungimirante, un server modulare (Figura1) composto da una grande quantità di servizi fra cui citiamo:

  • Scheduling Service
  • Logging Service
  • Management Service
  • Messaging Service
  • Transaction Service
  • Web Container Service
  • Distribuited Session Service
  • Distribuited Load Balancing Service

 
Figura 1 - I servizi che compongono il server  Enhydra

A un anno dall'uscita della versione enterprise di Java il team di Enhydra ha deciso di integrare nel loro sever il supporto per gli EJB senza peraltro abbandonare il supporto al preesistente modello di programmazione delle applicazioni server. L’integrazione dovrebbe avvenire nel passaggio dalla versione 3.0 di Enhydra alla 4.0. Avendo testato la release alpha 1 della versione 4.0, abbiamo potuto constatare che il supporto per gli EJB è ancora incompleto in quanto sebbene il server sia in grado di eseguire gli EJB, il deployment degli stessi non avviene mediante i deployment descriptor standard, ma mediante il formato proprietario di Enhydra.
L'adozione del modello di esecuzione degli EJB all'interno del server Enhydra avviene includendo un EJB server open source di cui non ci siamo occupati in questo articolo, sviluppato dalla BullSoft (JonAs scaricabile al sito http://www.objectweb.org/jonas/JonasHomePage.htm oppure http://www-frec.bull.com/engine/index.htm ). 

Procedura di installazione
La procedura di installazione in ambiente Windows è piuttosto complicata. Infatti, dopo avere scompattato il file di installazione scaricato dalla rete è necessario lanciare uno script che esegue alcune modifiche sui file di configurazione in base alla locazione nel filesystem dell'installazione di Enhydra e alla locazione della JVM che si intende usare. Il problema nasce dal fatto che lo script è interpretabile solo da una shell unix per cui è necessario installarsi un emulatore di shell unix (viene consigliato quello distribuito gratuitamente dalla cygnus http://www.enhydra.org/enhydraEnterprise/download/DownloadGygwin.htm). In ambiente unix invece la procedura di installazione è decisamente più immediata.

Tool di supporto
Inoltre il team di Enhydra ha previsto una serie di strumenti utili in fase di sviluppo di applicazioni:

  • Un gestore di persistenza degli oggetti su DBMS relazionale (DODS)
  • Un generatore di scheletri di applicazioni basato su template (newapp)
  • Un framework per lo sviluppo di applicazioni web dinamiche basate su un modello MVC simile a quello usato nelle moderne interfacce grafiche (XMLC)
Purtroppo però questi strumenti sebbene molto potenti attualmente si integrano molto poco con le applicazioni j2ee. 

Deploy
Come detto nell’introduzione, Enhydra, allo stato attuale, non supporta il deploy di applicazioni j2ee (file .ear) né di EJB (file .jar) tramite i deplolyment descriptor standard. Per eseguire il deploy è necessario editare i file .conf di Enhydra che contengono le impostazioni per l’EJB container e il web server.
 Esempi e documentazione
Quasi tutta la documentazione che si trova sul sito, peraltro ottimamente redatta, si riferisce ancora alla versione 3.0 di Enhydra, perciò, non prendendo in considerazione le applicazioni j2ee è risultata poco utile ai nostri scopi.
 
 
 

Jboss
Jboss 2.0 è un EJB Container open source compatibile con le specifiche EJB 1.2. Jboss 2.0 è fondamentalmente un framework che espone allo sviluppatore una serie di API per la creazione di container specializzati nella gestione di particolari Bean. I tipi di container sono visti come plug-in e in teoria possono essere sviluppati da terze parti. Al momento del deploy il container factory che è un modulo del framework riconosce il tipo di bean che deve essere installato e instanzia il container più adatto a gestirlo.
Attualmente Jboss 2.0 viene distribuito con tre tipi di container:

  • EntityContainer
  • StatelefulSessionContainer
  • StatelessSessionContainer
Come si può ben capire però non sarà difficile per gli sviluppatori di Jboss aggiungere il supporto ai Message Driven Bean previsti dalle specifiche EJB 2.0.
Un’altra caratteristica interessante di Jboss è che il server viene amministrato mediante la JMX (Java Management Extension [4]) per cui ogni componente deve fornire la propria interfaccia Mlet dopodichè potrà essere amministrato via web (al momento della installazione il server web di amministrazione di jboss si trova sulla porta 8082). 
Jboss 2.0 al momento non è integrato con un servlet/JSP Container. Questo non impedisce di creare web applications, infatti per fare ciò è sufficiente affiancarlo a un web server capace di gestire le servlet e JSP. Nelle future release di Jboss è prevista l'integrazione con Tomcat. 

Procedura di installazione
L’installazione è molto semplice, si tratta di scompattare il file scaricato dal sito di jBoss (www.ejboss.org); questo crea la struttura di directory richiesta da jboss. Non è necessario configurare nient’altro e il server è già pronto a partire.

Tool di supporto
Jboss 2.0 presenta un tool grafico (EJX) per la creazione dei deployment descriptor. 
Jboss aggiunge due deployment descriptor proprietari ed opzionali. Uno serve a dare direttive al container quali il nome JNDI col quale devono essere esportati gli EJB, l'altro serve a dettagliare la gestione della persistenza per i Container Managed Beans.
Abbiamo avuto alcune difficoltà nell'utilizzo di questo tool dovute probabilmente all'immaturità e alla instabilità dello stesso.

Deploy
Il deploy può avvenire in due modi: manuale o automatico.
Il deploy manuale si esegue dalla management console del container factory passando come parametro l'URL del file .jar.
Il deploy automatico è un servizio gestito dall'AutoDeployer, anch'esso amministrabile dalla management console. Questo servizio si attiva copiando il file .jar che si vuole installare nella directory <inst-dir>/deploy, l'effetto è che il file viene ispezionato e se contiene degli EJB questi vengono installati. Una cosa interessante è che i file .jar installati vengono controllati ad intervalli di tempo regolari e nel caso vengano aggiornati il servizio di AutoDeployer si attiva per reinstallare i beans in essi contenuti. Questo risulta utile soprattutto in fase di sviluppo quando si fanno molte build frequenti.

Esempi e documentazione
La documentazione distribuita di Jboss 2.0 è piuttosto scarsa e si riduce praticamente ai javadoc delle API del framework. Anche gli esempi sono pochi (due) e scarsamente documentati.

Conclusioni
La tecnologia J2EE è ormai una realtà nelle applicazioni enterprise e per poter iniziare ad esercitarsi con questo nuovo tipo di applicazioni è molto utile avere a disposizione un server freeware/open-source. In questo articolo abbiamo proposto una rassegna di alcuni server disponibili basandoci sulle esigenze pratiche del programmatore (disponibilità di esempi e documentazione, facilità d'installazione, ...) e tralasciando aspetti come prestazioni e scalabilità che interessano maggiormente gli ambiti commerciali.
 

Bibliografia
[1] Sun Microsystems, “Enterprise Java Bean Specification v1.1”
[2] Sun Microsystems, “Java2 Platform Edition Specification v1.2”
[3] Sun Microsystems, “Java 2 Enterprise Edition Developers Guide”
[4] Java Management eXtension,  java.sun.com/products/JavaManagement/index.html
 

Scheda riassuntiva del confronto


 
J2ee 1.2 complaint
Installazione
Documentazione 
Tool di supporto
Deploy
J2sdkee
Automatica
Buona
Buono
Molto Semplice
Enhydra
No, manca il supporto ai deplyment descriptor
Complessa in ambiente Windows
Abbondante ma ancora relativa alla versione precedente
Diversi e molto potenti, ma ancora poco integrati con l’ambiente EJB
N/A
Orion
Semplice
Buona
Diversi e potenti ma ancora instabili
Molto semplice
Jboss
Sì, manca il web server integrato 
Semplice
Scarsa
Scarso
Molto Semplice

Chi volesse mettersi in contatto con la redazione può farlo scrivendo a mokainfo@mokabyte.it