|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() Inscription : mars 2008 Messages : 70 ![]() |
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. |
|
|
00
|
|
|
#2 |
|
Expert Confirmé Sénior
![]() ![]() Urbaniste Inscription : juillet 2004 Messages : 2 117 ![]() |
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 |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com