Tutoriel d initiation à OpenORB

Documents pareils
Remote Method Invocation (RMI)

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

Construction d Applications Réparties avec CORBA

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>

Cours 1: Java et les objets

Java Licence professionnelle CISII,

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

RMI le langage Java XII-1 JMF

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

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

TP1 : Initiation à Java et Eclipse

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

Utiliser Java sans BlueJ

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

Package Java.util Classe générique

Remote Method Invocation en Java (RMI)

TP, première séquence d exercices.

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

Auto-évaluation Programmation en Java

Introduction à CORBA

Java Licence Professionnelle CISII,

Initiation à JAVA et à la programmation objet.

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

Programmation par les Objets en Java

as Architecture des Systèmes d Information

Une introduction à Java

Java c est quoi? Java. Java. Java : Principe de fonctionnement 31/01/ Vue générale 2 - Mon premier programme 3 - Types de Programme Java

Flux de données Lecture/Ecriture Fichiers

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

TP1. Outils Java Eléments de correction

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Systeme d'exploitation

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

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

Traitement de données

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

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

INITIATION AU LANGAGE JAVA

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

Introduction au langage Java

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

PROGRAMMATION PAR OBJETS

Projet de programmation (IK3) : TP n 1 Correction

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

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

Tutoriel d installation de Hibernate avec Eclipse

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2

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

Création d une application JEE

Conception de serveurs d'applications ouverts

Programmation Par Objets

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

Calcul Parallèle. Cours 5 - JAVA RMI

Chapitre I Notions de base et outils de travail

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

Bases Java - Eclipse / Netbeans

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

Oracle WebLogic Server (WLS) 11gR1 ( et ) Installation sur Oracle Linux 5 et 6 Hypothèses Installation Oracle Linux 5 (OL5)

CORBA. (Common Request Broker Architecture)

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

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

Synchro et Threads Java TM

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

Le Modèle de Sécurité dans JAVA

Java DataBaseConnectivity

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

Chapitre VI- La validation de la composition.

Corrigé des exercices sur les références

Hadoop / Big Data. Benjamin Renaut <renaut.benjamin@tokidev.fr> MBDS

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

Cours 14 Les fichiers

Programmation Orientée Objet

Introduction à Eclipse

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

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

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

Tutoriel BlueJ. Michael Kölling Mærsk Institute University of Southern Denmark. Version 1.4 fr-2 par le groupe Sigma 1 pour BlueJ Version 1.2.

ALGORITHMIQUE ET PROGRAMMATION ORIENTEE OBJET

Langage Java. Classe de première SI

Remote Method Invocation Les classes implémentant Serializable

Threads. Threads. USTL routier 1

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

TD/TP PAC - Programmation n 3

Eclipse atelier Java

Développement Logiciel

ACTIVITÉ DE PROGRAMMATION

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

Java Licence Professionnelle CISII,

Web Tier : déploiement de servlets

Entrées / Sorties. Entrées / Sorties. Entrées/Sorties. System.out. Fonctionnement par flots (stream) Karima Boudaoud IUT- R&T. Terrain connu.

Programmation Objet Java Correction

CORBA. (Common Object Request Broker Architecture) Denivaldo LOPES

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

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 )

Utilisation de Jakarta Tomcat

Projet gestion d'objets dupliqués

Premiers Pas en Programmation Objet : les Classes et les Objets

Généricité. en Java. (polymorphisme paramétrique) Philippe GENOUD UJF Janvier

[APPLICATON REPARTIE DE VENTE AUX ENCHERES]

Transcription:

Tutoriel d initiation à OpenORB F. Bernardi, Université de Corse, 2002 OpenORB se trouve aux adresses suivantes: http://openorb.sourceforge.net http://umn.dl.sourceforge.net/sourceforge/openorb/openorb-1.3.0.tgz 1 Installation d OpenORB 1.3.0 Récupérez l archive à l adresse suivante (version 1.3.0 à la date d écriture de l article) et sauvegardez la dans votre répertoire personnel en utilisant les commandes suivantes: # cd ~ # wget http://umn.dl.sourceforge.net/sourceforge/openorb/openorb-1.3.0.tgz Désarchivez l archive dans votre répertoire personnel et renommez le dossier ainsi créé : # cd ~ # tar xzf OpenORB-1.3.0.tgz # mv OpenORB-1.3.0 OpenORB Vérifiez que la variable d environnement JAVA_HOME est positionnée: # echo $JAVA_HOME /usr/java/j2sdk1.4.1_01 Si elle n est pas positionnée: # export JAVA_HOME=<chemin vers la JRE Java> Positionnez la variable CLASSPATH de manière à ce qu elle pointe vers tous les fichiers.jar du répertoire lib du répertoire d OpenORB: # for i in ~/OpenORB/lib/*.jar > do > export CLASSPATH=$CLASSPATH:$i > done Vérifiez la valeur de cette variable: # echo $CLASSPATH Entrez les commande suivante: # cd ~/OpenORB/lib # su # java -jar OpenORB/lib/openorb-1.3.0.jar # exit Vérifiez par ailleurs que le nom de la machine apparaît dans le fichier /etc/hosts. Ceci permet de spécifier au compilateur et à l interpréteur Java que l on va utiliser OpenORB et non pas l ORB integré au JDK. La commande su permet de basculer vers l utilisateur root. Ouvrez un terminal, placez vous dans un répertoire quelconque et lancez la commande du compilateur IDL: # java org.openorb.compiler.idlcompiler 1

Si tout s est bien passé, une liste d options doit s afficher. Dans le cas contraire, répétez les étapes précédentes en vérifiant les valeurs. 2 Le compilateur IDL vers Java Le compilateur IDL vers Java est appelé par la commande suivante: # java org.openorb.compiler.idlcompiler <fichier.idl> Les options principales de ce compilateur sont les suivantes: -boa: générer les skeleton pour utiliser le BOA; -d <rep>: spécifier un répertoire de destination. Par défaut, le répertoire est nommé generated ; -noskeleton: ne pas générer de skeleton; -nostub: ne pas générer de stub; -package <package_name>: spécifier un package de destination; -jdk1.4: générer des classes pour le JDK 1.4 -notie: ne pas générer les classes pour l approche par délégation Par défaut, les fichiers sont générés pour l utilisation du POA. 3 Exemple: un convertisseur euro simple avec POA Le but de cet exemple est de créer une implémentation CORBA d un objet Euro défini par le diagramme UML suivant: devise: string taux: double Euro +toeuro(devise: double):double +todevise(euro: double): double +settaux(_taux: double): void +setdevise(_devise: string): void Commencez par créer un répertoire de travail appelé CORBA dans votre répertoire personnel. Créez à l intérieur un répertoire conv_euro. Première étape: écrire la description IDL du convertisseur et effectuer la projection en Java. Créez un fichier conv_euro.idl contenant le code suivant: module Convertisseur { interface Euro { double toeuro(in double devise); 2

double todevise(in double euro); void settaux(in double _taux); void setdevise(in string _devise); ; ; Effectuez la projection en Java en utilisant le POA (Portable Object Adapter): # java org.openorb.compiler.idlcompiler conv_euro.idl -notie Cette commande crée un répertoire generated contenant un répertoire Convertisseur correspondant au module défini en IDL. Ce répertoire contient les fichiers générés suivants: Euro.java: définition de l interface Euro; EuroHelper.java: méthodes pour faciliter l utilisation des objets Euro (lire un objet, le convertir en utilisant la méthode narrow...); EuroHolder.java: méthodes pour prendre en charge le passage de paramètres avec les méthodes de l objet Euro. EuroOperations.java: interface présentant les méthodes de l objet Euro (Ce dernier hérite de cette interface); EuroPOA.java: skeleton pour l objet Euro; _EuroStub.java: stub pour l objet Euro; Notez que tous ces fichiers font partie du package convertisseur créé par la projection du module IDL Convertisseur. Deuxième étape: Définir la classe de l objet que nous voulons mettre à disposition des clients. L implémentation de l objet serveur sera construit par spécialisation de la classe EuroPOA. Créez une nouvelle classe EuroPOAImpl (et donc un nouveau fichier EuroPOAImpl.java) contenant le code suivant: // Implémentation de l objet Euro avec le POA import Convertisseur.*; public class EuroPOAImpl extends EuroPOA { private String devise; private double taux = 6.55957; public double toeuro(double devise) { return devise / taux; public double todevise(double euro) { return euro * taux; public void settaux(double _taux) { taux = _taux; public void setdevise(string _devise) { 3

