Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 2 sur 2
  1. #1
    Membre du Club
    Inscrit en
    mars 2008
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : mars 2008
    Messages : 70
    Points : 50
    Points
    50

    Par défaut OSGi et découpage de bundle

    Bonjour,

    Voici la problématique que je rencontre.

    J'ai aujourd'hui un bundle [MyBundle] qui fonctionne.

    Ce bundle dépend de Spring, Camel et d'un autre bundle [Reference] que j'ai créé (quand je parle de dépendances ce sont les imports de package de ces librairies).

    J'ai quelques classes dans ce jar qui ne se servent ni de Spring, ni de Camel, ni d'OSGi et je suis en train de les extraire car quelqu'un d'autre doit s'en servir mais ne veut pas de ces dépendances.

    J'ai essayé la méthode "naïve" j'extrais mes classes, j'en fais un bundle [myBundleLib] qui dépend de [MyReference] et je fais un autre Bundle [MyBundleDeploy] qui me fait l'instanciation avec Spring et Camel et qui dépend de [MyBundleLib].

    Dans ce cas je me retrouve avec un [MyBundleDeploy] qui fait un ClassNotFoundException car il ne trouve pas une dépendance vers une classe Cref dans [Référence] (la classe qui a besoin de Cref est dans [myBundleLib]). Du coup, il faudrait que je rajoute toutes les dépendances de [myBundleLib] dans [MyBundleDeploy].

    J'ai essayé de passer par des fragments mais la gestion de dépendance est aussi chaotique.

    J'ai pensé aussi à instancier la classe qui pose problème dans myBundleLib directement dans ce bundle et de l'exposer via un service OSGI mais dans ce cas, je vais rajouter la dépendance vers Spring et/ou des libs OSGi.

    Comment doit-on gérer ce genre de problématique pour avoir quelque chose de simple et maintenable ?

    Merci d'avance pour votre aide.

  2. #2
    Expert Confirmé Sénior
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    juillet 2004
    Messages
    2 712
    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 712
    Points : 6 278
    Points
    6 278

    Par défaut

    salut
    c'est probablement un pb de classLoader.

    dans osgi le classloader d'un bundle ne vois que les classes de ce bundle.
    pour qu'il accède aux classes d'un autre il faut que les packages soit importés dans le manifest. mais il faut aussi que l'autre bundle exporte les pakages en question. OSIGI à l'installation du bundle va alors rechercher tous les autres bundles qui exportent les packages qui doivent être importés. s'il les trouve il référence un bundle qui exporte le package recherché.

    au démarage le classLoader dun bundle reçois une référence des packages exporté par les dépendances.

    je pense qu'il te faut donc vérifier les manifests de tes bundles.

    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
  •