IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OGSi Java Discussion :

[OSGI] Déclaration des services


Sujet :

OGSi Java

  1. #1
    Membre actif

    Inscrit en
    Mai 2002
    Messages
    328
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mai 2002
    Messages : 328
    Points : 209
    Points
    209
    Par défaut [OSGI] Déclaration des services
    Bonjour,

    Existe-t-il un moyen standard dans OSGi pour déclarer les services offerts par un bundle ?

    IMyService = MyServiceImpl
    etc...

    Merci !

    Anthony

  2. #2
    Expert éminent
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Points : 7 679
    Points
    7 679
    Par défaut
    Salut,
    Il existe à priori 2 façons officielles de le faire, et une autre devrait les rejoindre bientôt (introduite par Spring DM) :

    1. Par programmation :

    Dans ton activator :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public class Activator implements BundleActivator {
    	private ServiceRegistration reg;
     
    	public void start(BundleContext context) throws Exception {
    		reg=context.registerService(IServiceInterface.class, new ServiceImple(), null);
    	}
     
    	public void stop(BundleContext context) throws Exception {
    		if(reg!=null){
    			reg.unregister();
    		}
    	}
    }
    http://www.eclipsezone.com/eclipse/forums/t90688.html
    http://www.eclipsezone.com/eclipse/forums/t90796.html
    http://www.eclipsezone.com/eclipse/forums/t91059.html

    2. Declarative Services :
    http://www.eclipsezone.com/eclipse/forums/t96740.html
    http://www.eclipsezone.com/eclipse/forums/t97690.rhtml

    3. Spring DM
    Comparable à DS, mais en beaucoup plus puissant, car reposant sur les concepts de Spring (IoC par exemple).
    http://springosgi.googlepages.com/

  3. #3
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    Bonjour,

    je reveille cette vielle discussion car je cherche à définir un service dynamiquement.

    j'ai un bundle qui reçois des demandes. à chaque demande il consulte une base de donnée qui contient des définition de ressources
    pour chaque type de ressource il crée un objet qui implémente un service d'accès à cette resource.

    mon problème est de déclarer ce service dans osgi.
    je me demande comment faire.

    A+JYT

  4. #4
    Membre éprouvé
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Points : 1 078
    Points
    1 078
    Par défaut
    Bonjour,

    je vais tenter de résumer:
    • un bundle B créée et publie un service S,
    • un appel à une méthode du service S doit provoquer la création et la publication d'un service T.
    • un autre appel au service S peut entraîner la création/publication d'un autre service U.
    • etc.
    • les service T et U (et les suivants) ne peuvent pas être définis avant l'exécution (=services dynamiques).


    Si j'ai bien compris ton problème, une solution peut consister à:
    1. faire en sorte que S ait accès à son BundleContext*
    2. enregistrer 'manuellement' les services créés via la méthode BundleContext.registerService


    *Il existe plusieurs moyens pour y parvenir:
    1. Si S est déclaré via Declarative Services, tu peux récupérer le Bundlecontext dans la méthode d'activation
    2. Si tu utilises SpringDM/GeminiBlueprint, il existe une interface BundleContextAware (de mémoire) que devra implémenter S
    3. Si tu publie S "à la main" la classe qui le publie possède le BundleContext et pourra le fournir à S via un setter ou le constructeur par exemple

  5. #5
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    merci pour toute ces infos
    ça va me permettre de commencer à explorer une(des) solution(s)

    A+JYT

Discussions similaires

  1. [OSGI] Séléction des implémentations de service
    Par psykoboy dans le forum OGSi
    Réponses: 0
    Dernier message: 30/04/2015, 10h33
  2. Réponses: 5
    Dernier message: 10/11/2004, 20h44
  3. Optimisation -> choix des services à activer
    Par infotron dans le forum Mandriva / Mageia
    Réponses: 20
    Dernier message: 25/05/2004, 13h57
  4. Obtenir le nom des services qui tournent ...
    Par vbcasimir dans le forum Administration système
    Réponses: 4
    Dernier message: 21/01/2004, 18h32
  5. Quel est l'intérêt des Services Web ??
    Par silvermoon dans le forum Débats sur le développement - Le Best Of
    Réponses: 19
    Dernier message: 12/02/2003, 23h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo