Précédent   Forum du club des développeurs et IT Pro > Java > Serveurs, conteneurs, et Java EE > Modularisation (OSGi, SCA...)
Modularisation (OSGi, SCA...) Forum d'entraide sur les architectures modulaires à base de composants et services (OSGi, SCA...). Avant de poster -> Les cours OSGi
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 31/05/2012, 11h03   #1
Orni-Dev
Membre du Club
 
Inscription : 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.
Orni-Dev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/06/2012, 14h47   #2
sekaijin
Expert Confirmé Sénior
 
Avatar de sekaijin
 
Homme
Urbaniste
Inscription : juillet 2004
Messages : 2 117
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 49
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Urbaniste
Secteur : Santé

Informations forums :
Inscription : juillet 2004
Messages : 2 117
Points : 5 038
Points : 5 038
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
sekaijin est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 07h04.


 
 
 
 
Partenaires

Hébergement Web