Tutoriel Java OSGi pour débutant
1. Introduction
Ce document est écrit en se basant sur :
- Eclipse 4.4 (LUNA)
Voici les étapes dans l'instruction :
2. Créer OSGi "MathConsumer"
Créer Project MathConsumer
- org.o7planning.tutorial.helloosgi.mathconsumer.Activator
Le projet MathConsumer a été créé.
Ouvrez la class Activator pour corriger le code :
Activator.java
package org.o7planning.tutorial.helloosgi.mathconsumer;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
public class Activator implements BundleActivator {
private static BundleContext context;
static BundleContext getContext() {
return context;
}
public void start(BundleContext bundleContext) throws Exception {
Activator.context = bundleContext;
System.out.println("MathConsumer Starting...");
System.out.println("MathConsumer Started");
}
public void stop(BundleContext bundleContext) throws Exception {
Activator.context = null;
System.out.println("MathConsumer Stopped");
}
}
Configurer les bundles dépendants pour MathConsumer
MathConsumer est unOSGi reconnu comm un Bundle. Maintenant, nous allons déclarer MathConsumer qui utilise quelques Bundles en but de pouvoir exécuter MathConsumer plus tard.
- org.eclipse.osgi
- org.eclipse.equinox.console
- org.apache.felix.gogo.command
- org.apache.felix.gogo.runtime
- org.apache.felix.gogo.shell
Configurer Eclipse pour exécuter MathConsumer
Ici nous allons configurer pourque MathConsumer puisse exécuter sur Eclipse
Cliquez droit sur le projet MathService et sélectionnez "Run As/Run Configuration.."
Saisissez le nom :
- Run OSGi MathConsumer
Exécutation de MathConsumer
Ceci est le résultat de l'exécution de OSGi MathConsumer
Utilisez la commande ss pour voir ceux qui sont en cours d'exécution , et leur état.
Comme nous voyons dans des illustrations, le ID de OSGI MathConsumer est 2, utilisez la commande "stop" pour arrêter ce Bundle.
Et utilisez le"start"pour redémarrer cet OSGi.
3. Créer OSGi "MathService"
Créer le projet "MathService"
Sur Eclipse sélectionnez :
- File/New/Other
Sélectionnez le type de OSGi Standard
- MathService
- org.o7planning.tutorial.helloosgi.Activator
C'est l'image de projet qui a été créé :
Code Project MathService & enregistrement de MathService
Nous allons ajouter quelques classes pour obtenir l'image finale du projet comme ci-dessous :
MathService.java
package org.o7planning.tutorial.helloosgi.mathservice;
public interface MathService {
public int sum(int a, int b);
}
MathServiceImpl.java
package org.o7planning.tutorial.helloosgi.mathservice.impl;
import org.o7planning.tutorial.helloosgi.mathservice.MathService;
public class MathServiceImpl implements MathService {
@Override
public int sum(int a, int b) {
return a+ b;
}
}
MathUtils.java
package org.o7planning.tutorial.helloosgi.utils;
public class MathUtils {
public static int minus(int a, int b) {
return a- b;
}
}
Et voici l'image d'ensemble sur relations de classe qui viennent de créer.
L'inscription du MathService permet aux autres OSGi d'être utilisés. Cela est fait dans Activator de OSGi MathService
Activator.java
package org.o7planning.tutorial.helloosgi;
import org.o7planning.tutorial.helloosgi.mathservice.MathService;
import org.o7planning.tutorial.helloosgi.mathservice.impl.MathServiceImpl;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
public class Activator implements BundleActivator {
private static BundleContext context;
static BundleContext getContext() {
return context;
}
public void start(BundleContext bundleContext) throws Exception {
Activator.context = bundleContext;
System.out.println("Registry Service MathService...");
this.registryMathService();
System.out.println("OSGi MathService Started");
}
private void registryMathService() {
MathService service = new MathServiceImpl();
context.registerService(MathService.class, service, null);
}
public void stop(BundleContext bundleContext) throws Exception {
Activator.context = null;
System.out.println("OSGi MathService Stopped!");
}
}
Configurer OSGi MathService et et expliquer leur signification
Nous configurons pour exporter (export) deux packages org.o7planning.tutorial.helloosgi.utils et org.o7planning.tutorial.helloosgi.mathservice.
OSGi est comme une boîte fermée, autres OSGi ne peut que utiliser la classe/interface de cet OSGi si elles sont dans le package qui est exporté à l'extérieur .
OSGi est comme une boîte fermée, autres OSGi ne peut que utiliser la classe/interface de cet OSGi si elles sont dans le package qui est exporté à l'extérieur .
La figure ci-dessous illustre OSGi MathService qui exporte deux packages :
- org.o7planning.tutorial.helloosgi.mathservice
- org.o7planning.tutorial.helloosgi.utils
OSGi MathConsumer ne peut qu'utiliser la classe/interface dans le package d'exportation de MathService.
4. Configurer MathConsumer utilise MathService
Ensuite on va déclarer pourque MathConsumer puisse utiliser MathService.
Modifiez la class Activator :
Activator.java
package org.o7planning.tutorial.helloosgi.mathconsumer;
import org.o7planning.tutorial.helloosgi.mathservice.MathService;
import org.o7planning.tutorial.helloosgi.utils.MathUtils;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceReference;
public class Activator implements BundleActivator {
private static BundleContext context;
static BundleContext getContext() {
return context;
}
public void start(BundleContext bundleContext) throws Exception {
Activator.context = bundleContext;
System.out.println("MathConsumer Starting...");
System.out.println("5-3 = " + MathUtils.minus(5, 3));
//
ServiceReference<?> serviceReference = context
.getServiceReference(MathService.class);
MathService service = (MathService) context
.getService(serviceReference);
System.out.println("5+3 = " + service.sum(5, 3));
System.out.println("MathConsumer Started");
}
public void stop(BundleContext bundleContext) throws Exception {
Activator.context = null;
System.out.println("MathConsumer Stopped");
}
}
Re-configurez pour exécuter OSGI MathConsumer
Cliquez-droit sur le projet MathConsumer puis sélectionnez "Run As/Run Configuration.."
Tutoriels Eclipse Technology
- Installer Tycho pour Eclipse
- Tutoriel Java OSGi pour débutant
- Créer un projet Java OSGi avec Maven et Tycho
- Installer WindowBuilder pour Eclipse
- Quelle plate-forme devez-vous choisir pour développer des applications de bureau Java?
- Programmation de l'application Java Desktop à l'aide de SWT
- Le Tutoriel de Eclipse JFace
- Installation de la plate-forme cible Eclipse RAP (RAP Target Platform)
- Installer RAP e4 Tooling pour Eclipse
- Créer Eclipse RAP Widget à partir de ClientScripting widget
- Le Tutoriel Eclipse RCP 4 pour débutant - Application e4 Workbench
- Installer RAP Tools pour Eclipse
- Le Tutoriel Eclipse RAP pour débutant - Application e4 Workbench
Show More