Vous pouvez utiliser une liaison JAX-WS (Java™ API
for XML Web Services) pour envoyer et recevoir
des messages SOAP avec des pièces jointes telles que des fichiers PDF ou
des images JPG. Vous pouvez également utiliser un composant de flux de médiation d'un
module SCA pour traiter la pièce jointe.
Vous pouvez envoyer et recevoir des pièces jointes
non référencées qui font partie d'un message MIME composite SOAP. Dans ce
type de message, le corps SOAP constitue la première partie et les pièces jointes figurent dans les parties suivantes. Aucune référence à la
pièce jointe n'est incluse dans le corps SOAP.
Figure 1. Message SOAP avec une pièce jointe non référencée
Vous pouvez envoyer un message SOAP avec une pièce jointe non référencée par une exportation de service Web vers une importation de
service Web. Le message de sortie envoyé au service Web cible contient la pièce jointe.
Figure 2. Pièce jointe transitant par un module SCA
Dans la Figure 2, le message SOAP comprenant une pièce jointe transite par le
module sans modification.
Vous pouvez également modifier le protocole SOAP à l'aide d'un composant de flux de médiation. Par exemple, vous pouvez utiliser le
composant de flux de médiation pour extraire des données du message SOAP (dans ce cas, des données binaires dans le corps du message) et
créer un message SOAP avec pièces jointes.
Les données sont traitées comme partie de l'élément attachments d'un objet de message de service
(SMO).
Figure 3. Message traité par un composant de flux de médiation
Inversement, le composant de flux de médiation peut transformer le message entrant en extrayant et en codant la pièce jointe, puis en
transmettant le message sans pièce jointe.
Pour plus d'informations sur la structure de l'objet SMO, voir "Rubriques connexes".
Plutôt que d'extraire les données d'un message SOAP entrant pour former un message SOAP avec pièces jointes, vous pouvez obtenir les
données de la pièce jointe à partir d'une source externe (par exemple, une base de données).
Figure 4. Pièce jointe obtenue d'une base de données et ajoutée au message SOAP
Inversement, le composant de flux de médiation peut extraire la pièce jointe d'un message SOAP entrant et traiter le message (par
exemple, stocker la pièce jointe dans une base de données).
La propagation des pièces jointes non référencées n'est possible qu'entre composants de
flux de médiation. Si un autre type de composant doit accéder à la pièce jointe ou servir de cible lors de la propagation de celle-ci,
utilisez un composant de flux de médiation pour déplacer la pièce jointe vers un emplacement accessible par le composant.
Important : Comme décrit dans la
"représentation XML de
l'objet SMO," la primitive de médiation de transformation XSL convertit
les messages à l'aide d'une transformation XSLT 1.0. La transformation agit sur
une sérialisation XML de l'objet SMO. La primitive de médiation de transformation XSL
permet de spécifier la racine de la sérialisation et l'élément racine
du document XML reflète cette racine.
Lorsque vous envoyez des messages SOAP comportant des pièces jointes, l'élément racine choisi
détermine le mode de propagation des pièces jointes.
- Si vous utilisez "/body" comme racine de la mappe XML, toutes les pièces jointes
sont propagées dans la mappe par défaut.
- Si vous utilisez "/" comme racine de la mappe, vous pouvez
contrôler la propagation des pièces jointes.