1. Installation d'un serveur d'application JBoss:



Documents pareils
Compte Rendu d intégration d application

Web Tier : déploiement de servlets

JOnAS Day 5.1. Outils de développements

Institut Supérieur de Gestion. Cours pour 3 ème LFIG. Java Enterprise Edition Introduction Bayoudhi Chaouki

Création d une application JEE

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Java pour le Web. Cours Java - F. Michel

Installer GlassFish v3

Avant-propos 1. Avant-propos Organisation du guide À qui s'adresse ce guide?...4

Etude de cas : PGE JEE V2

TP JEE Développement Web en Java. Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web.

EXA1415 : Annotations

24/11/2011. Cours EJB/J2EE Copyright Michel Buffa. Plan du cours. EJB : les fondamentaux. Enterprise Java Bean. Enterprise Java Bean.

Projet Java EE Approfondi

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

Cedric Dumoulin (C) The Java EE 7 Tutorial

IFT287 Exploitation de base de données relationnelles et orientées objet. Laboratoire Mon premier programme Java en Eclipse

TP réseau Android. Bidouilles Tomcat. a) Installer tomcat : il suffit de dézipper l'archive apache-tomcat windowsx64.zip.

Création d un service web avec NetBeans 5.5 et SJAS 9

Europa. Développement JEE 5. avec Eclipse. K a r i m D j a a f a r. A v e c l a c o n t r i b u t i o n d e O l i v i e r S a l v a t o r i

EJB. Karim Bouzoubaa Issam Kabbaj

Auto-évaluation Aperçu de l architecture Java EE

Tutoriel d installation de Hibernate avec Eclipse

Refonte front-office / back-office - Architecture & Conception -

Utilisation de Jakarta Tomcat

Europa. Développement JEE 5. avec Eclipse. K a r i m D j a a f a r. A v e c l a c o n t r i b u t i o n d e O l i v i e r S a l v a t o r i

Utilisation de GCM (Google Cloud Messaging) pour Android. Partie préliminaire éventuelle : Création d'un AVD lisant GCM

JOnAS 5. Serveur d application d

contact@nqicorp.com - Web :

La gestion de la persistance avec Hibernate. Hibernate et la gestion de persistance. La gestion de la persistance (1/2) Introduction

Architecture JEE. Objectifs attendus. Serveurs d applications JEE. Architectures JEE Normes JEE. Systèmes distribués

Rapport de projet de fin d études

contact@nqicorp.com - Web :

Application web de gestion de comptes en banques

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

Mise en œuvre des serveurs d application

Mise en place SSO. Mise en place SSO. 1. Installation de Tomcat sur le serveur OCR (Windows) 2. Ajout des librairies. by LegalBox

La base de données XML exist. A. Belaïd

Groupe Eyrolles, 2005, ISBN :

Environnements de Développement

JOnAS Day 5.1. Clustering

Application de lecture de carte SESAM-Vitale Jeebop

J2EE - Introduction. Développement web - Java. Plan du chapitre

Installer et configurer Oracle Forms 11gR2 Windows 7 64 bits

Bases Java - Eclipse / Netbeans

Formation en Logiciels Libres. Fiche d inscription

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Construction d'une application MVC distribuée avec Spring Remoting. Partie 1 : HttpInvoker, Hessian, Burlap, RMI

Assistance à distance sous Windows

TP1 : Initiation à Java et Eclipse

1 / Introduction. 2 / Gestion des comptes cpanel. Guide débuter avec WHM. 2.1Créer un package. 2.2Créer un compte cpanel

FORMATION PcVue. Mise en œuvre de WEBVUE. Journées de formation au logiciel de supervision PcVue 8.1. Lieu : Lycée Pablo Neruda Saint Martin d hères

Didacticiel de mise à jour Web

Conception et Implémentation d un serveur d applications dans le cadre du projet EISMO

Outils, langage et approche Android Une introduction. Nicolas Stouls lyon.fr

Quick Start Installation de MDweb version 2.3

Introduction à la plateforme J2EE