devise = _devise; Troisième étape: réalisation du serveur CORBA. La réalisation du serveur CORBA correspond à la définition d une application principale qui contiendra un objet Euro. Créez une nouvelle classe ServerPOA (et donc un nouveau fichier ServerPOA.java) contenant le code suivant: // Serveur utilisant le POA import org.omg.corba.*; import org.omg.portableserver.*; import org.omg.corba.orbpackage.*; import java.io.*; public class ServerPOA { public static void main(string args[]) { // Initialisation de l ORB ORB orb = ORB.init(args, null); // Initialisation du POA org.omg.corba.object objpoa = null; POA rootpoa = null; objpoa = orb.resolve_initial_references("rootpoa"); catch (InvalidName e1) { // Opération de narrow sur l objet obtenu rootpoa = POAHelper.narrow(objPoa); // Instanciation d un objet Euro EuroPOAImpl euro = new EuroPOAImpl(); // Activation du servant byte[] servantid = rootpoa.activate_object(euro); // Récupération de la référence du servant org.omg.corba.object obj = rootpoa.id_to_reference(servantid); // Exportation de la référence String reference = orb.object_to_string(obj); FileOutputStream file = new FileOutputStream("ObjectId"); PrintStream pfile = new PrintStream(file); pfile.println(reference); catch (IOException e2) { // Activation du POA par son manager rootpoa.the_poamanager().activate(); System.out.println("Serveur en attente..."); // Lancement de l ORB orb.run(); catch (Exception e3) { System.out.println("Exception!"); 4

e3.printstacktrace(); Quatrième étape: réalisation du client CORBA. De manière à récupérer la référence sur l objet utilisé, le client va utiliser le fichier ObjectId créé par le serveur CORBA. Créez une nouvelle classe Client (et donc un nouveau fichier Client.java) contenant le code suivant: // Client CORBA import Convertisseur.*; public class Client { public static void main(string args[]) { // Initialisation de l ORB org.omg.corba.orb orb = org.omg.corba.orb.init(args, null); // Récupération de la référence de l objet Euro Euro euro = null; org.omg.corba.object obj = null; java.io.fileinputstream file = new java.io.fileinputstream("objectid"); java.io.datainputstream myinput = new java.io.datainputstream(file); String stringtarget = myinput.readline(); obj = orb.string_to_object(stringtarget); catch (java.io.ioexception e1) { // Opération de narrow sur la référence de l objet euro = EuroHelper.narrow(obj); // Utilisation de l objet euro System.out.println("1 franc = " + euro.toeuro(1) + " euros"); System.out.println("1 euro = " + euro.todevise(1) + " francs"); catch (org.omg.corba.systemexception e3) { System.out.println("Exception CORBA!"); System.out.println(e3.getMessage()); Cinquième étape: compilation et exécution de l application. Sauvegardez les fichiers Client.java, EuroPOAImpl.java et ServerPOA.java dans le répertoire ~/CORBA/conv_euro et lancez la compilation par les commandes suivantes: # cd ~/CORBA/conv_euro # export CLASSPATH=$CLASSPATH:./generated/:. # cd generated/convertisseur # javac *.java 5

# cd../.. # javac Client.java ; javac EuroPOAImpl.java ; javac ServerPOA.java Ouvrez un nouveau terminal et placez vous dans ~/CORBA/conv_euro. Dans ce nouveau terminal lancez les commandes: # for i in ~/OpenORB/lib/*.jar > do > export CLASSPATH=$CLASSPATH:$i > done # cd ~/CORBA/conv_euro # export CLASSPATH=$CLASSPATH:./generated/:. # java ServerPOA et dans l ancien terminal qui a servi à compiler les fichiers: # cd ~/CORBA/conv_euro # java Client 6