Table des matières. TP JEE (2) Logic metier et Entreprise Java Beans. IUT Bordeaux 1 - Département Informatique



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

Compte Rendu d intégration d application

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.

Création d une application JEE

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

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

EXA1415 : Annotations

JOnAS Day 5.1. Outils de développements

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

Rapport de projet de fin d études

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

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

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

Java Naming and Directory Interface

Java pour le Web. Cours Java - F. Michel

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)

Environnements de Développement

Mise en œuvre des serveurs d application

JOnAS Day 5.1. Clustering

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

Introduction à la plateforme J2EE

EJB. Karim Bouzoubaa Issam Kabbaj

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

JOnAS 5. Serveur d application d

Cedric Dumoulin (C) The Java EE 7 Tutorial

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

Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles

Evaluation Idéopass Cahier d analyse technique

Tutoriel: Création d'un Web service en C++ avec WebContentC++Framework

Cours en ligne Développement Java pour le web

Application web de gestion de comptes en banques

Remote Method Invocation (RMI)

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

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

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

4. SERVICES WEB REST 46

2 Chapitre 1 Introduction

Formation en Logiciels Libres. Fiche d inscription

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

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants.

Web Tier : déploiement de servlets

Modèle d Administration des Systèmes Distribués à Base de Composants.

RMI le langage Java XII-1 JMF

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

Formation Webase 5. Formation Webase 5. Ses secrets, de l architecture MVC à l application Web. Adrien Grand <jpountz@via.ecp.fr> Centrale Réseaux

Etude de cas : PGE JEE V2

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

Raja Bases de données distribuées A Lire - Tutoriel

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

Architecture applicative et Cartographie

Tutoriel d installation de Hibernate avec Eclipse

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

Catalogue des Formations Techniques

Projet de Java Enterprise Edition

Remote Method Invocation en Java (RMI)

THÉMATIQUES. Comprendre les frameworks productifs. Découvrir leurs usages. Synthèse

Compte-rendu de projet de Système de gestion de base de données

Applications et Services WEB: Architecture REST

Programmation par composants (1/3) Programmation par composants (2/3)

Description de la formation

Java Enterprise Edition

TP WEBSERVICES. 1 Pré-requis. 1.1 L environnement de développement. 1.2 Les librairies nécessaires 1.3 SOAPUI

Cahier des charges : gestion de projets agiles. Programmation d Algorithmes Distribués (PAD)

Applications des patrons de conception

WEBSERVICES. Michael Fortier. Master Informatique 2ème année. A308, Université de Paris 13

PROJET : ETNIC ESB JANUS. Guide technique : WS-Notification - Clustering. BULL Services et Solutions

Le passage à l échelle de serveur J2EE : le cas des EJB

Les processus métiers : concepts, modèles et systèmes

J2EE. Java2 Enterprise Edition. Pierre Yves Gibello Mise à jour : 30 Septembre 2004

Apache Tomcat 6. Guide d'administration du serveur Java EE sous Windows et Linux. Résumé. Étienne LANGLET

Installation et prise en main

TD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting

Présentation. Au programme. Fonctionnement. A l issue de ce module vous devriez...

Projet gestion d'objets dupliqués

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

RENDRE VOS APPLICATIONS JAVA PLUS EFFICACES Ce qu'il faut savoir

Une introduction à la technologie EJB (2/3)

TP Programmation Java / JDBC / Oracle

27/11/12 Nature. SDK Python et Java pour le développement de services ACCORD Module(s)

Documentation de la plate forme JOnAS

Augmenter la disponibilité des applications JEE grâce au clustering : Le projet open source JShaft

Introduction aux «Services Web»

Télécom Nancy Année

Alfstore workflow framework Spécification technique

Architectures Web Services RESTful

OpenPaaS Le réseau social d'entreprise

1 JBoss Entreprise Middleware

Ré-architecture et migration d une application standalone vers un serveur applicatif multi-tiers dans un contexte JAVA-SAP

Projet. But: consultation en temps réel d événements (cours de bourse, trafic d envoi SMS ) sur des téléphones portables. Serveur de diffusion

Une Histoire de Migration Agile

Accès aux bases de données

Documentation de la plate forme JOnAS. Frederic Maistre

A. Architecture du serveur Tomcat 6

Java EE. Java Enterprise Edition. Pierre-Yves Gibello - pierreyves.gibello@experlog.com (Mise à jour : Septembre 2011)

Architecture N-Tier. Ces données peuvent être saisies interactivement via l interface ou lues depuis un disque. Application

Glassfish dans le milieu médical. Sun Aquarium Paris 26 Juin 2009 Jacky Renno

Développement d un réseau social modulaire

Architectures en couches pour applications web Rappel : Architecture en couches

Transcription:

IUT Bordeaux 1 - Département Informatique Semestre 4 JEE 20112012 TP JEE (2) Logic metier et Entreprise Java Beans Les EJB (Enterprise JavaBeans) 3.0 permettent de découpler la logique de présentation (site web, application riche, services webs) de la logique métier (implémentation de services, interaction avec la base de données). En conséquence, la logique métier doit être exécutée dans un objet diérent de celui qui gère l'achage. De plus, ils autorisent la communication avec d'autres services répartis sur d'autres serveurs d'applications via des mécanismes de communication comme JNDI (Java Naming and Directory Interface). Figure 1 Architecture multi-niveaux : la couche de services Dans tous les cas, il est nécessaire d'avoir un conteneur d'ejb. C'est le rôle du serveur d'applications. Dans ce TP, nous utiliserons JBoss (projet opensource). Nous verrons dans ce TP deux sortes d'ejb : EJB session : il s'agit d'objets qui rendent un service et qui permettent d'assurer une transaction. Il existe deux sortes d'ejb session : les EJB Stateless dont la particularité principale est de ne pas conserver d'état entre les diérents appels, les EJB Statefull qui conservent un état entre diérents appels de méthodes. EJB Entity : il s'agit d'objets qui correspondent à des enregistrements d'une base de données et qui gèrent l'accès à la base de données. D'autres types d'ejb existent (EJB message, JMS) mais ne seront pas abordés dans ce TP. Table des matières 1 Les chiers Enterprise ARchive 1 2 Récupération du projet squelette 2 1

