Write the WSDL extensions
The following WSDL illustrates a simple operation that has one attachment called attch:
<binding name="MyBinding" type="tns:abc" >
<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="MyOperation">
<soap:operation soapAction=""/>
<input>
<mime:multipartRelated>
<mime:part>
<soap:body use="encoded" namespace="http://mynamespace"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding"/>
</mime:part>
<mime:part>
<mime:content part="attch" type="text/html"/>
</mime:part>
</mime:multipartRelated>
</input>
</operation>
</binding>
Notes:
- There must be a part (in this example attch) on the
input message for the operation (in this example MyOperation). There
can be other input parts to MyOperation that are not attachments.
- In the binding input there must either be a <soap:body tag
or a <mime:multipartRelated tag, but not both.
- For MIME messages, the soap:body is inside a mime:part.
There must only be one mime:part that contains a soap:body in
the binding input and that must not contain a mime:content as well,
because a content type of text/xml is assumed for the soap:body.
- There can be multiple attachments in a MIME message, each described by
a mime:part.
- Each mime:part (that is not a soap:body) contains a
mime:content that describes the attachment itself. The type attribute
inside the mime:content is not checked or used by WSIF. It is there
to suggest to the application using WSIF what the attachment contains. Multiple mime:contents inside
a single mime:part means that the backend service expecta a single
attachment with a type specified by one of the mime:contents inside
that mime:part.
- The parts="..." attribute (optional) inside the soap:body is
assumed to contain the names of all the MIME parts as well as the names of
all the SOAP parts in the message.