Objectifs. Comprendre l architecture typique d une application web Exemple: Expérimenter avec:



Documents pareils
Création d une application JEE

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

Compte Rendu d intégration d application

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

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

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

Rapport de projet de fin d études

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)

Installer GlassFish v3

Remote Method Invocation (RMI)

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

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

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

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

Mise en œuvre des serveurs d application

OpenPaaS Le réseau social d'entreprise

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

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

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

Serveur d'archivage 2007 Installation et utilisation de la BD exist

Cedric Dumoulin (C) The Java EE 7 Tutorial

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

Tutoriel d installation de Hibernate avec Eclipse

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

EJB. Karim Bouzoubaa Issam Kabbaj

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

Web Tier : déploiement de servlets

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

Java Naming and Directory Interface

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

Java DataBaseConnectivity

RMI le langage Java XII-1 JMF

TP3. Mail. Attention aux fausses manoeuvres lors de ce TP vous pouvez endommager votre mail sur ouindose.

Java pour le Web. Cours Java - F. Michel

Développement Web - Object Relational Mapping and Hibernate

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

Alfstore workflow framework Spécification technique

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)

Bases Java - Eclipse / Netbeans

JOnAS 5. Serveur d application d

Application web de gestion de comptes en banques

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

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

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

TP1 : Initiation à Java et Eclipse

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

JOnAS Day 5.1. Clustering

Gestion du service des enseignements

Auto-évaluation Programmation en Java

Cours 1: Java et les objets

API04 Contribution. Apache Hadoop: Présentation et application dans le domaine des Data Warehouses. Introduction. Architecture

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

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

Architecture applicative et Cartographie

Programmation Réseau. Sécurité Java. UFR Informatique jeudi 4 avril 13

Applet pour visualiser les variables «automate» notifiées

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T>

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

MYXTRACTION La Business Intelligence en temps réel

RAPPORT DE STAGE GWT PRISE EN MAIN SERVLET - TEST DES DAO TELOSYS PLUGIN ECLIPSE WIZARD DATASET TELOSYS

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

Développement Logiciel

Cours Master Recherche RI 7 Extraction et Intégration d'information du Web «Services Web»

ADMINISTRATION DE ADOBE LIVECYCLE MOSAIC 9.5

Java et les annotations

Générer du code à partir d une description de haut niveau

Composants Logiciels. Le modèle de composant de CORBA. Plan

Corrigé des exercices sur les références

BASE DE DONNÉES XML NATIVE

TP1. Outils Java Eléments de correction

TP1 : Initiation à Java et Eclipse

Environnements de développement (intégrés)

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

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

Synchro et Threads Java TM

JOnAS Day 5.1. Outils de développements

Extension SSO Java. Cette note technique décrit la configuration et la mise en œuvre du filtre de custom SSO Java.

Remote Method Invocation Les classes implémentant Serializable

Plateforme PAYZEN. Définition de Web-services

Module BD et sites WEB

TP Programmation Java / JDBC / Oracle

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

Projet gestion d'objets dupliqués

JavaServer Pages (JSP)

2 Chapitre 1 Introduction

JOnAS & EasyBeans EMN 29 Novembre 2007

Java Licence professionnelle CISII,

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Projet de programmation (IK3) : TP n 1 Correction

COURS 5 Mettre son site en ligne! Exporter son site avec WordPress Duplicator Installer un logiciel FTP Faire le suivi des visites de son site avec

Projet Java EE Approfondi

Dis papa, c est quoi un bus logiciel réparti?

Développement d un réseau social modulaire

Urbanisation de système d'information. PLM 6 (Product Lifecycle Management) Collaboration et partage d'informations

Le MSMQ. Version 1.0. Pierre-Franck Chauvet

Cours en ligne Développement Java pour le web

Une introduction à la technologie EJB (2/3)

Plan du cours. Historique du langage Nouveautés de Java 7

Transcription:

Cedric Dumoulin

Objectifs Comprendre l architecture typique d une application web Exemple: Application permettant de lister un catalogue d articles, et de créer des articles Expérimenter avec: EJB, JPA Spring Serveur Glassfish Derby?

Les problèmes Architecture de l application Classes, packages, pages Répartition dans des projets Eclipse Couche présentation web Le contrôleur doit connaître le package domaine Le contrôleur doit être associer avec un bean session La couche doit être packagé avec tout les jars nécessaire Package domaine, interface du bean session