3 Développement de l'ejb Entity : "Contact" 2 3.1 La classe Contact............................. 2 4 Développement de l'ejb Session : ContactService 3 4.1 Création de l'interface du bean..................... 4 4.2 Implémentation de l'interface du bean.................. 4 5 Communication entre le WAR et les EJBs 5 6 Une Application CRUD 6 7 La culture Java EE (ou : avoir une bonne note à l'exam) 6 1 Les chiers Enterprise ARchive Un EAR (pour Enterprise Application ARchive) est un format de chiers utilisé pour empaqueter un ou plusieurs modules Java EE dans une seule archive, de façon à pouvoir déployer ces modules sur un serveur d'applications en une seule opération, et de façon cohérente. Ces archives contiennent aussi des chiers XML de conguration ou des chiers appelés descripteurs de déploiement, qui indiquent comment les modules doivent être déployés sur le serveur. Dans ce TP, nous allons créer un projet EAR contenant : Un chier JAR qui contiendra tout le code de la logique métier de notre application (les EJBs) Un chier WAR qui est le module WEB qui interrogera la logique métier. Il est bien entendu possible de mettre plusieurs chiers WAR et plusieurs chiers JAR au sein d'un même EAR. Questions : À quoi sert la séparation de la logique métier et la partie Web du coté serveur? Nos EJBs vont être exécutés dans un serveur d'application appelé JBoss. Pour cela il faut copier-coller le chier EAR vers $JBOSS_HOME/server/default/deploy. 2 Récupération du projet squelette 2

1. Démarrez JBOSS avec le script bin/run.sh 2. Récupérez le projet Maven à l'adresse suivante : hg clone ssh : / / your_login@info ssh1. iut. u bordeaux1. fr// net/ Bibliotheque/ JEE/2011 2012/ tp2 ejb/ skull tp ejb/ 3. Générez un chier EAR 4. Déployez-le sur JBoss et tester que votre EAR est bien déployé. 5. Installez les diérents projets dans votre dépôt Maven local (mvn clean install). 6. Générez des projets eclipse et ouvrez-les. 7. Parcourez les 4 chiers pom.xml. Faites un diagramme de dépendance entre les projets (qui à besoin de qui). 3 Développement de l'ejb Entity : "Contact" 3.1 La classe Contact An de simplier le partage des tâches dans le cadre du développement d'un projet, chaque couche est identiée par un package. Par exemple, le package etudiant.entities contiendra les beans du projet et etudiant.services contiendra les services. 1. Ajoutez une nouvelle classe (Java Bean) nommée "Contact" dans le package correspondant (contact.entities). 2. Complétez cette classe avec les attributs et méthodes nécessaires qui doivent correspondre à la classe Contact du TP précédent. Pour plus de simplicité, vous pouvez laisser de côté les attributs de type Date. 3. Remplacez la classe Contact du WAR avec cette nouvelle classe. 4. Ajoutez les annotations Java permettant de "transformer" cette classe en tant qu'entité (cf. Fig. 2) : on annotera la classe en tant qu'entity (@Entity) et on indiquera son attribut clé (@Id). L'annotation @Table indique le nom de la table qui stockera cette entité. 5. Le projet ne compile pas. Pourquoi? 6. Ajoutez les dépendances Hibernate an de compiler la classe. Questions 1. Commentez chacune des annotations Java présente dans la classe Contact. 4 Développement de l'ejb Session : ContactService Dans un souci de maintenir la cohérence des objets manipulés, la conception de projets JEE exige de ne pas exposer directement les EJB Entité aux clients. Pour 3

@Entity @Table ( name = " Contact " ) p u b l i c c l a s s Contact implements Serializable{ @Id @Basic p r i v a t e String name ; @Basic p r i v a t e String firstname ; Figure 2 Exemple d'un EJB Entité. gérer et assurer la cohérence des données, nous utilisons le patron de conception (design pattern) Façade, qui a pour but d'exposer des services aux clients par l'intermédiaire d'une interface distante pour la manipulation de beans. Ici nous allons créer cette interface (i.e. : ContactService) puis la classe qui l'implémente. L'interface dénit les méthodes à exposer aux clients. Nous allons pour l'instant nous concentrer sur l'ajout d'un contact. L'interface ContactService n'aura donc, pour l'instant qu'une méthode Contact add(contact c). 4.1 Création de l'interface du bean @Remote p u b l i c i n t e r f a c e ContactService { p u b l i c Contact add ( Contact e ) ; Figure 3 Exemple d'un EJB Session. 1. Ajoutez une nouvelle interface au projet nommée ContactService (package contact.services). 2. Complétez l'interface avec les méthodes nécessaires. 3. A quoi sert cette interface? 4. À quoi sert l'annotation @Remote? 4.2 Implémentation de l'interface du bean 1. Ajoutez une nouvelle classe implémentant l'interface précédente. 4

2. Ajoutez les annotations nécessaires ; c'est notamment dans cette classe que le choix est fait entre un service dit "sans état" (@Stateless) et "avec état" (@Stateful). @Stateless p u b l i c c l a s s ContactServiceImpl implements ContactService { Figure 4 Exemple d'un EJB Session. Questions 1. Lors du re-déploiement de l'ear, que constatez-vous dans les messages de logs de JBoss? 2. Quelle est la diérence entre @Stateless et @Stateful? Donnez des cas d'usage. Mise en base de donnée Lors du déploiement, le serveur d'application groupe les EJB Entité dans des unités de persistance. Chaque unité de persistance doit être associée à une source de données. L'EntityManager est le service qui permet de gérer ces unités. Le chier persistence.xml est le descripteur de déploiement qui contient la conguration de l'entitymanager. 1. Modier la classe ContactServiceImpl pour qu'elle utilise une instance d'un objet EntityManager qui se chargera d'interagir avec la base de données (cf. Fig. 5). 2. Ouvrez le chier persistence.xml dans src/main/resources/meta-inf ainsi que le chier $JBOSS_HOME/server/default/deploy/hsqldb-ds.xml. Commentez le chier persistence.xml : à quoi sert-il? 3. Quelle est la relation entre les annotations que nous venons d'ajouter et le chier persistence.xml? 4. Dans votre navigateur, ouvrez la page : http ://localhost :8080/ => JMX Console => JBoss : database=localdb,service=hypersonic. Puis dans start- DatabaseManager clickez sur Invoke. Que constatez-vous? 5 Communication entre le WAR et les EJBs Utiliser un service EJB depuis un WAR 5

@Stateless @Remote ( ContactService. c l a s s ) p u b l i c c l a s s ContactServiceImpl implements ContactService { @PersistenceContext ( name=" MyEntity" ) p r i v a t e EntityManager em ; p u b l i c ContactEntity ajouter ( ContactEntity e ) { em. persist ( e ) ; return e ; Figure 5 Exemple de modication de la classe d'implémentation du service. 1. Créez une méthode (getcontactservice()) pour récupérer une instance de ContactService en vous inspirant du code 6. Cette méthode utilise un protocole appelé RMI que nous verrons dans le prochain TP. Context context ; MonService s = n u l l ; try { context = new InitialContext ( ) ; s = ( MonService ) context. lookup ( " MonDynamicProjectEAR/ MonServiceImpl / remote " ) ; catch ( NamingException e ) { e. printstacktrace ( ) ; Figure 6 Récupérez une instance d'un service EJB depuis le context initial. Questions 1. Commentez la fonction getcontactservice(). 2. A quoi correspond la chaîne MonDynamicProjectEAR/MonServiceImpl/remote 3. Où la trouve-t-on? 4. Modiez le projet ContactWeb an d'ajouter un contact en base de données. Compilez, déployez, puis, vériez que tout fonctionne et que le nouveau contact est bien ajouté en base de données. 6

6 Une Application CRUD Implémentez toutes les fonction nécessaires dans le projet WAR et dans l'ejb an de faire une application CRUD (Create, Retreive, Update, Delete) : Lister des Contact, et pouvoir voir le détail d'un Etudiant. Ajouter des Contacts en base de donnée. Modier des Contacts Supprimer des Contacts 7 La culture Java EE (ou : avoir une bonne note à l'exam) À l'aide de votre navigateur web favori, répondez aux questions suivantes : 1. Qu'est-ce qu'un serveur d'applications? Citez un exemple. 2. Qu'est-ce qu'un chier EAR? 3. Qu'est-ce que JPA? 4. Qu'est-ce que JPAQL? Quelle est la diérence entre JPA Criteria API et JPAQL? 5. Qu'est-ce que Hibernate? Quelle est la relation entre hibernate et JPA? 6. Qu'est-ce qu'un EJB Entity, un EJB Session? 7. Quelle est la diérence entre @Stateless et @Statefull? 8. Avec la classe EntityManager, comment eectuer une recherche par critère? 9. D'après vous quels sont les avantages à utiliser des EJB Entity? 10. Que faut-il faire pour utiliser une base de données MySQL au lieu de la base de données de JBoss? 11. Qu'est-ce que NoSQL? 12. Qu'est-ce que Spring Framework? 7