IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OGSi Java Discussion :

[OSGI] Tests unitaires et Apache Felix


Sujet :

OGSi Java

  1. #1
    Membre habitué
    Inscrit en
    Juillet 2006
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 747
    Points : 185
    Points
    185
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 éprouvé
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Points : 1 078
    Points
    1 078
    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 habitué
    Inscrit en
    Juillet 2006
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 747
    Points : 185
    Points
    185
    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 éprouvé
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Points : 1 078
    Points
    1 078
    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 habitué
    Inscrit en
    Juillet 2006
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 747
    Points : 185
    Points
    185
    Par défaut
    Alors j'ai un peu avancé, il se trouve qu'à chaque fois que je rajoute dans le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 éprouvé
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Points : 1 078
    Points
    1 078
    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
    Futur Membre du Club
    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 averti
    Homme Profil pro
    Expert MDE
    Inscrit en
    Janvier 2008
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    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 : 183
    Points : 337
    Points
    337
    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).

    +

Discussions similaires

  1. [OSGi / Apache Felix] Context path
    Par noOneIsInnocent dans le forum OGSi
    Réponses: 2
    Dernier message: 10/05/2015, 16h05
  2. Developpemnt modulaire: OSGi avec Apache Felix
    Par haloa dans le forum OGSi
    Réponses: 2
    Dernier message: 01/03/2014, 01h51
  3. [OSGi] Chargement en deux phases (Apache Felix)
    Par Baptiste Wicht dans le forum OGSi
    Réponses: 2
    Dernier message: 16/06/2010, 19h48
  4. Eclipse, Maven et OSGI (Apache Felix)
    Par martinro dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 07/05/2010, 23h32
  5. Réponses: 0
    Dernier message: 26/04/2009, 18h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo