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:
-
si scompatta
il file della distribuzione;
-
si copia
il file tools.jar del JDK nella directory creata in modo da poter sfruttare
il supporto alle pagine JSP;
-
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
|
Sì
|
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
|
Sì
|
Semplice
|
Buona
|
Diversi
e potenti ma ancora instabili
|
Molto
semplice
|
Jboss
|
Sì,
manca il web server integrato
|
Semplice
|
Scarsa
|
Scarso
|
Molto
Semplice
|
|