This document is not an official product of any W3C working group, or of TIBCO Software, Inc. It is the culmination of a number of proposals and supporting materials submitted by TIBCO to the XMLP and Web Services Description working groups. Specifically, this document addresses the question of creating standard extensions to WSDL for the binding of abstract properties, as established by features and MEPs, to storage locations in internet email, using the binding information from the SOAP binding and the framework suggested in the WSDL property binding extension framework.
In its current form, the document is intended primarily for discussion, as a means of investigating the practicality of the proposed property binding extension framework for WSDL.
Informal Default Property Binding Schema
The email binding establishes optional or required support for a number of features and message exchange patterns. The namespaces of all the features and MEPs exposing properties which are bound in this document are listed below, together with the prefixes which will be used for each, throughout the document.
Prefix | Namespace |
---|---|
http://www.tibco.com/xmlns/soap/bindings/distEmail/ | |
addr | http://www.tibco.com/xmlns/soap/message-address/ |
corr | http://www.tibco.com/xmlns/soap/message-correlation/ |
faildest | http://www.tibco.com/xmlns/soap/failure-destination/ |
mimecont | http://www.tibco.com/xmlns/soap/mime-content/ |
mimecomp | http://www.tibco.com/xmlns/soap/mime-composite/ |
solicit | http://www.tibco.com/xmlns/soap/mep/solicit-response/ |
The features and MEPs listed above establish the abstract properties listed below. For each property, its QName is given, along with its type and its optionality. More information about particular properties may be found in the sections Fixed Property Bindings, Default Property Bindings, and Informal Schema. In particular, the suggested/default binding of various properties may be found in these sections. The schema is considered normative, as it is intended for reference within a WSDL. The text is thus illustrative.
Name | Type | Optionality |
---|---|---|
addr:original-source | xs:anyURI | required |
addr:final-destination | xs:anyURI | required |
addr:response-address | xs:anyURI | optional |
corr:message-id | xs:string | required |
corr:references | list of xs:string | optional * |
faildest:failure-destination | xs:anyURI | optional |
mimecont:version | xs:string | required |
mimecont:content-type | xs:string | required |
mimecont:transfer-encoding | xs:string | required |
mimecomp:content-id | xs:string | optional |
mimecomp:content-location | xs:anyURI | optional |
mimecomp:current-part | message part | required |
solicit:TermCondition | xs:enumeration | required * |
solicit:NumRespondents | xs:int | optional * |
solicit:Deadline | xs:dateTime | optional * |
* : more complex than the simple required/optional, really.
Fixed property bindings establish a storage location for the specified properties which is the only permissible location for that property to be stored to and retrieved from, for all service instances using the protocol binding. Appearance of an alternate binding in a service description is an error.
The following properties have fixed storage locations for the email binding extension. These bindings may be specified, but should not be.
Default property bindings establish a storage location for the specified properties which is to be used if and only if the service does not supply an alternative. In other words, this specification effectively establishes information that a conforming processor must insert into the WSDL, if it finds a missing required element that has a default definition.
This section is based on a suggestion by Christopher Ferris, that a protocol binding might establish a standard/default set of bindings for properties. This set of bindings could then be simply referenced by the WSDL. This version continues to assume that override (per-service) is possible. In fact, it arguably illustrates why one would want to do so: to prohibit something optional, to require something optional, or to simply change the storage location, because the ones suggested here seem inappropriate.
<wsdl:protocolBinding uri="http://www.tibco.com/xmlns/soap/bindings/distEmail/" xmlns:distEmail="http://www.tibco.com/xmlns/soap/bindings/distEmail/" xmlsn:addr="http://www.tibco.com/xmlns/soap/message-address"> <!-- the other namespaces aren't used internally, so we haven't bothered to define them --> <wsdl:featureBinding name="message-address" uri="http://www.tibco.com/xmlns/soap/message-address/" use="required"> <wsdl:simpleProperty name="original-source" locationType="wsdl:protocolHeader" use="required">From</wsdl:simpleProperty> <wsdl:simpleProperty name="final-destination" locationType="wsdl:protocolHeader" use="required">To</wsdl:simpleProperty> <wsdl:simpleProperty name="response-address" locationType="wsdl:protocolHeader" use="optional">Reply-To</wsdl:simpleProperty> </wsdl:featureBinding> <wsdl:featureBinding name="message-correlation" uri="http://www.tibco.com/xmlns/soap/message-correlation/" use="required"> <wsdl:complexProperty name="message-id" use="required"> <wsdl:algorithm name="distEmail:catHeaders">_</wsdl:algorithm> <wsdl:simpleProperty locationType="wsdl:protocolHeader">From</wsdl:simpleProperty> <wsdl:simpleProperty locationType="wsdl:protocolHeader">Subject</wsdl:simpleProperty> <wsdl:simpleProperty locationType="wsdl:protocolHeader">Date</wsdl:simpleProperty> </wsdl:complexProperty> <wsdl:simpleProperty name="references" locationType="wsdl:protocolHeader" use="optional">X-Soap-References</wsdl:simpleProperty> </wsdl:featureBinding> <wsdl:featureBinding name="failure-destination" uri="http://www.tibco.com/xmlns/soap/failure-destination/" use="optional"> <!-- an interesting consequence of feature definition: if the (optional) feature is used, then its sole property is required. --> <wsdl:propertyChoice name="failure-destination" use="required"> <wsdl:simpleProperty locationType="wsdl:propertyReference">addr:response-address</wsdl:simpleProperty> <wsdl:simpleProperty locationType="wsdl:propertyReference">addr:original-source</wsdl:simpleProperty> </wsdl:propertyChoice> <!-- a different, perfectly reasonable possibility --> <!-- wsdl:simpleProperty name="failure-destination" locationType="wsdl:protocolHeader" use="required">X-Errors-To</wsdl:simpleProperty --> </wsdl:featureBinding> <wsdl:featureBinding name="mime-content" uri="http://www.tibco.com/xmlns/soap/mime-content/" use="required""> <wsdl:simpleProperty name="version" locationType="wsdl:protocolHeader" use="fixed">Mime-Version</wsdl:simpleProperty> <wsdl:simpleProperty name="content-type" locationType="wsdl:protocolHeader" use="fixed">Content-Type</wsdl:simpleProperty> <wsdl:simpleProperty name="transfer-encoding" locationType="wsdl:protocolHeader" use="fixed">Content-Transfer-Encoding</wsdl:simpleProperty> </wsdl:featureBinding> <wsdl:featureBinding name="mime-composite" uri="http://www.tibco.com/xmlns/soap/mime-composite/" use="optional"> <wsdl:simpleProperty name="content-id" locationType="mime:partHeader" use="fixed">Content-Id</wsdl:simpleProperty> <wsdl:simpleProperty name="content-location" locationType="mime:partHeader" use="fixed">Content-Location</wsdl:simpleProperty> <wsdl:simpleProperty name="current-part" locationType="mime:part" use="fixed" /> </wsdl:featureBinding> <wsdl:mepBinding name="solicit-response" uri="http://www.tibco.com/xmlns/soap/mep/solicit-response/"> <wsdl:simpleProperty name="TermCondition" locationType="wsdl:protocolHeader" use="required">X-Termination-Condition</wsdl:simpleProperty> <wsdl:simpleProperty name="Synchronous" locationType="wsdl:none" use="prohibited" /> <wsdl:simpleProperty name="NumRespondents" locationType="wsdl:protocolHeader" use="optional">X-Max-Responses</wsdl:simpleProperty> <wsdl:simpleProperty name="Deadline" locationType="wsdl:protocolHeader" use="optional">X-Deadline</wsdl:simpleProperty> </wsdl:mepBinding> </wsdl:properties>
Based on the features, MEPs, and the alternative email binding proposal submitted to the XML Protocol working group as an illustration of the SOAP 1.2 extensibility mechanism and an implementation of pub/sub semantics in SOAP.