Introduzione a JBoss AS 5
JBoss AS 5 è un application server compatibile con Java Enterprise Edition 5 che fornisce un insieme di servizi ai componenti delle applicazioni (Enterprise JavaBeans, Java Serve Pages, Servlet… ).JBoss AS costituisce il cuore di un middleware noto come JBoss Enterprise Middleware Suite (JEMS) le cui parti si integrano con JBoss AS.
Alcuni di queste sono:
- JBoss Microcontainer: è il framework di configurazione usato per collegare fra loro i servizi JBoss AS
- Hibernate: è un framework ORM (Object-Relational Mapping) utilizzato per implementare la persistenza definita dalle specifiche EJB 3.
- JBoss SX: è un servizio di sicurezza dichiarativo basato su ruoli e utilizzato da altri servizi
- JBoss Web Server: è il web server che consente l’uso di tecnologie come Servlet, JavaServer Pages, JavaServer Faces…
- EJB Server: costituisce un’implementazione delle specifiche EJB 3
- JBoss Messaging: un servizio di messaging compatibile con le specifiche Java Messaging Service (JMS)
- JBoss Portal: un servizio compativile con le specifiche JSR-168
- JBoss Cache: una cache transazione e distribuita usata da diversi servizi JBoss AS
- JBoss Transaction: servizio per la gestione di transazioni
Organizzazione delle directory in JBoss AS 5
Le directory principali di JBoss AS 5 sono:- bin: contiene tutti i binary e gli script necessari all’avvio e allo stop di JBoss AS.
-
client: contiene librerie che potrebbero essere utili per comunicare con JBoss AS da un’applicazione client.
Queste librerie non sono caricate direttamente dal server ma da programmi client che vengono eseguiti su differenti JVM rispetto a quella usata da JBoss AS (tali applicazioni includono standard GUI (Swing o AWT), client di WebServices remoti, web container remoti, client JMS).
Tipicamente i client remoti invocano EJB, Web Services o JMS in esecuzione sul server.
Le librerie nella directory client sono usate dai client standaone per fare le chiamate remote a JBoss AS.
Molte applicazioni (la maggior parte) non faranno uso delle librerie incluse in questa cartella per il semplice fatto che spesso il livello web e business sono collocati sullo stesso server e condividono lo stesso set di librerie.
I browser possono quindi comunicare con il livello web mediante http e il web tier può comunicare con il livello business e gli EJB mediante chiamate locali. -
docs: contrariamente a quanto si possa pensare questa directory non contiene manuali utente, guide o javadoc per l’application server bensì file Document Type Definition e XSD per i file di configurazione usati da JBoss AS, esempi di servizi J2EE o JBoss AS, licenze di varie librerie incluse in JBoss AS e risultati di test fatti con particolari release.
Una directory molto importante è docs/examples/jca che contiene esempi di file di configurazione di datasource per differenti database.
Per esempio se stiamo usando un database MySQL possiamo copiare il file mysql-ds.xml da questa directory nella directory server/xxx/deploy e modificarne la configurazione. - lib: contiene librerie richieste da JBoss AS per avviare il core dell’Application Server.
- server: in questa cartella sono presenti le cartelle corrispondenti alle possibili configurazioni del server.
Configurazione del server
Il cuore di JBoss è un microcontainer al quale è possibile collegare i servizi di cui le applicazioni necessitano.Oltre alla riduzione dell’occupazione della memoria, il caricamento dei soli servizi strettamente necessari, consente tra le altre cose di avere meno problemi di sicurezza o vulnerabilità.
Sotto ogni directory contentente i file di configurazione del server esistono 4 cartelle principali: conf, deploy, deployers e lib.
In aggiunta a queste, al primo avvio di JBoss AS con una data configurazione, vengono create diverse directory aggiuntive contenenti file temporanei e di log: data, log, tmp e work.
La directory conf che contiene i file usati dalla configurazione del server, viene scannerizzata una sola volta al boot del server pertanto eventuali cambiamenti ai file di configurazione devono essere seguiti da un restart del server affinchè possano avere effetto.
Alcuni dei file di configurazione presenti al suo interno sono:
- bootstrap.xml: include i riferimenti ad altri file di configurazione che definiscono un serie di POJO o Javabean che forniscono servizi quali:
- il Profile Service che fornisce informazioni di base sul caricamento dei servizi
- il kernel JMX
- bean legati ai deployers (incluso il Main Deployer che gestisce tutti i deployer).
bootstrap/logging.xml bootstrap/vfs.xml bootstrap/classloader.xml bootstrap/aop.xml bootstrap/jmx.xml bootstrap/deployers.xml bootstrap/profile.xml - jboss-service.xml: definisce i servizi JMX che vengono avviati insieme al server Jboss-log4j.xml: consente di configurare le opzioni di logging
- login-config.xml: consente di configurare i moduli di sicurezza per la gestione dell’autenticazione e dell’autorizzazione.
- standardjboss.xml: consente di configurare i container EJB
In questa cartella viene effettuato il deploy di qualsiasi package sia questo un Java Archive (JAR), un Web Archive (WAR) o un Enterprise Archive (EAR).
La directory deployers contiene tutti i servizi JBoss AS usati per effettuare il deploy dei differenti tipi di archivi: per esempui la directory ejb3.deployer contiene librerie e file di configurazione necessari ad effettuare il servizio di deploy di applicazioni EJB3.
La directory lib contiene le librerie condivise fra tutti i servizi e le applicazioni all’interno della configurazione del server.
La prima volta che viene eseguita una data configurazione di JBoss AS, vengono generate alcune cartelle:
- data: viene usata dai servizi e dalle applicazioni che necessitano di scrivere nel file system per memorizzare dati temporanei
- log: contiene tre file di log: boot.log, server.log e audit.log. Il primo è un file temporaneo usato per il logging durante l’avvio di JBoss AS. Il file server.log è il file in cui log4j (il servizio usato da JBoss AS) scrive.
- tmp: contiene dati temporanei di vari servizi
- work: è usata dal Web Server JBoss per memorizzare i file JSP compilati e altri dati temporanei.
Microcontainer
Le precedenti versioni di JBoss AS erano costruite attorno a Java Management Extension (JMX) un kernel che forniva un insieme di funzioni base, tutti i servizi erano scritti come ManagedBean (MBeans) e ne veniva fatto il plugin nel kernel JMX.Con la release 4.0.3, JBoss AS ha iniziato la sua migrazione verso un’architettura microcontainer che consente di scrivere i nuovi servizi come POJO (Plain Old Java Object) piuttosto che come MBeans.
JBoss Microcontainer è un framework che consente di:
- specificare gli oggetti che devono essere istanziati
- fornire i parametri al costruttore degli oggetti istanziati
- specificare le dipendenze tra gli oggetti.
Per configurare il microcontainer è possibile usare i file di configurazione nella cartella server/xxx/conf.
Il file server/xxx/conf/profile.xml definisce alcune delle caratteristiche del microcontainer mediante la dichiarazione di bean:
Come si vede, ogni bean (tag bean) ha un nome e fa riferimento ad una classe che implementa il bean.... ... ... ${jboss.server.home.dir} ......
${jboss.server.home.url}deployers/
Mediante l’elemento constructor è possibile specificare i parametri da passare al costruttore quando il bean viene creato, mentre attraverso l’elemento property è possibile specificare i valori iniziali per le proprietà dei bean.
Eventuali riferimenti ad altri bean vanno indicati mediante l’elemento inject.
Java Management Extension (JMX)
Le specifiche JMX riguardano i managed bean o MBeans.Per creare un MBean occorre definire un’interfaccia e una classe che implementa l’interfaccia (l’interfaccia deve avere nome XXXMBean e la classe XXX).
Una volta che l’istanza di un MBean viene creata questa viene registrata mediante un nome nel server Mbean, quindi un client JMX può accedere all’MBean mediante l’MBean server.
Il servizio di deployer istanzia gli MBean in base al contenuto del file jboss-service.xml o vari *-service.xml che appaiono nella cartella di deploy, e li registra presso il server MBean fornito dall’application server.
Il nome di un MBean non è una semplice stringa ma è costituito da più parti:
- un dominio (simile al nome del package di una classe java)
- una o più chiavi proprietà (ovvero coppie chiave valore)
jboss.jca:service=ManagedConnectionPool,name=DefaultDS jboss.system:service=ThreadPoolIl file server/xxx/conf/jboss-service.xml è il file principale isato per dichiarare MBean nel kernel JMX.
E’ possibile usare un differente file descrptor settando la proprietà di sistema jboss.server.root.deployment.filename al nome del file che si vuole utilizzare e settare jboss.server.config.url alla directory che contiene tale file (naturalmente tutti i file di configurazione dovranno poi apparire in questa cartella).
Il file jboss-service.xml definisce un certo numero di bean inclusi:
- il servizio di logging
- il thread pool usato per fornire thread per l’esecuzione dei vari servizi
- Java Naming and Directory Interface
- MBeans per gestire sicurezza, incluso Java Authentication and Authorization service (JAAS).
- MBeans collegati ai servizi JMX
- MBeans collegati ai servizi remoti.
Ad esempio nella cartella server/xxx/deploy/messaging è possibile trovare diversi file *-service.xml che definiscono gli Mbeans usati dal servizio di messaging.
Logging
JBoss AS fa uso di log4j, un framework di logging opensource.Il file di configurazione di log4j è server/xxx/conf/jboss-log4j.xml.
Di default sono definiti due appender: uno per la console le cui entry sono identificate a livello INFO o più alto e uno per il file server/xxx/log/server.log che è settato per loggare tutti i livelli.
Alcuni cambiamenti di configurazione che è possibile apportare a log4j riguardano:
- i log file da utilizzare
- i limiti alla quantità di log prodotto
- l’aggiunta di logging per un’appplicazione
- la definizione di nuovi file di log
Questo comportamento, sebbene sia appropriato in fase di sviluppo non è ottimale per la fase di produzione.
In produzione tipicamente si crea un file di log che crea un nuovo file di log quando raggiunge una carta dimensione.
<...>
’à
èà
òèà
’àù
è<...>è <...>’
’è<...>è
ò<...>à
à’
òà
è’è
àà
èàè
à’’–è
ààù’à
’ù
ààè’’’è’
’
ù’èà’è
’’’’è’’’à’ì
’’
è’’ò’ò
’’è
è’
’èà’
’
- è
- è
- è
- è
’
’
- à
- à’
- ’’
- è