Exercice «CORBA-IDL» complet (J2SE )

Documents pareils
Introduction à CORBA

Construction d Applications Réparties avec CORBA

Intergiciels pour la répartition CORBA : Common Object Request Broker. Patrice Torguet torguet@irit.fr Université Paul Sabatier

Programmation réseau avec Java. 3/7 RMI, un peu de sécurité et CORBA

Programmation répartie: Objet distribué. CORBA (Common Object Request Broker Architectur)

CORBA. (Common Object Request Broker Architecture) Denivaldo LOPES

Cours 9 : Servlet, JSP, corba

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

Corrigé des exercices sur les références

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

RMI le langage Java XII-1 JMF

Synchro et Threads Java TM

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Programmation par les Objets en Java

Java Licence Professionnelle CISII,

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

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

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

Programme Compte bancaire (code)

Remote Method Invocation (RMI)

Premiers Pas en Programmation Objet : les Classes et les Objets

Programmation Objet Java Correction

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

Applet pour visualiser les variables «automate» notifiées

Utiliser Java sans BlueJ

Java DataBaseConnectivity

TP Programmation Java / JDBC / Oracle

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

Flux de données Lecture/Ecriture Fichiers

Package Java.util Classe générique

Remote Method Invocation Les classes implémentant Serializable

Programmer en JAVA. par Tama

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

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

Java RMI. Arnaud Labourel Courriel: Université de Provence. 8 mars 2011

Auto-évaluation Programmation en Java

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Principes. 2A-SI 3 Prog. réseau et systèmes distribués 3. 3 Programmation en CORBA. Programmation en Corba. Stéphane Vialle

TP1. Outils Java Eléments de correction

Solutions du chapitre 4

Cours 1: Java et les objets

Gestion distribuée (par sockets) de banque en Java

LOG4430 : Architecture logicielle et conception avancée

TD3: tableaux avancées, première classe et chaînes

Généralités sur le Langage Java et éléments syntaxiques.

Pour plus de détails concernant le protocole TCP conférez vous à la présentation des protocoles Internet enseignée pendant.

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

Interfaces graphiques avec l API Swing

Info0604 Programmation multi-threadée. Cours 5. Programmation multi-threadée en Java

Chapitre 10. Les interfaces Comparable et Comparator 1

Remote Method Invocation en Java (RMI)

Par Laurent DESECHALLIERS. Mastère Spécialisé en Management de Projets en Milieu Industriel. CESI de Rouen Promotion 2002/2003.

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Calcul Parallèle. Cours 5 - JAVA RMI

Java Licence professionnelle CISII,

ACTIVITÉ DE PROGRAMMATION

PROGRAMMATION PAR OBJETS

Chapitre I Notions de base et outils de travail

Manuel d implémentation des Web Services Sous Axis1 et Axis2/Tomcat/linux. Par Pr Bouabid EL OUAHIDI

TP1 : Initiation à Java et Eclipse

Projet de programmation (IK3) : TP n 1 Correction

Langage à objets : JAVA (1)

Maîtriser le menu contextuel dans un OfficeBean

Tp 1 correction. Structures de données (IF2)

OpenPaaS Le réseau social d'entreprise

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

as Architecture des Systèmes d Information

Programmation Orientée Objet

TP, première séquence d exercices.

Création d une application JEE

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

Langage Java. Classe de première SI

Un ordonnanceur stupide

Le MSMQ. Version 1.0. Pierre-Franck Chauvet

Tutoriel d installation de Hibernate avec Eclipse

Intergiciel - concepts de base

Anne Tasso. Java. Le livre de. premier langage. 6 e édition. Groupe Eyrolles, 2000, 2002, 2005, 2006, 2008, 2010, ISBN :

Communication inter-processus (IPC) : tubes & sockets. exemples en C et en Java. F. Butelle

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

Cahier des Charges du Projet Domotique. Choquet Mathieu Masson Jérôme Groupe 6. Domotique. p.1

TD/TP PAC - Programmation n 3

Java au cœur de la base de données Oracle

Prendre le marteau, le tableau, le mètre, le crayon, la ficelle, le clou, la pointe ;

Java c est quoi? Java pourquoi?

INITIATION AU LANGAGE JAVA

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

Exercices sur les interfaces

Polycopié Cours Programmation Orientée Objet sous Java Programme : Filière SMI S5

Programmation répartie RPC & RMI

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

JAVA TD0. Prise en main du langage Environnement de base JAVA 1

J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

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

OS Réseaux et Programmation Système - C5

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

P r ob lé m a t iq u e d e la g é n é r icit é. Pr in cip e d e la g é n é r icit é e n Ja v a ( 1 /3 )

TD/TP PAC - Programmation n 3

Transcription:

Exercice «CORBA-IDL» complet (J2SE 1.4 + ) Thème : Ecrire un programme serveur permettant de calculer un montant T.T.C. à partir d'un montant H.T. et d un taux de T.V.A., en utilisant l'architecture CORBA-IDL. 1: Proposer une interface du service en IDL (Interface Definition Language). 2 : Donner la commande permettant d engendrer les fichiers java client et serveur à partir de l'interface IDL, ainsi que la liste des fichiers créés. 3 : Ecrire la classe java de l objet «servant» (la classe qui fait le calcul). 4 : Ecrire la classe du serveur (celle qui donne accès au service, tout en le masquant pour le client). 5 : Ecrire la classe du client. 6 : Donner les commandes permettant d activer l'orb sur la machine serveur, de lancer le serveur, et d exécuter le client

