TME 5 plateforme OSGi



Documents pareils
TP1 : Initiation à Java et Eclipse

TP1 : Initiation à Java et Eclipse

Tutoriel d installation de Hibernate avec Eclipse

S T L - C P S - L e s p l u g i n s E c l i p s e. - Une Introduction , Frédéric Peschanski

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

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

Introduction à Eclipse

TP1. Outils Java Eléments de correction

Tutoriel Création d une source Cydia et compilation des packages sous Linux

TP 1 : 1 Calculs en binaire, octal et hexadécimal

Dossier. Développer en Java sur téléphone mobile. Benjamin Damécourt UFR SITEC Master 2 EESC 11 janvier 2012

JOnAS Day 5.1. Outils de développements

Pharmed. gestion de pharmacie hospitalière. Installation / déploiement

Java Licence professionnelle CISII,

TP : Shell Scripts. 1 Remarque générale. 2 Mise en jambe. 3 Avec des si. Systèmes et scripts

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

Web Tier : déploiement de servlets

TP2 - Conguration réseau et commandes utiles. 1 Généralités. 2 Conguration de la machine. 2.1 Commande hostname

bbc Launch Pad Juillet 2011 Version 10.0

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

TD/TP 1 Introduction au SDK d Android

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

Système Principal (hôte) 2008 Enterprise x64

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

Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée VMWare ESX Server 3, 3.5

Quick Start Installation de MDweb version 2.3

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

Etude de cas : PGE JEE V2

Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée VMWare ESX Server

Installation et prise en main

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

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

RMI le langage Java XII-1 JMF

Programmation Objet - Cours II

ECLIPSE ET PDT (Php development tools)

EXA1415 : Annotations

Bases Java - Eclipse / Netbeans

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

Oracle Developer Suite 10g. Guide de l installation. Vista & Seven

Remote Method Invocation (RMI)

TP SIN Programmation sur androïde Support : eclipse

TP n 2 : Installation et administration du serveur ProFTP. Partie 1 : Fonctionnement du protocole FTP (pas plus de 15min)

Mon premier rpm. 7 juin Avant de commencer RPM URPMI RPMBUILD... 2

Projet de fin d études

Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa Novembre 2008

- TP Programmation Android - NFA024 Conservatoire National des Arts et Métiers

Construire des plug-ins pour SAS Management Console SAS 9.1

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


Systeme d'exploitation

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

1.3 Gestion d'une application

UwAmp. Serveur d'evaluation

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

Serveur Acronis Backup & Recovery 10 pour Linux. Update 5. Guide d'installation

Oracle Database 11g: Administration Workshop I Release 2

INSTALLATION ET CONFIGURATION DE OPENLDAP

Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée Virtual Server de Microsoft

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

SQL Data Export for PS/PSS

TUTORIEL: INSTALLATION D'UN SERVEUR LOCAL SOUS WINDOWS 7 POUR APPINVENTOR version du 06/04/2013

Etude de la plateforme Eclipse

WINDOWS SERVER 2003 Maintenance d'active directory V1.0

Eclipse atelier Java

INSTALLATION ET CONFIGURATION D'UN SERVEUR WEB SUR MAC OS X

ECLIPSE RCP. Introduction

Java 7 Les fondamentaux du langage Java

La plate-forme dynamique de service OSGi

Alfstore workflow framework Spécification technique

Programmation Orientée Objet

Manuel utilisateur (Manuel_utilisateur_version pdf) Manuel Reprise des données (Manuel_Reprise_donnees_version

Warren PAULUS. Android SDK et Android x86

Gestion d Active Directory à distance : MMC & Délégation

Titre: Version: Dernière modification: Auteur: Statut: Licence:

Votre premier projet Android

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

Table des matières Hakim Benameurlaine 1

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

TP1 - Prise en main de l environnement Unix.

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

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

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.

La plate-forme DIMA. Master 1 IMA COLI23 - Université de La Rochelle

Installation personnalisée d'oracle 10g

Procédure d Installation et de mise à jour du client CAN-8 32 bits

Gestion d identités PSL Exploitation IdP Authentic

Chapitre 10. Les interfaces Comparable et Comparator 1

Remote Method Invocation Les classes implémentant Serializable

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.

Tutorial pour une application simple

Déployer les Fonts, Icones, et Images avec Forms Services 11G

La console MMC. La console MMC Chapitre 13 02/08/2009

VERITAS NetBackup 5.0 en 5 jours : Administration Avancée

Configuration de SquidGuard sous Fedora Core 4-1 / 6 -

SolidWorks Electrical 2014 Guide d'installation individuelle (1 base de donnée distincte par poste)

Transcription:

UPMC Paris Universitas Master d'informatique M1/STL/CPS 1 TME 5 plateforme OSGi Frédéric Peschanski 26 mars 2008 Ce sujet de TME est un tutoriel à la technologie OSGi, une plateforme industrielle pour les composants binaires et les architectures orientées service. Exercice 1 : bundle Hello Dans un premier temps, nous allons implémenter un composant (bundle dans la terminologie OSGi) minimal : le fameux hello world. On commencera par récupérer sur le site de l'ue le squelette CPS-TME5-HelloBundle-skel.jar. Ce squelette contient : build.xml : le chier de construction ant build.properties : les propriétés éditables pour le chier de construction manifest : le répertoire du manifeste Jar/OSGi (vide) src : le répertoire des sources (pour l'instant vide) Pour démarrer, ne pas oublier d'éditer les propriétés du chier build.properties Question 1.1 : Classe d'activation Un bundle contient au minimum une classe d'activation dont la responsabilité concerne le démarrage (état start) et l'arrêt (état stop) dans le cycle de vie du composant. Voici un extrait du code source de l'interface d'activation à implanter : package org.osgi.framework ; import org.osgi.framework.bundlecontext ; public interface BundleActivator { public void start(bundlecontext context) throws Exception ; public void stop(bundlecontext context) throws Exception ; } La méthode start explique ce qu'il se produit lorsque le composant est démarré, et la méthode stop en décrit l'arrêt. Dans le paquetage hellobundle implémenter une class d'activation HelloActivator qui ache simplement un message Hello world au démarrage, et un message Goodbye world à l'arrêt.

UPMC Paris Universitas Master d'informatique M1/STL/CPS 2 Question 1.2 : Manifeste Le deuxième constituant d'un composant OSGi est un chier de manifeste, basé sur le format des manifestes jar. Bundle-ManifestVersion : 2 Bundle-Name : <A compléter> Bundle-SymbolicName : <A compléter> Bundle-Version : <A compléter> Bundle-Activator : <A compléter> Bundle-Vendor : <A compléter> Import-Package : org.osgi.framework ;version="1.3.0" Export-Package : <A compléter> Nous allons placer le manifest dans un chier HelloBundle.manifest situé dans le répértoire manifest/. Les propriétés à compléter sont les suivantes : Bundle-Name le nom explicatif du composant : une chaîne de caractères quelconque Bundle-SymbolicName le nom symbolique du composant : un identicateur Java Bundle-Version le numéro de version du composant : au format M.m.r avec M numéro de version Majeure, m version mineure et r numéro de release (des entiers positifs). Bundle-Vendor l'institution, société ou personne responsable du composant (en termes de distribution) Import-Package un paquetage à importer pour le bon fonctionnement du composant : au moins le paquetage standard de la plateforme OSGi Export-Package paquetage exporté par le bundle (partie publique) Question 1.3 : Empaquetage Nous pouvons maintenant déployer notre composant. La première étape concerne la compilation du code source. La cible ant correspondante est compile. Une fois le code compilé sans erreur, il nous faut créer le chier d'archive jar qui devra contenir : les classes compilées (répertoire build) le chier de manifeste (dans manifest/hellobundle.manifest) La tâche d'empaquetage est décrite par la cible makebundle. Attention : il faut saisir dans build.properties les propriétés liées au bundle (nom symbolique et numéro de version). Si tout se passe bien, un chier HelloBundle_1.0.0.jar est créé dans le répertoire dist/. Vérier le contenu de cette archive. Question 1.4 : Déploiement Pour déployer notre composant HelloBundle nous avons besoin d'une implémentation de la plateforme OSGi. Il en existe plusieurs, notamment Felix 1 de la fondation Apache, Knoppersh 2 et 1 http://felix.apache.org 2 http://www.knopflerfish.org/

UPMC Paris Universitas Master d'informatique M1/STL/CPS 3 nalement Equinoxe 3 de la fondation Eclipse. Dans ce TME, nous allons utiliser Equinoxe qui a l'avantage d'être disponible sur les machines puisque au c ur de l'environnement Eclipse. la cible startosgi du build.xml lance dans un terminal la console OSGi implémentée dans Equinoxe. On peut lancer manuellement cette console par la ligne de commande suivante : > java -jar /usr/share/eclipse/plugins/org.eclipse.osgi_3.3.0.v20070530.jar -console ou encore avec la commande eclipse -console (mais cela démarre également toute place plateforme Eclipse). Une fois la console lancée, l'invite de commande est aché : osgi> On peut taper la commande help pour obtenir de l'aide (en anglais) sur les commandes disponibles. Les commandes principales sont : install <URL> : installer un bundle uninstall <id> pi <nom> : désinstaller un bundle start <id> pi <nom> : démarrer un bundle stop <id> pi <nom> : arrêter un bundle ss : liste des bundles disponibles et leur statut bundle<id> pi <nom> : informations sur un bundle shutdown : arrêter le framework OSGi launch : relancer le framework OSGi close : arrêter le framework OSGi et quitter la console Pour installer notre composant, on utilisera la ligne de commande suivante : osgi> install le :///<Chemin absolu vers le chier bundle> On pourra ensuite démarrer ou arrêter le composant avec les commande start ou stop. On peut donner en référence soit l'identicateur numérique de bundle (vérier avec la commande ss) ou le nom symbolique utilisé. Remarque : on n'oubliera pas de désinstaller le bundle avec la commande uninstall Exercice 2 : Marque-page internet Dans ce second exercice nous allons créer un service au sens de la plateforme OSGi. Il s'agira d'un simple service de gestion de marque page internet. On commence par créer l'arborescence du projet Bookmark en s'inspirant de l'exercice 1 4. 3 http://www.eclipse.org/equinox/ 4 En règle général, chaque bundle OSGi possède son propre répertoire de développement.

UPMC Paris Universitas Master d'informatique M1/STL/CPS 4 Question 2.1 : service Bookmark Un service OSGi est décrit par une interface Java quelconque. Dans un paquetage dédié (préxe bookmark), décrire l'interface BookmarkService qui permet de manipuler le marque page. Chaque entrée du marque page contient le nom du site enregistré ainsi que son URL. L'interface proposée est la suivante : package cpsweb.bookmark ; public interface BookmarkService { public void register(string site, String url) ; public String ndurl(string site) ; public String listall() ; } Question 2.2 : implémentation Proposer une implémentation simple du service de marque-page dans le répertoirecpsweb.bookmark.impl. Question 2.3 : classe d'activation On crée la classe d'activation cpsweb.bookmark.bookmarkactivator régissant le démarrage et l'arrêt du composant marque-page. Pour le démarrage du service (méthode start), on créera tout d'abord une instance de l'implémentation du marque-page (stockée sous la forme d'un attribut de la classe d'activation). Ensuite nous devons enregistrer le service auprès de la plateforme en utilisant la méthode registerservice de BundleContext (dont une instance est passée en paramètre à la méthode start). La signature de cette méthode est la suivante : ServiceRegistration registerservice(string name, Object impl, Properties props) ; L'argument name est le nom du service, on utiliser "cpsweb.bookmark.bookmarkservice". L'instance de l'implémentation sera passée comme impl. Finalement un dictionnaire de propriétés - ou méta-données - associé au service est également passé en argument. Ces méta-données permettent de décrire plus précisément le service enregistré (ou plutôt son implémentation). On ajoutera une méta-donnée de nom "category" et de valeur "personal" pour expliquer qu'il s'agit d'un marque-page à usage personnel. L'instance de org.osgi.serviceregistration qui est retournée par la méthode registerservice sera stockée sous la forme d'un attribut reg initialement à null.x A l'arrêt du composant, on forcera la récupération mémoire du marque-page, et si nécessaire le désenregistrement de reg (méthode unregister et sa récupération. Question 2.4 : déploiement On procédera ensuite au déploiement du composant, en n'oubliant pas de saisir des informations correctes pour le manifeste. Il faut notamment exporter le paquetages cpsweb.bookmark.

UPMC Paris Universitas Master d'informatique M1/STL/CPS 5 Question 2.5 : client du marque page Sur le site de l'ue, récupérer l'archive CPS-TME5-BookmarkClient-20080321.jar qui contient tout ce qu'il faut pour fabriquer un composant client pour le service de marque-page. On regardera chaque chier pour en comprendre le rôle. Modier éventuellement tout ce qu'il vous semble nécessaire. Après compilation et fabrication du Buncle, déployer le client et le démarrer. Que se passe-t-il?