+ Répondre à la discussion
Affichage des résultats 1 à 8 sur 8
  1. #1
    Membre actif
    Inscrit en
    juillet 2006
    Messages
    718
    Détails du profil
    Informations forums :
    Inscription : juillet 2006
    Messages : 718
    Points : 151
    Points
    151

    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 ...

  2. #2
    Membre Expert
    Inscrit en
    mars 2006
    Messages
    841
    Détails du profil
    Informations personnelles :
    Âge : 30

    Informations forums :
    Inscription : mars 2006
    Messages : 841
    Points : 1 041
    Points
    1 041

    Par défaut

    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.

  3. #3
    Membre actif
    Inscrit en
    juillet 2006
    Messages
    718
    Détails du profil
    Informations forums :
    Inscription : juillet 2006
    Messages : 718
    Points : 151
    Points
    151

    Par défaut

    Salut Deaf et merci pour ta réponse

    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 ?

  4. #4
    Membre Expert
    Inscrit en
    mars 2006
    Messages
    841
    Détails du profil
    Informations personnelles :
    Âge : 30

    Informations forums :
    Inscription : mars 2006
    Messages : 841
    Points : 1 041
    Points
    1 041

    Par défaut

    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.

  5. #5
    Membre actif
    Inscrit en
    juillet 2006
    Messages
    718
    Détails du profil
    Informations forums :
    Inscription : juillet 2006
    Messages : 718
    Points : 151
    Points
    151

    Par défaut

    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 !

  6. #6
    Membre Expert
    Inscrit en
    mars 2006
    Messages
    841
    Détails du profil
    Informations personnelles :
    Âge : 30

    Informations forums :
    Inscription : mars 2006
    Messages : 841
    Points : 1 041
    Points
    1 041

    Par défaut

    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).

  7. #7
    Invité régulier
    Inscrit en
    septembre 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : septembre 2009
    Messages : 4
    Points : 5
    Points
    5

    Par défaut

    Pour javax.crypto, rajoute le a 'org.osgi.framework.bootdelegation' (que tu passe lors de la configuration du framework).

  8. #8
    Membre confirmé
    Homme Profil pro
    Expert MDE
    Inscrit en
    janvier 2008
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Expert MDE
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : janvier 2008
    Messages : 153
    Points : 235
    Points
    235

    Par défaut

    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).

    +

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
  •