Comment intégrer des bundles OSGi dans une application sous la plateforme NetBeans

Mike Francois

Ce tutoriel est une démonstration rapide de comment intégrer des bundles OSGi dans une application sous la plateforme NetBeans.

On se concentrera sur un scénario « hello world » basé sur le jeu Sudoku par Peter Kriens. Vous importez les bundles OSGi constituant le jeu Sudoku avec les paquets liés Equinox nécessaires. Lorsque l'application est déployée, l'application est disponible dans le navigateur web.

Prérequis pour suivre ce tutoriel, vous aurez besoin de :

NetBeans IDE version 6.9
Java Developer Kit (JDK) version 6
Equinox
Sudoku Game
♪

- Titre : Comment intégrer des bundles OSGi dans une application sous la plateforme NetBeans

- Auteur : Mike Francois

- Parution : 18 mai 2010

- Licence : Copyright ® 2010 Mike Francois. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- I. Configuration de l'environnement

- II. Créer l'application

- III. Importer les bundles OSGi

- IV. Lancer l'application

- V. Remerciements

I - Configuration de l'environnement

Une fois que vous avez téléchargé tous les logiciels listés précédemment, vous devez prendre le temps de préparer votre environnement comme décrit ci-dessous.

1. Créez un nouveau dossier sur votre disque dur.

2. Depuis la distribution Equinox, insérez les éléments suivants dans le dossier :

- javax.servlet_xxx.jar ;
- org.eclipse.equinox.ds_xxx.jar ;
- org.eclipse.equinox.http_xxx.jar ;
- org.eclipse.equinox.util_xxx.jar ;
- org.eclipse.osgi.services_xxx.jar ;
- org.eclipse.osgi_xxx.jar.

3. Insérez les jars du Sudoku dans le dossier soit les jars ci-dessous :

- aQute.sudoku.jar ;

- aQute.webrpc.jar.

Maintenant vous avez tous les bundles OSGi que vous allez importer dans un endroit centralisé d'où vous pourrez les intégrer dans votre application.

II - Créer l'application

Une fois que vous avez tous les bundles disponibles requis, créez votre nouvelle application à partir de la plateforme NetBeans comme décrit ci-dessous.

1. Choisir un Fichier | Nouveau Projet et choisir « Samples » -> « NetBeans Modules » et sélectionner « Equinox based Platform Application ».

2. Donner un nom pour l'application comme montré ci-dessous :

3. Vous pouvez lancer l'application qui résulte du template ci-dessus, vous pourrez voir une application contenant une fenêtre qui montre tous les modules de NetBeans et les bundles OSGi qui composent votre application.

III - Importer les bundles OSGi

Comme les premières étapes, vous devez préparer votre environnement comme décrit ci-dessous.

1. Faites un clic droit sur l'application dans la fenêtre des projets, choisissez « Propriétés » et allez dans l'onglet « Librairies ». Cliquez « Add Cluster » et naviguez dans le fichier où les JAR auront été importés. Ensuite un assistant s'ouvre et vous permet de convertir les jars à un « cluster » c'est-à-dire un ensemble de modules/bundles qui sont intégrés à votre application.

2. Comme montré précédemment, mettez tous les paquets importés OSGi à « Enabled », de sorte qu'ils seront chargés et disponibles au lancement de l'application.

3. Quand vous cliquez sur « Finish », le fichier de configuration « platform.properties » sera mis à jour. Il devrait ressembler à quelque chose comme ça :

cluster.path.extra=netbinox:\../../path/to/my/nbsudokugame/folder
disabled.modules.extra=org.netbeans.libs.felix
cluster.path=\
${nbplatform.active.dir}/harness:\
${nbplatform.active.dir}/platform:\
${cluster.path.extra}
disabled.modules=\
org.jdesktop.layout,\
org.netbeans.api.visual,\
org.netbeans.core.execution,\
org.netbeans.core.multiview,\
org.netbeans.insane,\
org.netbeans.libs.felix,\
org.netbeans.libs.jsr223,\
org.netbeans.modules.apisupport.harness,\
org.netbeans.modules.apisupport.tc.cobertura,\
org.netbeans.modules.autoupdate.services,\
org.netbeans.modules.autoupdate.ui,\
org.netbeans.modules.core.kit,\
org.netbeans.modules.favorites,\
org.netbeans.modules.jellytools.platform,\
org.netbeans.modules.jemmy,\
org.openide.compat,\
org.openide.execution,\
org.openide.options,\
org.openide.util.enumerations
nbplatform.active=default