Prototype de serveur de monitoring pour le système d'alignement des chambres à Muons (Barrel) de l'expérience Atlas

Connexion à SQL Server 2005 à partir du serveur d application SJSAS 9 Utilisation d une interface JDBC

BIRT (Business Intelligence and Reporting Tools)

JavaServer Pages (JSP)

Déployer les Fonts, Icones, et Images avec Forms Services 11G

Installation et prise en main

Manuel utilisateur. des. listes de diffusion. Sympa. l'université Lille 3

Première coupe : Introduction à la plateforme Java EE JAVA JAVA. Introduction à la plateforme Java EE. Introduction à la plateforme Java EE

Pentaho. présentation

1. Comment accéder à mon panneau de configuration VPS?

COSWIN 7I INSTALLATION VERSION HTML

Business Sharepoint Contenu

PROCEDURE D'INSTALLATION OPENREPORTS

Sage CRM. 7.2 Guide de Portail Client

Déploiement d application Silverlight

TP SIN Programmation sur androïde Support : eclipse

Galaxy est une plateforme de traitements (bio)informatiques accessible depuis l'url : (en précisant votre login et mot de passe LDAP «genotoul»).

Storebox User Guide. Swisscom (Suisse) SA

Architecture Orientée Service, JSON et API REST

Une introduction à la technologie EJB (2/3)

Java Naming and Directory Interface

Gestion du service des enseignements

Installer Enterprise Miner 5.1 en SAS environnement Windows

Application Web et J2EE

Documentation CAS à destination des éditeurs

Applications des patrons de conception

KAJOUT WASSIM INTERNET INFORMATION SERVICES (IIS) 01/03/2013. Compte-rendu sur ISS KAJOUT Wassim

WordPress :: Migrer son site du local vers le serveur en ligne

Guide de déploiement d'applications FormPublisher

SPECIFICATIONS TECHNIQUES : Gestion des Médicaments et des commandes de médicaments

Thunderbird en version Portable

Documentation Projet ASR : Construction d un système réparti multi-échelle

1-Introduction 2. 2-Installation de JBPM 3. 2-JBPM en action.7

RMI le langage Java XII-1 JMF

Réalisation : Encadrés par : BEN GHORBEL Mohamed Zied OUESLATI Cherif. Mr. ROMDHANI Mohamed

I. Instalation de l environnement JDK et JRE : II. Configuration outil Reporting : Pentaho... 4

DOCUMENTATION VISUALISATION UNIT

Développement, déploiement et sécurisation d'applications JEE

Java Enterprise Edition

Documentation de la plate forme JOnAS

Transcription:

EPITA Ala Eddine BEN SALEM App-Ing2 J2EE T.P. 4 EJB3, Serveur d'application JBoss 1. Installation d'un serveur d'application JBoss: télécharger l'archive du serveur JBoss à l'adresse: http://sourceforge.net/projects/jboss/files/jboss/jboss-5.0.0.ga/jboss-5.0.0.ga.zip/download décompresser l'archive téléchargé afin de créer le répertoire contenant le serveur JBoss: jboss-5.0.0.ga/ Configurer un nouveau serveur JBoss 5.0 dans Eclipse (même procédure que la création d'un serveur Tomcat dans Eclipse):

2. Développement et déploiement dans JBoss d'un EAR (EJBs + Servlets) : Une application d'entreprise est généralement packagée dans une archive de type EAR composée de deux parties : Une couche EJBs packagée dans une archive de type JAR dédiée. Une couche WEB (Servlet, JSP,) sous la forme d'une webapp packagée dans une archive de type WAR. Dans la section suivante, on va utiliser Eclipse pour créer un projet «TP4_Pizza» de type EAR composé de deux (sous)-projets: projet du module WEB : «TP4_PizzaWeb» qui va contenir les Servlets et JSPs (.war). projet du module EJB : «TP4_PizzaEJB» qui va contenir les EJBs (.jar). 2.1. Création du projet (EAR): Dans la vue 'Explorateur de projet', cliquer droit puis sélectionner Enterprise Application Project: Vous obtenez l écran de création d un projet java Edition Entreprise (Java EE). Donnez un nom au projet: TP4_Pizza. Un serveur d applications cible (Target runtime) est ici associé par défaut : JBoss 5. Cliquez sur bouton Next : vous obtenez l écran «New EAR Application Project» ci-dessous. Cocher la case Generate Deployment Descriptor : Cette case permet de générer le fichier de configuration de l EAR: application.xml. Ce fichier de configuration est le descripteur de déploiement pour l EAR. Notez le répertoire dans lequel le projet sera créée: EarContent (par défaut).

Eclipse vous demande les modules que vous souhaitez développer. Cliquez sur le bouton New Module. La spécification J2EE propose 4 modules (voir capture d'écran ci-dessous). Ici nous choisissons les 2 modules EJB et WEB: TP4_PizzaEJB et TP4_PizzaWeb:

Cliquez sur Finish. Les différents projets apparaissent dans la vue Project Explorer d Eclipse. Eclipse a créé le fichier de configuration application.xml de l archive EAR dans «TP4_Pizza/EarContent/META-INF». C est ce qu on appelle le descripteur de déploiement de l archive EAR. A travers la balise xml <module> du fichier application.xml, l EAR précise quels sont les différents modules qu il héberge (ici 2 modules). Chaque module possède un identifiant unique. Notez la balise xml <contexte-root> du module WEB (balise <web>), la valeur du 'contexte-root' permet de définir l'url d'accès au module WEB de l'application. Ici, une fois l' EAR déployé dans le serveur d applications JBoss, l URL «http://localhost:8080/tp4_pizzaweb/» permettra de d'accéder à l application. Modifier la valeur du contexte-root pour pouvoir utiliser l'url suivante: http://localhost:8080/ TP4_Pizza / ( au lieu de http://localhost:8080/tp4_pizzaweb/). Dans la suite du TP, on va développer dans le projet «TP4_PizzaEJB» des EJBs de type Entity et Session. Ensuite, pour pouvoir tester ces EJBs, on va créer dans le projet «TP4_PizzaWeb» des Servlets qui utilisent les EJBs du projet «TP4_PizzaEJB».

2.2. Partie EJB (projet TP4_PizzaEJB): 2.2.1. Développement des EJBs Entity: Créer les EJBs Entity: Pizza, Stock et commande correspondant aux tables PIZZA, STOCK et COMMANDE de la base de données PizzaDB (créée lors du TP3), pour cela il suffit de copier le code des deux EJBs suivantes dans le répertoire TP4_PizzaEJB/ejbModule et de générer les getter et setter. Ensuite, en s'inspirant de l'ejb Entity Stock, créer l'ejb Entity Commande. package EntityBeans ; import java.io.serializable; import java.util.collection; import javax.persistence.basic; import javax.persistence.column; import javax.persistence.entity; import javax.persistence.id; import javax.persistence.onetomany; import javax.persistence.table; @Entity @Table(name = "PIZZA") public class Pizza implements Serializable { @Id @Basic(optional = false) @Column(name = "PIZZA_ID") private String pizzaid; @Column(name = "PRIX") private Integer prix; @OneToMany(mappedBy = "pizza") private Collection<Commande> commandes; @OneToMany(mappedBy = "pizza") private Collection<Stock> stocks; public Pizza() { package EntityBeans; import java.io.serializable; import javax.persistence.basic; import javax.persistence.column; import javax.persistence.entity; import javax.persistence.generatedvalue; import javax.persistence.generationtype; import javax.persistence.id; import javax.persistence.joincolumn; import javax.persistence.manytoone; import javax.persistence.table; @Entity @Table(name = "STOCK") public class Stock implements Serializable { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Basic(optional = false) @Column(name = "STOCK_ID") private Integer stockid; @Column(name = "QUANTITE") private Integer quantite; @JoinColumn(name = "PIZZA_ID", referencedcolumnname = "PIZZA_ID") @ManyToOne private Pizza pizza; public Stock() {

2.2.2. Déploiement des EJBs Entity: Il faut d'abord déployer une DataSource et une unité de persistence, c'est à dire mettre en place un serveur JNDI qui va faire la liaison entre la base de données et les EJBs Entity. 2.2.2.1. Déploiement d'une DataSource dans JBoss: Une DataSource (source de données) est une fabrique de connexions vers une base de donnée, on va voir dans la suite qu'une DataSource est déployée dans un serveur J2EE pour faire le lien entre la base de données et les EJBs Entity. Dans ce TP, on va créer une DataSource nommé «PizzaDS» qui pointe vers la base de données «PizzaDB» (du TP3). Pour configurer une DataSource dans un serveur JBoss, il faut suivre les étapes suivantes: - Copiez les 2 jars derby.jar et «jboss-5.0.0.ga/docs/examples/varia/derby-plugin.jar» dans le répertoire contenant les jars du serveur JBoss: «jboss-5.0.0.ga/server/default/lib», - Dans JBoss, le répertoire d'exemples d'applications «jboss-5.0.0.ga/docs/examples/jca/» contient des fichiers «Template» pour aider les développeurs à écrire les fichiers de configuration des DataSources dans JBoss (un fichier «Template» pour chaque type de base de données). Puisque «PizzaDB» est une base de données de type Derby, il faut d'abord copier le fichier «Template» derby-ds.xml dans le répertoire de déploiement du serveur JBoss: «jboss-5.0.0.ga/server/default/deploy». Ensuite, afin de créer une nouvelle DataSource «PizzaDS» qui pointe vers la base de données «PizzaDB», il faut modifier le fichier derby-ds.xml copié avec la configuration de base «PizzaDB» de la façon suivante: <jndi-name>pizzads</jndi-name> <connection-url>jdbc:derby:[à remplacer avec votre URL]/PizzaDB;create=true</connectionurl> <driver-class>org.apache.derby.jdbc.embeddeddriver</driver-class> <user-name>pizza</user-name> <password>pizza</password>

2.2.2.2. Création d'une unité de persistance (fichier persistence.xml): Dans le répertoire «TP4_PizzaEJB/ejbModule/META-INF» ajoutez le fichier persistence.xml cidessous. Ce fichier permet de créer une unité de persistance (balise <persistence-unit>) nommé "Pizza-ejbPU". Une unité de persistance permet de faire le lien entre les EJBs Entity et la DataSource «PizzaDS» (balise <jta-data-source>) et donc de mettre en place un mapping objetrelationnel entre les EJBs Entity et les tables de la base de données (l'accès à la base de données «PizzaDB» étant effectué à travers la DataSource «PizzaDS» créée dans 2.2.2.1). <?xml version="1.0" encoding="utf-8"?> <persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"> <persistence-unit name="pizza-ejbpu" transaction-type="jta"> <jta-data-source>java:/pizzads</jta-data-source> <properties/> </persistence-unit> </persistence> 2.2.2.3. Déploiement des EJBs Entity dans JBoss: Cliquer droit sur le projet (EAR) TP4_Pizza, puis sélectionner Run As Run on Server. Ensuite, vérifier dans l'onglet «Console» qu'il n' y a pas d'erreurs lors de l'instanciation des EJBs Entity par le serveur JBoss. 2.2.3. Développement des EJBs Session (pour gérer les EJBs Entity): Dans ce TP, les EJBs Session vont jouer le même rôle que les Classes «Façades» développées en JDBC lors des TPs précédents. En effet, dans la suite, on va créer un EJB Session pour gérer la persistance (en base de donnée) de chaque EJB Entity. Par exemple, pour gérer la persistance de l'ejb Entity Pizza, il faut développer un EJB Session PizzaFacade. Le développement d'un EJB Session PizzaFacade nécessite la création d'au moins une interface «Local» PizzaFacadeLocal.java et d'une classe PizzaFacade.java qui implémente cette interface. Voici le code de PizzaFacadeLocal.java et PizzaFacade.java : package sessionbeans; import java.util.list; import javax.ejb.local; @Local public interface PizzaFacadeLocal { void create(pizza pizza); void update(pizza pizza); void remove(pizza pizza); Pizza find(object id); List<Pizza> findall();

package sessionbeans; import java.util.list; import javax.ejb.stateless; import javax.persistence.entitymanager; import javax.persistence.persistencecontext; @Stateless public class PizzaFacade implements PizzaFacadeLocal { @PersistenceContext(unitName="Pizza-ejbPU") private EntityManager entitymgr; public void create(pizza pizza) { entitymgr.persist(pizza); public void update(pizza pizza) { entitymgr.merge(pizza); public void remove(pizza pizza) { entitymgr.remove(entitymgr.merge(pizza)); public Pizza find(object id) { return entitymgr.find(pizza.class, id); public List<Pizza> findall() { return entitymgr.createquery( "select object(o) from Pizza as o" ).getresultlist() ; Pendant le déploiement de l'ear contenant l'ejb Session PizzaFacade, l'utilisation de l'annotation @PersistenceContext dans la classe PizzaFacade.java permet au conteneur d'ejb d'injecter une référence de l'instance de l'entitymanager dans la variable entitymgr. C'est cette instance de l'entitymanager qui permet à un EJB Session de gérer la persistance des EJBs Entity. En suivant la même démarche, créer les Deux autre EJBs Session: StockFacade et CommandeFacade. 2.2.4. Déploiement des EJBs Session: Cliquer droit sur le projet EAR TP4_Pizza, puis sélectionner Run As Run on Server. Vérifier dans l'onglet «Console» qu'il n' y a pas d'erreurs affichées lors de l'instanciation des EJBs Session par le serveur JBoss.

2.3. Partie WEB (Servlets, JSPs) (projet TP4_PizzaWeb): Pour tester les EJBs déployés, on va utiliser les Servlets développés lors des TPs précédents. En effet, dans ce TP, les Servlets vont jouer le rôle des clients des EJB, ce sont des clients de type «Client Locale» (interface «XXXLocal») car ici les Servlets sont déployées dans le même serveur que les EJBs. Dans une Servlet, pour utiliser une référence (locale) sur un EJB Session, il faut déclarer une «variable» de type l'interface «Local» de l'ejb annoté par l'annotation @EJB de la façon suivante: @EJB private PizzaFacadeLocal pizzafacade; Grace à l'annotation @EJB, pendant le déploiement de l'ear (contenant EJBs + Servlets), le conteneur d'ejb qui va se charger d'instancier les EJBs Session, puis le conteneur WEB va injecter la référence de chaque EJB Session dans les Servlets qui l'utilisent. Voici des exemples d'appels des trois «EJBs Session» à partir de la Servlet Commande_Pizza: import sessionbeans.commandefacadelocal; import sessionbeans.pizzafacadelocal; import sessionbeans.stockfacadelocal; import EntityBeans.Commande; import EntityBeans.Pizza; import EntityBeans.Stock; public class Commande_Pizza extends HttpServlet { @EJB private CommandeFacadeLocal commandefacade; @EJB private StockFacadeLocal stockfacade; @EJB private PizzaFacadeLocal pizzafacade; protected void processrequest(httpservletrequest request, HttpServletResponse response) { List lstock = stockfacade.findall(); Pizza pizza = pizzafacade.find(type); commandefacade.create(commande); - Créer les Servlets Admin_Pizza et Commande_Pizza dans le (sous)-projet TP4_PizzaWeb. Dans un premier temps, copier/coller le contenu de ces deux Servlets à partir du TP3. Ensuite, adapter le code de chaque Servlet pour utiliser les EJBs déployés précédemment. - Déployer l'ear de l'application TP4_Pizza, puis tester les Servlets Admin_Pizza et Commande_Pizza. - Compléter uniquement le code de la Servlet Commande_Pizza (sans rien ajouter aux EJBs) pour implémenter les fonctionnalités suivantes : 1. Refuser les commandes pour un type de pizza inexistant et refuser les commandes pour un stock insuffisant. 2. Mettre à jour le stock après chaque commande. - Enfin, en utilisant l'ejb Session CommandeFacade, créer la JSP qui affiche la liste de commandes effectuées (sous la forme d'un tableau HTML).