Les problèmes (suite) Couche domaine Le bean session doit être associé à l EntityManager Le bean session doit être capable de créer des éléments du domaine, et de les persister Le bean session doit être capable de retirer des élément du domaine de la BD Il faut associer l EntityManager à une datasource Il faut déclarer la datasource, et la connecter à la BD Il faut déployer le site web, et le domaine

Architecture de l application Classes, packages, pages Vos propositions? Répartition dans des projets Eclipse Un projet web Contient les pages et les controleurs Un projet domaine Le domain Les interfaces des servlets Les servlets

Travail Créer les projets Eclipse 1 web 1 EJB Ecrire couche web Contrôleur sans association avec le domaine Page Tester le déploiement Ecrire bean session Bean session catalog, sans JPA Le catalogue crée une liste d articles Ecrire un client simple pour tester http://blog.paumard.org/tutoriaux/eclipse-glassfish-ejb/

Couche présentation web Le contrôleur doit connaître le package domaine Compilation : ajuster le buildpath Execution :???

Travail 2 Modifier le contrôleur Il crée un article, l ajoute dans une liste, et affiche la liste dans la page Tester le déploiement, et trouver une solution

Couche présentation web (suite) Le contrôleur doit être associer avec un bean session @Inject(«beanName») Ou Mecanisme Spring? La couche doit être packagé avec tout les jars nécessaire Package domaine, interface du bean session Paramètre du projet dans Eclipse? Ou utiliser un ear rassemblant tous les jars de l application

Travail 3 Connecter la couche présentation et la couche domaine Injecter le bean session dans le contrôleur Tester le déploiement

Couche domaine Le bean session doit être associé à l EntityManager Le bean session doit être capable de créer des éléments du domaine, et de les persister Le bean session doit être capable de retirer des élément du domaine de la BD Il faut associer l EntityManager à une datasource Il faut déclarer la datasource, et la connecter à la BD Il faut déployer le site web, et le domaine

Travail 4 Transformer Article en entity @Entity + id Fichier persistence.xml Modifier le bean session pour qu il utilise des Articles sauvegardés en BD S inspirer de http://blog.paumard.org/tutoriaux/eclipse-glassfish-ejb/ Tester!