Note : la première ligne ci-dessus pointe vers le dossier que vous avez créé plus tôt.

4. Enfin, ajoutez cette ligne au fichier de configuration « project.properties » de l'application, qui spécifie qu'aucun écran de démarrage ne sera affiché et qui spécifie le port de déploiement de l'application :

run.args.extra=--nosplash -J-Dorg.osgi.service.http.port=8080

IV - Lancer l'application

L'application est maintenant prête pour être déployée comme décrit ci-dessous

1. Lancez l'application ! Tous les bundles OSGi et les modules de NetBeans de votre application vont être lancés. L'application pour voir les bundles OSGi et les modules NetBeans est aussi déployé, vous donnant ainsi une application bureau pour suivre ce qui est déployé ce qui s'avère être très pratique.

Vous pouvez également supprimer le module entier qui fournit la fenêtre ci-dessus. Puis supprimer tous les modules requis pour la fenêtre. En clair, supprimez pour le système de fenêtre, le système des actions, et toutes les autres choses… excepté les jars requis pour l'intégration d'OSGi : boostrap,startup, filesystems, module system, utilities et lookup.

cluster.path.extra=netbinox:\../../path/to/my/nbsudokugame/folder
disabled.modules.extra=org.netbeans.libs.felix
cluster.path=\
${nbplatform.active.dir}/harness:\
${nbplatform.active.dir}/platform:\
${cluster.path.extra}
disabled.modules=\
org.jdesktop.layout,\
org.netbeans.api.annotations.common,\
org.netbeans.api.progress,\
org.netbeans.api.visual,\
org.netbeans.core,\
org.netbeans.core.execution,\
org.netbeans.core.io.ui,\
org.netbeans.core.multiview,\
org.netbeans.core.nativeaccess,\
org.netbeans.core.output2,\
org.netbeans.core.ui,\
org.netbeans.core.windows,\
org.netbeans.insane,\
org.netbeans.libs.felix,\
org.netbeans.libs.jna,\
org.netbeans.libs.jsr223,\
org.netbeans.libs.junit4,\
org.netbeans.modules.apisupport.harness,\
org.netbeans.modules.apisupport.tc.cobertura,\
org.netbeans.modules.applemenu,\
org.netbeans.modules.autoupdate.services,\
org.netbeans.modules.autoupdate.ui,\
org.netbeans.modules.core.kit,\
org.netbeans.modules.editor.mimelookup,\
org.netbeans.modules.editor.mimelookup.impl,\
org.netbeans.modules.favorites,\
org.netbeans.modules.javahelp,\
org.netbeans.modules.jellytools.platform,\
org.netbeans.modules.jemmy,\
org.netbeans.modules.keyring,\
org.netbeans.modules.masterfs,\
org.netbeans.modules.nbjunit,\
org.netbeans.modules.options.api,\
org.netbeans.modules.options.keymap,\
org.netbeans.modules.print,\
org.netbeans.modules.progress.ui,\
org.netbeans.modules.queries,\
org.netbeans.modules.sendopts,\
org.netbeans.modules.settings,\
org.netbeans.modules.spi.actions,\
org.netbeans.spi.quicksearch,\
org.netbeans.swing.outline,\
org.netbeans.swing.plaf,\
org.netbeans.swing.tabcontrol,\
org.openide.actions,\
org.openide.awt,\
org.openide.compat,\
org.openide.dialogs,\
org.openide.execution,\
org.openide.explorer,\
org.openide.io,\
org.openide.loaders,\
org.openide.nodes,\
org.openide.options,\
org.openide.text,\
org.openide.util.enumerations,\
org.openide.windows
nbplatform.active=default

Puis vous aurez une application sans interface graphique c'est-à-dire une application serveur bien adaptée pour le développement web modulaire.

2. Maintenant tapez dans le navigateur (optionnellement, utilise URLDisplayer.getDefault() de l'API NetBeans UI Utilities pour ouvrir le navigateur à la bonne adresse) et le « index.html » défini dans le jeu du Sudoku est déployé et s'affiche dans le navigateur et vous pouvez commencer à jouer au jeu du Sudoku

http://localhost:8080/rpc/sudoku/index.html

Félicitation, vous avez intégré vos premiers bundles OSGi dans l'application de la plateforme NetBeans

V - Remerciements

Je tiens à remercier Geertjan Wielenga pour l'autorisation de la traduction de son article. Vous pouvez voir l'article original ici.