Exercice «CORBA-IDL» complet (J2SE 1.4 + ) S O L U T I O N Etape 1: Ecrire l'interface du service en IDL (fichier calcul.idl) : module calcul { ; interface calcul_montants { double calcul_ttc (in double mt_ht, in double taux); ; Etape 2 : Commande permettant d engendrer les fichiers java client et serveur à partir de l'interface IDL : D:\cnam\jdk\bin> idlj -fall "D:\cnam\jdev\mywork\corba\ calcul.idl" Cette commande engendre les fichiers suivants (à partir de Corba 2.2 / J2SE 1.4): _calcul_montantsstub : souche ou talon de l'objet calcul_montants ( côté client ). calcul_montants : Interface Java de l'interface. calcul_montantsoperations : Interface des méthodes distantes (définies dans l interface IDL); ce fichier est partagé par la souche et le squelette. calcul_montantspoa : Squelette de l'objet calcul_montants ( côté serveur ). calcul_montantshelper : Méthodes d accès pour l'objet calcul_montants. calcul_montantsholder : Implante les passages de paramètres pour calcul_montants. Etape 3 : Classe java de l objet «servant» (la classe qui fait le calcul) : // (importations ici, si cette classe est en tête du paquetage) class Calcul_Servant extends calcul_montantspoa { public Calcul_Servant() { public double calcul_ttc (double mt_ht, double taux) { return mt_ht * (1 + taux/100);

Etape 4 : Classe du serveur : // Pour utiliser le service de nommage : import org.omg.cosnaming.*; // inclure le paquetage des exceptions pouvant être déclenchées // par le service de nommage : import org.omg.cosnaming.namingcontextpackage.*; // Pour manipuler les objets CORBA : import org.omg.corba.*; // Classes nécessaires pour référencer le POA ( >= Corba 2.2 / J2SE 1.4) : import org.omg.portableserver.*; import org.omg.portableserver.poa; // interface. // Propriétés pour initialiser l'orb : import java.util.properties; public class Serveur { public Serveur() { public static void main(string args[]) { try { // créer et initialiser l'orb qui intègre le service de noms : ORB orb=orb.init (args, null); // obtenir la référence de rootpoa & activer le POAManager : POA rootpoa = POAHelper.narrow (orb.resolve_initial_references("rootpoa")); rootpoa.the_poamanager().activate(); // créer l objet servant : Calcul_Servant calc= new Calcul_Servant (); // obtenir la référence CORBA du servant : org.omg.corba.object ref = rootpoa.servant_to_reference (calc); calcul_montants href = calcul_montantshelper.narrow (ref); // obtenir la référence du contexte de nommage : org.omg.corba.object objref = orb.resolve_initial_references("nameservice"); // Utiliser NamingContextExt, qui est Interopérable : NamingContextExt ncref = NamingContextExtHelper.narrow (objref); // enregistrer le servant dans le service de nommage : String name = "calcul_ttc"; // nom arbitraire.

NameComponent path [] = ncref.to_name ( name ); ncref.rebind (path, href); System.out.println("Le Serveur à votre écoute "); // attendre les appels des clients orb.run (); catch(exception exc) { System.err.println ("Erreur : "+exc); exc.printstacktrace (System.out); // fin du serveur. Etape 5 : Classe du client : import org.omg.cosnaming.*; // inclure le service de nommage import org.omg.corba.*; // manipuler des objets CORBA import org.omg.cosnaming.namingcontextpackage.*; public class Client { public Client() { public static void main (String args[]) { try { double mt_ht; double taux; double mt_ttc; mt_ht = Double.valueOf (args[0]); taux = Double.valueOf (args[1]); // créer et initialiser l'orb ORB orb = ORB.init (args, null); // obtenir une référence au service de nommage org.omg.corba.object objref = orb.resolve_initial_references ("NameService"); // Utiliser NamingContextExt (au lieu de NamingContext), car //interopérable : NamingContextExt ncref =

NamingContextExtHelper.narrow(objRef); // Demander la référence de l'objet au service de noms : String nom = "calcul_ttc"; // le nom public du service. calcul_montants calcul_ttc = calcul_montantshelper.narrow (ncref.resolve_str(nom)); // Faire appel a l'objet serveur et imprimer les résultats : mt_ttc = calcul_ttc.calcul_ttc (mt_ht, taux); System.out.println ("le montant ttc "+ mt_ttc); catch (Exception exc) { System.out.println("Erreur : "+exc); exc.printstacktrace(system.out); // fin du main Etape 6 : Commandes permettant d activer l'orb sur la machine serveur, de lancer le serveur, et d exécuter le client : start orbd -ORBInitialPort 1500 java calcul.serveur -ORBInitialPort 1500 java calcul.client 100 20 ORBInitialHost localhost ORBInitialPort 1500.