Spring Comment créer un objet domaine et l injecter dans les Contrôleurs Déclarer l objet du domaine Voir cour sur Spring <bean /> L injecter dans le contrôleur public class AllArticleControler { protected ArticleCatalogRemote catalog; public ArticleCatalogRemote getcatalog() { return catalog; } @Inject @Named("catalog") public void setcatalog(articlecatalogremote catalog) { this.catalog = catalog; }

Constitution Bean Entity Pour la persitance Bean Session Sert de facade Bean message Pour des communications fiable asynchrone Ces beans sont gérés par un containeur EJB!

Bean Entity Représentent les objets persistants du domaine Suivent le standard JPA POJO annoté @Entity Voir cours précédents sur JPA Sont généralement manipulés par les bean session (CRUD) Ne pas oublier des les rendre persitant EntityManager.persist(entity).

Exemple Entity @Entity public class Article implements Serializable { /** * */ private static final long serialversionuid = 1L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) protected int id; protected String name; protected String description; protected int price; protected int stock;...

Bean Session Un (ou plusieurs) bean en tant que façade Le bean fournit l API d utilisation La couche présentation accède au domaine par ce bean Le bean agit sur les objets du domaine Le bean peut créer/lire/mettre a jour/detruire des entitées Un bean session peut invoquer d autre bean sessions

Exemple Bean accédant un entity /** * Session Bean implementation class ArticleCatalogWithJPABean * A session bean used to access a Catalog of Article. * Articles are stored in a DB with JPA. */ @Stateless(mappedName = "catalogwithjpa") @LocalBean public class ArticleCatalogWithJPABean implements ArticleCatalogWithJPARemote { @PersistenceContext protected EntityManager em; public List<Article> allarticles() { // Read the existing entries and write to console } Query q = em.createquery("select t from Article t"); return q.getresultlist();

Entity = objet à placer dans la BD Comment faire le lien avec la BD Quelle BD est utilisée?

Lien application Base de Données L application utilise un EntityManager Pour associer un objet à labd Pour interroger la BD Pour retirer des objets de la BD L entitymanager est associé à une DataSource La DataSource est un nom logique représentant la BD Le containeur déclare des DataSources Ce sont des sources de données Peuvent être utilisées par plusieurs application Sont associées à un pool de connexion Le containeur déclare des pools de connexions Un pool est une connexion vers une base de donnée

Association EntityManager - DataSource L EntityManager représente une «unité de persitence» Le fichier persitence.xml Déclare l unité de persitence Associe l unité à une DataSource Permet de spécifier des propriétés supplémentaires (pour JPA, pour la DB, )

Persistence.xml pour glassfish <?xml version="1.0" encoding="utf-8"?> <persistence version="2.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_2_0.xsd"> <persistence-unit name="catalog" transaction-type="jta"> <!-- respecter l'ordre de declaration!!! --> <!-- Eclipse link JPA implementation --> <!-- provider>org.eclipse.persistence.jpa.persistenceprovider</provider> --> <!-- Data source definition --> <jta-data-source>jdbc/ipidb</jta-data-source> <class>ipint12.sitemarchand.domain.article.article</class> <properties> <!-- EclipseLink should create the database schema automatically --> <!-- drop-and-create-tables, create-tables, database --> <property name="eclipselink.ddl-generation.output-mode" value="drop-and-create-tables" /> <property name="eclipselink.ddl-generation" value="drop-and-create-tables"/> </properties> </persistence-unit> </persistence>

Déclaration d une Datasources Ce fait au niveau du serveur Une datasource comporte: Un nom Un pool de connexion

Exemple datasource Glasfish Le faire dans la console d admin

Déclaration d un Pool de connexion Un pool de connexion est une connexion sur la BD Specifie: Le type de la BD Le connecteur, Le nom, le login/passwrd, la localisation, L url et le port du serveur,... Nécessite la doc du serveur pour être déclaré correctement utiliser un pool prédéfini Tout les serveur en ont un en générale

Déclaration d un Pool de connexion Glassfish Utiliser DerbyPool Le faire dans la console d admin

2 étapes Dans le fichier de configuration de Spring Associer l EJB avec un nom Spring Injecter l objet dans le controleur <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns:jee="http://www.springframework.org/schema/jee" xmlns:context="http://www.springframework.org/schema/context" xsi:schemalocation= "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-2.5.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <jee:jndi-lookup id="catalog" jndi-name="articlecatalog" cache="true" /> <jee:jndi-lookup id="catalogjpa" jndi-name="catalogwithjpa" cache="true" />

2 étapes Injecter l objet dans le controleur public class AllArticleControler { protected ArticleCatalogRemote catalog; public ArticleCatalogJPARemote getcatalog() { return catalog; } @Inject @Named("catalogJPA") public void setcatalog(articlecatalogjparemote catalog) { this.catalog = catalog; }

Utiliser @Inject

Client Glassfish public static void main(string[] args) { try { // création du "contexte initial" = de la connexion à l'annuaire du serveur InitialContext context = new InitialContext(); // requête sur le nom de la ressource que l'on veut, ici notre EJB ArticleCatalogWithJPARemote catalog = (ArticleCatalogWithJPARemote)context.lookup("catalogWithJPA") ; System.out.println("Catalog = " + catalog) ; // Create articles catalog.newarticle("voiture", 3, "une belle voiture", 5); System.out.println("done!"); } catch (NamingException e) { e.printstacktrace(); } }

Client Geronimo public static void main(string[] args) { try { // création du "contexte initial" = de la connexion à l'annuaire du serveur Properties prop=new Properties(); prop.put(context.initial_context_factory, "org.apache.openejb.client.remoteinitialcontextfactory"); prop.put("java.naming.provider.url", "ejbd://localhost:4201"); Context context = new InitialContext(prop); // requête sur le nom de la ressource que l'on veut, ici notre EJB ArticleCatalogWithJPARemote catalog = (ArticleCatalogWithJPARemote)context.lookup("catalogWithJPA") ;

Packager les deux couches Dans un ear Sous Eclipse: Créer un projet ear Spécifier les plugins qu il doit contenir Deployer l ear sur le serveur

Tout un art Lancer Glassfish en dehors de Eclipse Lancer le serveur de BD!! Compiler vos projets Exportez vos projet vers le repertoire de Glassfish: glassfish/domains/doamin1/autodeploy