p
u
b
l
i
c
i
t
é
publicité
  1. #1
    Invité de passage
    Inscrit en
    janvier 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : janvier 2010
    Messages : 5
    Points : 2
    Points
    2

    Par défaut Intercepteurs CXF - récupération objet unmarshallé

    Bonjour à tous

    je suis confronté à un soucis, que je n'arrive pas à résoudre :
    Dans le cadre d'une application WS SOAP, je tente de mettre en place un système de log des données entrantes, en utilisant les intercepteurs CXF d'apache.
    En clair, je souhaite me positionner après la phase d'unmarshalling, récupérer mon objet java, et ainsi pouvoir logger son contenu.

    Mon problème est le suivant :

    Via le code suivant, je me suis positionné en phase POST_LOGICAL, donc d'après ce que j'ai compris, après l'opération d'unmarshalling

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public TestInterceptor() {
    		super(Phase.POST_LOGICAL );
    	}
    Ensuite, dans la méthode handle que j'override, je souhaite récupérer mon objet, via, d'après ce que j'ai cru voir, le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public void handleMessage(SoapMessage arg0) throws Fault {
    MonObjet monObjet = arg0.getContent(MonObjet.class);
    }
    Or... null.

    En passant en debug, j'ai vu qu'effectivement, l'attribut contents de arg0 est null. Par contre, un attribut nommé defaultContents contient bien mon objet comme je le souhaite, mais je ne trouve pas comment le getter...

    Help, si quelqu'un a une solution, ça serait un bonheur

    Merci d'avance.

  2. #2
    Invité de passage
    Inscrit en
    janvier 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : janvier 2010
    Messages : 5
    Points : 2
    Points
    2

    Par défaut

    Bon, j'ai un peu avancé, je suis passé à la version 2.6.2 de CXF, ce qui me permet d'avoir le contents renseigné avec mon objet.

    Mais je n'arrive toujours pas à le récupérer ...

    Personne n'a jamais été confronté à ce soucis ?

  3. #3
    Invité de passage
    Inscrit en
    janvier 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : janvier 2010
    Messages : 5
    Points : 2
    Points
    2

    Par défaut

    Bon ben je me répond à moi même :

    Pour récupérer les objets unmarshallés, il faut faire un getContent sur la classe java.util.List. La liste obtenue contient l'objet tant désiré

    ci dessous le code (en phase POST_LOGICAL toujours) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public void handleMessage(SoapMessage arg0) throws Fault {
     
    		List list = arg0.getContent(List.class);
    		MonObjet monObjet = (MonObjet ) list.get(0);
     
    	}
    Si ça peut servir, voici le petit texte que j'ai trouvé qui m'a aidé :

    You can examine which formats are available using message. getContentFormats() and obtain
    message content using: message.getContent(Class<?>).
    If JAXB data binding is used, message normally contains following formats after UNMARSHAL
    phase for incoming chain:
    1) javax.xml.stream.XMLStreamReader (message content as XML reader)
    2) java.util.List (message content as JAXB objects)
    3) java.io.InputStream (message content as InputStream)
    4) org.w3c.dom.Node (message content as DOM)

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

Discussions similaires

  1. Récupération objet dans gridview
    Par Nanais19 dans le forum C#
    Réponses: 2
    Dernier message: 26/04/2013, 16h29
  2. Réponses: 1
    Dernier message: 08/02/2012, 09h56
  3. Réponses: 1
    Dernier message: 24/04/2009, 08h41
  4. Réponses: 2
    Dernier message: 03/09/2008, 14h59
  5. Web Service : récupération objet request
    Par silver95 dans le forum Web Services
    Réponses: 1
    Dernier message: 26/08/2007, 19h29

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