Cycle de développement iup MIAGe 3° année2000 - 2001 Projet MIAGe Toulouse – Groupe 21 CORBA.

Slides:



Advertisements
Présentations similaires
La programmation orientée objet avec Java L3-MIAGE Plan
Advertisements

Spécialisation/généralisation Héritage Polymorphisme
Le mécanisme des exceptions
SI3 MAM3 Hydro Nathan Cohen Igor Litovsky Christophe Papazian
Introduction à la Programmation Orientée Objet Retour sur les principaux concepts SI3 MAM3 Hydro Nathan Cohen
ESSI AM Dery Merci à Rémi Vankeisbelck, Michel Riveill etc
1 Plan de lenseignement Cours Introduction au réseau via les objets distants (Application à RMI) Ce que cache RMI : programmation socket – mode connecté
Architecture CORBA réseau Objet Corba Application Serveur
ESSI AM Dery Merci à Rémi Vankeisbelck, Michel Riveill etc
La classe String Attention ce n’est pas un type de base. Il s'agit d'une classe défini dans l’API Java (Dans le package java.lang) String s="aaa"; // s.
Cours MIAGE « Architectures Orientées Services » Henry Boccon-Gibod 1 Architectures Orientées Services Composants de Service Exemple pratique de développement.
Object Management Architecture (OMA)
(Classes prédéfinies – API Java)
Cours 6 : XML et les architectures N-tiers – Tier Applicatif
LICENCE MIAGE Introduction Programmation Orientée Objet JAVA philippe
TD 1 IJA Introduction Objet, méthode, attribut Classe, instance
Chapitre III Héritage (début)
Programmation orientée objet
UNIVERSITE CHOUAIB DOUKKALI Département des mathématiques
JavaBeans Réalise par: EL KHADRAOUY TARIK AOUTIL SAFOWAN.
Les méthodes en java Une méthode est un regroupement d’instructions ayant pour but de faire un traitement bien précis. Une méthode pour être utilisée.
Écouteurs de click d'une fenêtre
Java Remote Method Invocation (RMI)
JDBC ou comment manipuler une base de données en Java ?
Configuration de Windows Server 2008 Active Directory
Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs.
77 Utilisation des classes (suite). 7-2 Objectifs A la fin de ce cours, vous serez capables de : Définir des méthodes surchargées dans une classe Fournir.
Interopérabilité JOnAS - CORBA
F Copyright © Oracle Corporation, Tous droits réservés. Créer des programmes avec Procedure Builder.
Structures de données IFT-2000
66 Utilisation des classes et des objets. 6-2 Objectifs A la fin de ce cours, vous serez capables de : Créer de nouvelles classes à laide de Eclipse Utiliser.
Introduction à la Programmation Orientée Objet Retour sur les principaux concepts SI3 MAM3 Hydro Nathan Cohen
Programmation concurrente
Design Pattern: Decorator
1 1 Corba avec Java et C Jean-Marc Vanel Transiciel - Sogeti.
IFT 6800 Atelier en Technologies d’information
1 Les paquetages («packages»). 2 L'objectif avec les paquetages («packages») est de rendre accessibles aux utilisateurs des classes définies par d'autres.
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 3 : Classes et Objects.
COURS DE PROGRAMMATION ORIENTEE OBJET :
COURS DE PROGRAMMATION ORIENTEE OBJET :
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure dInformatique (ESI) Plate-forme.NET.
Proxy et plus Cnam Paris jean-michel Douin, douin au cnam point fr
Leçon 1 : notion dobjet IUP Génie Informatique Besançon Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
CORBA (Common Request Broker Architecture)
1212 Entrée et sortie de fichiers Objectifs À la fin de ce cours, vous serez capables de : • Lire à partir de la console • Écrire sur la console.
JEE 5 F.Pfister 2 institut eerie JEE – Une plateforme serveur  Développement et exécution d'applications réparties.
SGBD orientés Objet Standards : OMG et ODMG.
Présentation de CORBA et de IIOP
APPLETS. Applets : généralités Applet : application s'exécutant dans une page HTML Le ByteCode (fichiers.class) est téléchargé depuis un serveur. L'exécution.
LIFI-Java 2004 Séance du Mercredi 22 sept. Cours 3.
La notion de type revisitée en POO
La Modélisation Orientée Objet Concevoir un programme : modélisation du problème à résoudre Notion de programme : machine de Turing Pouvoir d’expression.
11/04/ L'héritage Cours 7 Cours 7.
Cours 7 Classes locales Clonage Divers: tableaux.
Créer des packages.
Systèmes distribués Plusieurs technologies existent : Les sockets
CEG3585/CEG3555 Tutorat 2 Hi ver 2013.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Les erreurs communes en Java.
Interfaces graphiques. Composants d'interface utilisateur graphique (GUI) 1 Bibliothèques Awt et Swing Procédures communes pour l'utilisation de ces clases.
Entrées / Sorties.
Règles de passage iup MIAGe 3° année Projet MIAGe Toulouse – Groupe 21.
Les classes et les objets Les données finales class A { … private final int n = 20 ; // la valeur de n est définie dans sa déclaration … } class A { public.
Cours du 5 novembre.
Héritage H. Batatia. plan Notion (que signifie l’héritage) Ecriture en java Héritage multiple (interdit) Instanciation (partie propre et partie héritée)
France Télécom R&D Le présent document contient des informations qui sont la propriété de France Télécom. L'acceptation de ce document par son destinataire.
Cours 4 (14 octobre) Héritage. Chapitre III Héritage.
PaCO++ André Ribes Réunion Hydrogrid Rennes 15/09/03.
Cycle de développement avec Inprise JBuilder 4.0 iup MIAGe 3° année Projet MIAGe Toulouse – Groupe 21 JBuilder 4.0 et CORBA.
Java Remote Method Invocation
Transcription de la présentation:

Cycle de développement iup MIAGe 3° année Projet MIAGe Toulouse – Groupe 21 CORBA

Le cycle de développement (1/3) iup MIAGe 3° année Projet MIAGe Toulouse – Groupe 22  On s’intéresse au développement selon le mode statique, c’est à dire en utilisant les talons (stub, skeleton, …) générés par le compilateur IDL  Le cycle de développement se décompose en 7 étapes Noyau de l’ORB Client Application Stub Serveur Implémentation Skeleton 1. Écriture de l’IDL 2.Compilation de l’IDL vers un langage cible 3.Implémentation de l’objet 4.Implémentation du serveur 5.Compilation du serveur 6.Implémentation du client 7.Compilation du client

Le cycle de développement (2/3) iup MIAGe 3° année Projet MIAGe Toulouse – Groupe 23  On s’intéresse à la génération de code depuis des spécifications IDL 1. Écriture de l’IDL 2. Compilation de l’IDL vers un langage cible 3. Implémentation de l’objet6. Implémentation du client 7. Compilation du client 4. Implémentation du serveur 5. Compilation du serveur SkeletonStub Application serveurApplication client

Le cycle de développement, d’IDL vers Java (3/3) iup MIAGe 3° année Projet MIAGe Toulouse – Groupe 24  La génération de code depuis l’IDL vers la langage cible Java se caractérise ainsi 1. Convertisseur.idl 2. Compilation de l’IDL avec idl2java.exe 3. EuroImpl.java (objet serveur) 6. ClientConvertisseurEuro.java (client) 7. Compilation du client avec vbjc.exe 4. ServeurConvertisseurEuro.java 5. Compilation du serveur avec vbjc.exe _EuroImplBase.java (skeleton) _st_Euro.java (stub) Application serveurApplication client EuroHolder.java EuroHelper.java module Convertisseur { interface Euro { /* … */ }; Euro.java extends

Écriture de l’IDL (1/7) iup MIAGe 3° année Projet MIAGe Toulouse – Groupe 25  L’écriture permet de définir les différentes interfaces des composants module Convertisseur { interface Euro { attribute double taux; attribute string devise; void start(); double toEuro(in double devise); double toDevise(in double euro); };  Quelques règles de passage lors du passage de l’IDL vers Java Un module IDL devient un package Java Une interface IDL devient une interface Java Un attribute IDL génére un attribut private et deux accesseurs Java Une méthode IDL devient une méthode publique Java … 1. Convertisseur.idl

Compilation de l’IDL vers Java (2/7) iup MIAGe 3° année Projet MIAGe Toulouse – Groupe 26  La compilation IDL vers Java permet de générer les différents talons (stub, skeleton, …)  Les principaux fichiers générés sont les suivants C:\>idl2java Convertisseur.idl Fichier.java généréDescription du contenu Euro.javaInterface Java définissant les services de l’objet Euro EuroHelper.javaClasse qui dispose de méthodes permettant notamment de caster vers le type Euro EuroHolder.javaClasse qui est utilisée lors du passage d’instances de l’objet Euro comme paramètre ou résultat d’une méthode _EuroImplBase.javaSkeleton de l’objet, qui se charge des requètes en provenace du stub et les transmet à l’objet Euro _st_Euro.javaStub installé sur le client qui est appelée lors de l’invocation par le client de l’objet distant Euro

Implémentation de l’objet (3/7) iup MIAGe 3° année Projet MIAGe Toulouse – Groupe 27  On implémente l’objet en Java public class EuroImpl extends Convertisseur._EuroImplBase { // construction des objets public EuroImpl(java.lang.String name) { super(name); _taux= ; _devise="Francs"; } public EuroImpl() { super(); _taux= ; _devise="Francs"; } // taux de conversion private double _taux; public void taux(double taux) { System.out.println(taux); _taux=taux; } public double taux() { return _taux; } 3. EuroImpl.java // devise utilisée private String _devise; public void devise(java.lang.String devise) { _devise=devise; } public java.lang.String devise() { return _devise; } // implémentation des opérations de conversion public double toEuro(double devise) { return devise / _taux; } public double toDevise(double euro) { return euro * _taux; }  L’implémentation peut être faite par héritage, comme présenté ci-dessus, ou par délégation, qui permet à l’objet implémenté de conserver son héritage libre A noter que la classe d’implantation hérite du skeleton

Implémentation du serveur (4/7) iup MIAGe 3° année Projet MIAGe Toulouse – Groupe 28  On implémente en Java le serveur qui contiendra l’objet import org.omg.CosNaming.*; import com.visigenic.vbroker.orb.*; public class ServeurConvertisseurEuro { public static void main(String[] args) { try { //intialisation de l'orb org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init(args,null); //initialiser le BOA org.omg.CORBA.BOA boa = ((com.visigenic.vbroker.orb.ORB)orb).BOA_init(); //Création du servant EuroImpl monEuro = new EuroImpl("Convertisseur"); //enregistrement de l'objet au niveau du BOA boa.obj_is_ready(monEuro); System.out.println(monEuro + " is ready."); // Mise en attente de requete boa.impl_is_ready();; //for(;;); } catch (Exception e) {e.printStackTrace(); } 4. ServeurConvertisseurEuro.java

Compilation du serveur (5/7) iup MIAGe 3° année Projet MIAGe Toulouse – Groupe 29  On génère le code exécutable du serveur (.java vers.class) EuroImpl.javaServeurConvertisseurEuro.java 5. Compilation du serveur avec vbjc.exe _EuroImplBase.javaEuroHolder.javaEuroHelper.javaEuro.java EuroImpl.classServeurConvertisseurEur.class_EuroImplBase.classEuroHolder.classEuroHelper.classEuro.java Librairies de l’ORB (.jar)

Implémentation du client (6/7) iup MIAGe 3° année Projet MIAGe Toulouse – Groupe 210  On implémente en Java le client qui utilisera l’objet distant Euro //réaliser les import … class InterfaceFrame extends JFrame implements DocumentListener, ActionListener { public InterfaceFrame() { /* l’interface graphique en Java avec Swing et Awt …*/ } public class ClientConvertisseurEuro { public static Convertisseur.Euro monEuro; public static void main(String args[]) { org.omg.CosNaming.NamingContext root; try { //intialisation de l'orb ORB orb = org.omg.CORBA.ORB.init(args,null); //connexion à l'objet monEuro = Convertisseur.EuroHelper.bind(orb,"Convertisseur"); //appel de l'interface graphique windows JFrame frame = new InterfaceFrame(); frame.show(); } catch (Exception e) {e.printStackTrace();} }//fin du main }fin du client 6. ClientConvertisseurEuro.java A noter que la connexion à l’objet se fait dans cet exemple avec la méthode propriétaire bind() c’est à dire que cette méthode dépend de l’ORB utilisé (VisiBroker par exemple). Il existe d’autres techniques de connexion plus génériques (service d’annuaire CORBA, appelé CosNaming)

Compilation du client (7/7) iup MIAGe 3° année Projet MIAGe Toulouse – Groupe 211  On génère le code exécutable du client (.java vers.class) ClientConvertisseurEuro.java 7. Compilation du client avec vbjc.exe EuroHolder.javaEuroHelper.javaEuro.java ClientConvertisseurEur.classEuroHolder.classEuroHelper.classEuro.java Librairies de l’ORB (.jar) _st_Euro.java _st_Euro.class

Attachement du client au serveur (1/1) iup MIAGe 3° année Projet MIAGe Toulouse – Groupe 212  L’attachement du client au serveur répond à la problématique de l’accès aux implémentations d’objets depuis les programmes clients 1.la méthode bind() 2.l’IOR (Interoperable Object Reference) 3.le CosNaming (service de nommage) 4.l’URLNaming MéthodeDescriptionAvantage(s)Inconvénient(s) bind()Permet au client de s’attacher à l’implémentation d’un objet, grâce à la méthode NomClasseHelper.bind(« Nom ») La simplicité de codageLa méthode est propriétaire donc le client devient dépendant de l’ORB IOROn associe l’IOR (représentation binaire de la référence de l’objet) à une chaîne de caractère via les méthodes object_to_string() et string_to_object(). Plus précisément, le serveur stocke l’IOR dans un fichier, le client récupère l’IOR puis la convertit vers le type de la référence souhaitée La méthode est génériqueL’accès à un fichier sur un volume partagé est nécessaire depuis le client CosNamingLa transparence de la localisation devient totale avec la mise en place d’un annuaire qui gère les associations entre les noms logiques d’instances et leurs IORs Ce service standard est disponible dans la plupart des implémentations de CORBA. L’emploi des IORs et l’organisation des références d’objets sont simplifiées L’écriture du code se complique URLNamingL’idée est d’associer une URL à une IORLa distribution d’applications sur l’Internet devient possible La notion d’IOR est toujours visible

Exécution (1/2) iup MIAGe 3° année Projet MIAGe Toulouse – Groupe 213  L’exécution d’une application répartie CORBA (avec l’ORB VisiBroker) requiert le lancement de services utilitaires, le Smart Agent (obligatoire) et le service de nommage (facultatif)  Le Smart Agent est un service dynamique et distribué de répertoires qui permet aux clients lors du bind() d’accéder aux implémentations des objets distants. Il faut donc activer au moins un Smart Agent dans le réseau local sur lequel on veut exécuter une application CORBA avec VisiBroker C:\>osagent  Le service de nommage doit éventuellement être activé pour pouvoir utiliser les services du CosNaming. Le service de nommage, qui est lui-même un objet CORBA, nécessite donc qu’un Smart Agent ait été activé avant son propre démarrage. C:\>vbj com.inprise.vbroker.naming.ExtFactory C:\>start nameserv root_context_name ou

Exécution (2/2) iup MIAGe 3° année Projet MIAGe Toulouse – Groupe 214  L’exécution de l’application répartie ConvertisseurEuro présentée dans le cycle de développement requiert donc l’activation d’un Smart Agent, le lancement du serveur puis le lancement du client C:\>osagent ORB Client ClientConvertisseurEuro Stub Serveur ServeurConvertisseurEuro Skeleton ORB Services Smart Agent C:\>vbj ServeurConvertisseurEuroC:\>vbj ClientConvertisseurEuro a) Enregistrement de l’objet Euro (obj_is_ready()) e) Accès périodique pour vérifier le fonctionnement b) Demande de connexion (bind()) c) Retour de l’IOR MonEuro d) Dialogue entre client et objet distant Adaptateur d’objet (BOA)