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

Services Web Java Discussion :

Soap Header dans EJB (SoapMessageContext)


Sujet :

Services Web Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 117
    Par défaut Soap Header dans EJB (SoapMessageContext)
    Bonjour à tous,

    Je cherche à accéder au soap header dans un EJB.

    J'ai déclaré :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    @Resource(name = "wsContext")
    WebServiceContext wsCtxt;
    Dans ma méthode, j'aimerai faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SoapMessageContext msgCtxt = (SoapMessageContext) wsCtxt.getMessageContext();
    Pour pouvoir appeler
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    msgCtxt.getMessage().getSoapHeader()
    etc.

    Mais l'objet que je récupère n'est pas du type SoapMessageContext, il est du type MessageContext. Comment faire pour récupérer le bon type ?

    Merci beaucoup.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    MessageContext n'est pas un type concret, c'est une interface.
    Quel est le type concret du message que vous obtenez en faisant wsCtxt.getMessageContext() ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 117
    Par défaut Rep
    Bonjour,

    Merci pour ta réponse. Comment savoir quel type c'est ?

    Cordialement,

  4. #4
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2011
    Messages : 251
    Par défaut
    En mettant un point d'arrêt dans ton IDE (Eclipse, Intellij, NetBeans) en mode Debug et en regardant les propriétés de la variable si tu peux

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MessageContext msgContext = wsCtxt.getMessageContext();

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 117
    Par défaut Re
    Merci pour cette réponse.

    Le type du MessageContext est com.sun.xml.ws.server.EndpointMessageContextImpl

    Une indication peut être : j'utilise SoapUI comme client.

    Cordialement,

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Ce n'est pas la solution, mais une piste de recherche:

    Cette implémentation embarque une map.
    Avec le debugger, il faudrait regarder en détail ce que contient cette Map.
    Vous y trouverez peut-être les informations du header dont vous avez besoin ...

  7. #7
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2011
    Messages : 251
    Par défaut
    Selon la javadoc, il y a une propriété HTTP_RESPONSE_HEADERS de déclarée dans l'interface MessageContext, donc tu devrais pouvoir faire un truc du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    com.sun.xml.ws.server.EndpointMessageContextImpl msgContext =  (com.sun.xml.ws.server.EndpointMessageContextImpl) wsCtxt.getMessageContext();
    Object headers = msgContext.get(MessageContext.HTTP_RESPONSE_HEADERS)

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 117
    Par défaut solution
    Merci pour cette réponse.

    Finalement, j'ai créé un Handler qui implémente SOAPHandler<SOAPMessageContext>.

    De cette manière, je peux manipuler le soap:header puis je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    context.put("option", userOption);
    context.setScope("option", MessageContext.Scope.APPLICATION);
    Cela me permet de récupérer dans mon web service la valeur de l'objet userOption :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    User userObject = (User) wsCtxt.getMessageContext().get("option");
    Merci à tous pour votre aide et bonne soirée !!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment utiliser un SOAP Header dans VB.Net ?
    Par jjcasalo dans le forum VB.NET
    Réponses: 1
    Dernier message: 07/11/2011, 21h04
  2. Ajouter un Header dans un message SOAP
    Par rori dans le forum Services Web
    Réponses: 0
    Dernier message: 15/01/2010, 09h43
  3. Soap Header dans la réponse
    Par fragmonster dans le forum Services Web
    Réponses: 1
    Dernier message: 15/11/2007, 22h49
  4. [ECLIPSE3.1][WDSL2java] Soap header
    Par cosmos38240 dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 11/02/2005, 14h53
  5. Gestion des headers dans un Makefile
    Par Weren dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 09/11/2004, 10h44

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