J'en suis au stade où j'ai créé une sortie de l'intercepteur et je reçois un OuputStream de le message SOAP. Mais comment pourrais-je modifier l'enveloppe SOAP droit avant de l'envoyer à l'extrémité? Je voudrais supprimer certains éléments xml.
OriginalL'auteur kiwifrog | 2011-08-02
l'une des solutions pourrait être d'obtenir le document et de le lancer à travers transformation XSLT.
Vous pouvez obtenir le document dans le handleMessage de votre intercepteur en appelant
attention tout de même que si vous avez de la sécurité tels que XML signature qui doit être effectuée sur la teneur en savon vous devez vous assurer que votre intercepteur se produit AVANT la signature sont appliquées sinon vous aurez à les invalider.
De jouer avec le calendrier de l'intercepteur vous pouvez spécifier la phase au cours de laquelle il sera exécuté. CXF devrait également honneur à l'ordre dans lequel vous les configurer devraient-ils être effectués à la même phase.
mais ne prenez pas mon mot pour lui... vérifier ces pour plus d'info
de débogage à travers le CXF code source aussi m'a beaucoup aidé dans la compréhension de la façon dont il a travaillé
---- EDIT ----
(merci Daniel 🙂
Pour que cela fonctionne, vous devez avoir SAAJOutInterceptor configuré dans votre pile. Vous pouvez l'ajouter manuellement ou tout simplement faire une partie de votre intercepteur. Voici un exemple d'un intercepteur qui assez bien fait ce que vous voulez.
Vous devez également configurer dans le SAAJOutInterceptor avec votre intercepteur qui ne le transformer.
en effet, Daniel est droit, vous devez vous assurer que le SAAJOutInterceptor est configuré comme c'est lui qui sérialise les données à un SOAPMessage objet. Il est venu par défaut avec ma configuration je n'ai donc pas trop de soucis à ce sujet. Une fois configuré, l'objet ne sera plus nulle et vous serez en mesure de jouer avec l'arbre du DOM comme vous s'il vous plaît.
sur une autre note, si vous cherchez à avoir plus de contrôle sur le XML qui va par le biais de la pile que je pourrais recommander Spring-WS au lieu de CXF. C'est le mouvement que j'ai eu à faire dans mon projet, CXF était difficile de se déplacer lorsque le cas d'utilisation commence à être tordu. Spring-WS de la pile est un peu plus ouvert, ce qui me donne l'effet de levier, j'ai besoin, sans trop de douleur. Cela dit, CXF fonctionne bien et je l'ai trouvé plus facile pour y aller il suffit de ne pas offrir suffisamment de souplesse.
OriginalL'auteur Newtopian
Consulter ce lien pour une description de l'Intercepteur Phases
http://fusesource.com/docs/esb/4.2/cxf_interceptors/CXFInterceptPhasesAppx.html
OriginalL'auteur user745079
J'ai posté une réponse ici https://stackoverflow.com/a/12948702/792313
Il est basé sur l'ensemble du corps de substitution.
OriginalL'auteur snowindy