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 05/09/2011, 11h43   #1
identifiant_bidon
Membre habitué
 
Inscription : juillet 2006
Messages : 690
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 690
Points : 132
Points : 132
Par défaut [OSGI] Tests unitaires et Apache Felix

Bonjour à tous,

Voici mon problème :

Je dispose d'un bundle Web_service et d'un bundle Core. Dans mon bundle Core, je fais des appels à des webméthodes consommées par le bundle Web_service.

En vue d'effectuer des tests unitaires dans mon bundle Core, j'ai suivi ce qui est dit ici :

http://www.talios.com/osgi_based_int...ache_felix.htm.

Mon souci est que j'ai l'erreur suivante :
Code :
Unresolved constraint in bundle 2: package; (package=javax.jws)
Quelqu'un sait-il comment résoudre ce problème?

Merci

PS: j'avais eu avant ceci, la même erreur avec le bundle log4j et j'avais résolu ce problème en ajoutant ceci :

Code :
1
2
3
      bundleContext
        .installBundle("file:///C:/01 - ECLIPSE/ECLIPSE36/plugins/org.apache.log4j_1.2.15.v201005080500.jar")
        .start();
Là, je ne sais pas trop quoi faire ...
__________________
https://www.weetool.com
identifiant_bidon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/09/2011, 14h10   #2
Deaf
Membre émérite
 
Inscription : mars 2006
Messages : 799
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : mars 2006
Messages : 799
Points : 865
Points : 865
Bonjour,

si tu exécutes tes tests en java 1.6 (ou plus), le package est présent dans la JRE. Par contre, comme c'est pas un package standard (pas java.*), il faut spécifier au framework OSGi de l'exporter via la propriété système "org.osgi.framework.bootdelegation".

Un autre solution qui marche dans tous les cas, est d'ajouter un bundle contenant et exportant ce package. En peu de temps, sur findjar, j'en ai trouvé deux qui semblent compatibles OSGi:
- geronimo-ws-metadata (org.apache.geronimo.specs:geronimo-ws-metadata_2.0_spec)
- javaee-api (org.apache.openejb:javaee-api)

Le second contient beaucoup d'autres package, à toi de voir si tu en auras besoin.
Deaf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/09/2011, 14h58   #3
identifiant_bidon
Membre habitué
 
Inscription : juillet 2006
Messages : 690
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 690
Points : 132
Points : 132
Salut Deaf et merci pour ta réponse

Citation:
si tu exécutes tes tests en java 1.6 (ou plus), le package est présent dans la JRE.
Tu parles de rt.jar ?
__________________
https://www.weetool.com
identifiant_bidon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/09/2011, 15h30   #4
Deaf
Membre émérite
 
Inscription : mars 2006
Messages : 799
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : mars 2006
Messages : 799
Points : 865
Points : 865
La JRE, c'est un peu plus qu'un jar, mais celui-ci en fait partie et c'est bien lui qui doit contenir ce package.

Cependant, tu n'as pas à manipuler ce jar directement, c'est ton framework OSGi (felix, equinox, knopflerfish) qui le charge.
Deaf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2011, 11h30   #5
identifiant_bidon
Membre habitué
 
Inscription : juillet 2006
Messages : 690
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 690
Points : 132
Points : 132
Alors j'ai un peu avancé, il se trouve qu'à chaque fois que je rajoute dans le code :

Code :
1
2
3
	bundleContext
	.installBundle("file:///C:/01 - ECLIPSE/ECLIPSE36/plugins/javax.xml.bind_2.0.0.v20080604-1500.jar")
	.start();
J'ai toujours un message me demandant d'en rajouter un autre.
(actuellement, Unresolved constraint in bundle 5: package; (package=javax.crypto))

Deaf : Quand tu trouves un jar sur le site findjar, comment sais-tu qu'il est compatible OSGI. Autrement dit, comment sais-tu qu'il s'agit bien d'un bundle ?

Ce serait bien sympa si j'en trouvais un qui contient tout !
__________________
https://www.weetool.com
identifiant_bidon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2011, 12h08   #6
Deaf
Membre émérite
 
Inscription : mars 2006
Messages : 799
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : mars 2006
Messages : 799
Points : 865
Points : 865
Le seul moyen que je vois, c'est de le télécharger et de jeter un oeil au manifest. S'il y a les en-têtes classiques OSGi (et en particulier Export-Packages), c'est bon.

javax.crypto, c'est encore un package de la JRE, donc tu peux t'en sortir en augmentant le boot class path.

J'attire l'attention que ce n'est pas une pratique à généraliser, car elle casse le principe de modularité.
Je ne m'autorise à le faire que pour les classes de la JRE (genre javax.swing).
Deaf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/10/2011, 12h20   #7
clement.escoffier
Invité de passage
 
Inscription : septembre 2009
Messages : 4
Détails du profil
Informations forums :
Inscription : septembre 2009
Messages : 4
Points : 4
Points : 4
Pour javax.crypto, rajoute le a 'org.osgi.framework.bootdelegation' (que tu passe lors de la configuration du framework).
clement.escoffier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2011, 17h12   #8
Tcharl
Membre habitué
 
charlie mordant
Inscription : janvier 2008
Messages : 105
Détails du profil
Informations personnelles :
Nom : charlie mordant
Âge : 29
Localisation : France, Indre et Loire (Centre)

Informations forums :
Inscription : janvier 2008
Messages : 105
Points : 108
Points : 108
Envoyer un message via MSN à Tcharl
Hello,

Ce que tu fais, c'est plutôt du test d'intégration...

Sur le site de spring EBR (enterprise bundle repository), tu as une floppée de bundles maven tous osgifiés.
Fais toi un pom maven contenant tes dépendances, lance install dessus, il les téléchargera dans ton dépôt local. Tu n'auras plus qu'à les utiliser comme bibliothèques simple.

Tu peux aussi maveniser ton projet, avec des outils comme PAX de ops4j, mais prépares toi à y passer un peu de temps.
Le jeu en vaut la chandelle par contre.
J'ai un exemple ici: http://hudson.osgiliath.net/job/orthank-sample%20Tag/ , mais il faut que je reonfigure hudson afin que tu puisses voir le workspace (courant semaine prochaine).

+
Tcharl 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 18h03.


 
 
 
 
Partenaires

Hébergement Web