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 / Apache Felix] Context path


Sujet :

OGSi Java

  1. #1
    Membre éprouvé
    [OSGi / Apache Felix] Context path
    Bonjour

    J'ai une application développée en utilisant le framework Felix de la fondation Apache.
    J'ai déclaré un service qui sert de web service sous forme d'API REST
    Ce web service fonctionne bien sauf que les ressources sont accessibles via le context path par défaut de Félix c'est à dire services
    Donc pour accéder aux ressources les URLS sont du type:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
     
    http://IP<img src="images/smilies/icon_razz.gif" border="0" alt="" title=":P" class="inlineimg" />ORT/services/path/to/ressource


    Je voudrais changer le context path et accéder à mes ressources sans le path par défaut de Felix (services)
    Pour cela j'ai suivi la doc de Félix et j'ai modifié la méthode start de la classe implémentant l'interface BundleActivator

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ...
    Dictionary<String, Object> properties = new Hashtable<String, Object>();
    properties.put("alias", "/myAlias");
    bundleContext.registerService(MyWebService.class, new MyWebService(), properties);


    J'ai mis dans le constructeur de la classe MyWebService des logs et je vois bien au démarrage du bundle ces traces
    Lorsque j’exécute une requête HTTP via curl j'obtiens une erreur HTTP 404
    Voici la requête

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
     
    curl -v -X GET http://IP<img src="images/smilies/icon_razz.gif" border="0" alt="" title=":P" class="inlineimg" />ORT/myAlias/path/to/resource


    J'ai pris des traces réseaux via tcpdump et je ne vois pas la requête arrivée dans la méthode GET de mon web service
    et je ne vois même pas la requête arrivée
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
     
    tcpdump -w capture_alias.pcap -vvv  host myP -i eth0 and tcp port http


    Est-ce que quelqu'un à déjà rencontré ce problème et comment le résoudre svp?
    Comment est-ce que je peux avoir plus de logs de la part de felix ?

    Merci et bonne journée

  2. #2
    Expert éminent
    de mémoire félix utilise Jetty pour publier sur http

    c'est dans la doc de jetty qu'on trouve les infos pour le partage
    il me semble que ton bundle doit contenir un fichier jetty.xml ou kkchose de semblable.

    ou alors par programmation en fournissant un contexte
    http://felix.apache.org/documentatio...ice-properties

    A+JYT

  3. #3
    Membre éprouvé
    tout d'abord merci pour ta réponse
    J'ai oublié une précision: mon appli n'est pas déployée dans un war
    A priori il faudrait utiliser la properties org.apache.felix.http.context_path
    Je vais tester et je publierai la réponse

    J'avais trouvé un autre lien :
    https://github.com/hstaudacher/osgi-...ector/wiki/FAQ
    mais mon implémentation ne fonctionne pas

###raw>template_hook.ano_emploi###