Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 5 sur 5
  1. #1
    Membre actif

    Inscrit en
    mai 2002
    Messages
    326
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations forums :
    Inscription : mai 2002
    Messages : 326
    Points : 161
    Points
    161

    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 Confirmé Sénior
    Avatar de djo.mos
    Inscrit en
    octobre 2004
    Messages
    4 674
    Détails du profil
    Informations forums :
    Inscription : octobre 2004
    Messages : 4 674
    Points : 7 009
    Points
    7 009

    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 :
    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 Confirmé Sénior
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    juillet 2004
    Messages
    2 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : juillet 2004
    Messages : 2 919
    Points : 5 964
    Points
    5 964

    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 émérite
    Inscrit en
    mars 2006
    Messages
    840
    Détails du profil
    Informations personnelles :
    Âge : 30

    Informations forums :
    Inscription : mars 2006
    Messages : 840
    Points : 954
    Points
    954

    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 Confirmé Sénior
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    juillet 2004
    Messages
    2 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : juillet 2004
    Messages : 2 919
    Points : 5 964
    Points
    5 964

    Par défaut

    merci pour toute ces infos
    ça va me permettre de commencer à explorer une(des) solution(s)

    A+JYT

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •