EJB Components Leonardo Mariani Esercitazione di Sistemi Distribuiti 1 Oggetti Distribuiti 2
Middleware Esplicito 3 Middleware Implicito 4
Tipica Applicazione J2EE 1/2 5 Tipica Applicazione J2EE 2/2 6
EJB Components - interazioni 7 EJB Components creazione bean 8
Interfaccia Home Object La specifica interfaccia Home Object conterrà i metodi per costruire i bean 9 Interfaccia EJB Object La specifica interfaccia EJB Object conterrà i metodi business 10
Tipi di Enterprise Bean Session Bean per processi business stateful session bean stateless session bean Entity Bean per entità (persistenti) container-managed bean-managed Message-driven Bean Session bean che scambiano messaggi 11 Metodi dei Session Bean public void ejbcreate(...) public void ejbremove() public void ejbactivate() public void ejbpassivate() public void setsessioncontext(java.ejb.sessioncontext ctx) 12
Metodi degli Entity Bean public PrimaryKey ejbcreate(...) public PrimaryKey ejbfind...(...) public void ejbremove() public void ejbactivate() public void ejbpassivate() public void setsessioncontext(java.ejb.sessioncontext ctx) public void unsetentitycontext() public void ejbload() public void ejbstore() 13 Metodi dei Message Bean onmessage(message) ejbcreate() ejbremove() setmessagedrivencontext(messagedriv encontext) 14
EJB context public interface javax.ejb.ejbcontext { public javax.ejb.ejbhome getejbhome(); public javax.ejb.ejblocalhome getejblocalhome(); // metodi per transazioni } // metodi per la sicurezza 15 Dynamic Binding 1/2 JNDI InitialContext è la classe per accedere al JNDI Esempio (client)... Context ctx = new InitialContext(); Object obj = ctx.lookup( HelloHome ); (MyClassHome) myclasshome = (MyClassHome) javax.rmi.portableremoteobject.narrow(obj, MyClassHome.class); MyClass myclass = myclasshome.create()... myclass....... myclass.remove(); 16
Dynamic Binding 2/2 Per poter funzionare InitialContext ha bisogno di due informazioni: il driver JNDI e la locazione del server java Djava.naming.factory.initial= com.sun.jndi.fscontext.reffscontextfactory -Djava.naming.provider.url= ldap://ldap.funet.fi:389/c=fi nella maggior parte dei casi gli application server usano il proprio server JNDI 17 Deployment dei Componenti 1/2 18
Deployment dei Componenti 2/2 Una applicazione completa include diversi deployment descriptor: ejb-jar.xml che descrive i componenti EJB (impacchettati in file JAR) jboss.xml che fornisce informazioni sui componenti richieste da jboss parte Web: web.xml che descrive i componenti web (impacchettati in file WAR) parte Web: jboss-web.xml che fornisce informazioni sui componenti web richiesti da jboss applicazione completa: application.xml che fornisce informazioni su una applicazione completa che include componenti EJB e WEB classi comp EJBs ejb-jar.xml, jboss.xml componenti Web web.xml, jboss-web.xml JAR application.xml WAR EAR 19 Hello World 1/4 20
Hello World 2/4 21 Hello World 3/4 22
Hello World 4/4 23 Breve guida a JBoss 24
JBoss www.jboss.org J2EE compliant application server include tomcat (web container) hypersonic database (è possibile comunque integrare altri database server) Eclipse plugin per lo sviluppo di applicazioni su JBoss 25 Installazione ed esecuzione del server JBoss è disponibile in un file ZIP esecuzione del server: bin/run.bat verifica: il web server è in esecuzione su http://localhost:8080 console: http://localhost:8080/jmx-console spegnimento: bin/shutdown esecuzione come servizio: usare utility come Javaservice 26
Struttura dell installazione CARTELLE: bin -> script client -> JAR files per applicazioni client docs -> documentazione e file XML lib -> files di JBoss server -> set di configurazioni del server 27 Configurazioni del Server si differiscono per i componenti che vengono attivati (in aggiunta al microkernel JBoss) run.bat c <config-name> minimal: logging, JNDI, URL deployment scanner standard: J2EE 1.4 compliant default: configurazione di default, simile a standard all: tutti i servizi si possono creare nuove configurazioni copiando quelle esistenti 28
Struttura di una configurazione conf: contiene jboss-service.xml che specifica i servizi Core data: cartella usata da Hypesonic database deploy: cartella per il deploy di applicazioni, servizi e connettori => eliminare/aggiungere file equivale ad eliminare/aggiungere servizi lib: JAR file usati dalla configurazione corrente, ad es. driver JDBC log: cartella con file di log tmp: usata dal deployer work: usata da Tomcat per compilare JSP 29 Attivare Hypersonic Database jboss-4.0.0/server/standard/deploy/hsqldb-ds.xml, <!-- for tcp connection, allowing other processes to use the hsqldb database. This requires the org.jboss.jdbc.hypersonicdatabase mbean. --> <connection-url>jdbc:hsqldb:hsql://localhost:1701</connection-url> <!-- This mbean should be used only when using tcp connections. Uncomment when the tcp based connection-url is used. --> <mbean code="org.jboss.jdbc.hypersonicdatabase" name="jboss:service=hypersonic"> <attribute name="port">1701</attribute> <attribute name="silent">true</attribute> <attribute name="database">default</attribute> <attribute name="trace">false</attribute> <attribute name="no_system_exit">true</attribute> </mbean> 30
Eclipse plugin: JBoss IDE 31 Nuovi elementi a disposizione creazione di progetti J2EE creazione di elementi EJB Session Bean, Entity Bean, Deployment Descriptors,... creazione di elementi Web Servlet, JSP, HTML... 32
Nuovi comandi cliccando con il tasto destro su una classe si può accedere al menù J2EE add Business Method add Create Method add CMP Field... questi comandi aggiungono automaticamente le informazioni che devono essere riportate nei file di deployment 33 XDoclet XDoclet è un generatore di codice (XML, Java,...) basato su metadati (attributi) inseriti nel codice sorgente java (xdoclet.sourceforge.net) Integrazione con Eclipse Proprietà del Progetto -> XDocletConfigurations configurare gli script di creazione dei file di deployment Passi generali si crea un ejbdoclet per gli EJB si aggiungono le sottovoci per la creazione automatica di interfacce (locali e remote) e descrittori di deployment si crea un webdoclet si aggiungono le sottovoci per la creazione automatica dei descrittori di deployment 34
Packaging 1/2 Il packaging è usato per assemblare bean, elementi Web, descrittori, file di configurazione, ecc... nei corrispondenti package beans interfacce loc. e rem. ejb-jar.xml, jboss.xml JAR generato con XDoclet generato con Packaging application.xml EAR componenti Web web.xml, jboss-web.xml WAR generato manualmente 35 Packaging 2/2 Integrazione con Eclipse project properties -> Packaging configurations aggiungere un elemento per ogni pacchetto JAR, WAR o EAR aggiungere le cartelle da includere nel pacchetto aggiungere i file da includere nel pacchetto si può specificare la cartella di destinazione (contenuta nel pacchetto) si possono specificare filtri sui nomi dei file da includere 36
Deployment Si può specificare un metodo di deployment in modo da rilasciare i pacchetti generati direttamente da Eclipse Windows-> Preferences-> JBoss-IDE-> Deployer aggiungere un target di tipo FileSystem specificare la cartella deploy della configurazione del server JBoss usata premento il tasto destro su un pacchetto si può selezionare il comando di deploy 37 Esempio estratto dal tutorial JBoss 38