i026 Metadata Proposal (amended)

The following (and enclosed) proposal addresses the concerns Microsoft
had with the original Metadata proposal [1] put forward by IONA, IBM,
SAP, Sun and Oracle.  This proposal is put forward as a friendly
amendment and has been deemed acceptable to each of the original
co-proposers, with the caveat that a few specific issues remain as
outlined below.  Microsoft joins the other authors in asking that these
remaining issues be discussed and resolved by the WG and the resulting
proposal be adopted.

Issues that remain to be resolved:

1) The proposal as written does not resolve the (new?) issue of how to
divide functionality between the Core and WSDL specs.  Many of the
co-authors prefer that all WSDL-related functionality be gathered into
the WSDL spec.  I for one prefer splitting the functionality along the
lines of extensions to WSDL (the WSDL Binding spec) and extensions to
WSA (extensibility is part of the Core spec).  Questions of what levels
one might conform to need to be explored.  The current set of specs is
not completely consistent to either of these viewpoints.

2) The desirability and practicality of enforcing the consistency of
[selected interface] and [service endpoint] with any embedded WSDL could
use some more exploration.

 Jonathan Marsh, Microsoft
in collaboration with
 Paco Curbera (IBM)
 Greg Truty IBM)
 Rebecca Bergersen (IONA)
 Steve Vinoski (IONA)
 Anish Karmarkar (Oracle)
 Umit Yalcinalp (SAP)
 Marc Hadley (Sun)

[1]
http://lists.w3.org/Archives/Public/public-ws-addressing/2005Feb/0016.ht
ml

------------------------------------------------------
The list of changes provided below are provided in the enclosed
red-lined .doc as well for your convenience.

2.1: Replace the [policies] property with:

[metadata] : xsd:any (0..1)
  A reference may contain metadata that describes the behavior,
  policies, requirements and capabilities of the endpoint. Metadata 
  may be included in a reference to facilitate easier processing by 
  a consuming application, or because the metadata was dynamically
  generated. However, such metadata is not authoritative and may be
  stale or incoherent with the metadata associated with the endpoint at
  the time when the interaction occurs.

Update example 2-1 as follows:

<wsa:EndpointReference>
    <wsa:Address>xs:anyURI</wsa:Address>
    <wsa:ReferenceParameters>... </wsa:ReferenceParameters> ?
    <wsa:Metadata>
      <wsa:InterfaceName>xs:QName</wsa:InterfaceName> ?
      <wsa:ServiceName EndpointName="xs:NCName"?
            >xs:QName</wsa:ServiceName> ?
      <xs:any/>*  
    </wsa:Metadata>?
  <xs:any/>*
</wsa:EndpointReference>


Update the list of elements in Section 2.2 as follows:

/wsa:EndpointReference
  This represents some element of type wsa:EndpointReferenceType. 
  This example uses the predefined <wsa:EndpointReference> element,
  but any element of type wsa:EndpointReferenceType may be used.

/wsa:EndpointReference/wsa:Address
  This REQUIRED element (of type xs:anyURI) specifies the [address]
  property of the endpoint reference. This address may be a logical
  address for the service endpoint.

/wsa:EndpointReference/wsa:ReferenceParameters/
  This OPTIONAL element contains the elements that convey the 
  [reference parameters] of the reference.

/wsa:EndpointReference/wsa:ReferenceParameters/{any}
  Each child element of ReferenceParameters represents an individual 
  [reference parameter].

/wsa:EndpointReference/wsa:Metadata/wsa:InterfaceName
  This OPTIONAL element (of type xs:Qname) specifies the value of 
  the [selected interface] property of the endpoint reference, see 
  Web Services Addressing 1.0 - WSDL Binding[WS-Addressing-WSDL] 
  for more details..

/wsa:EndpointReference/wsa:Metadata
  This OPTIONAL element contains metadata that is relevant to the
  interaction with the endpoint.

/wsa:EndpointReference/wsa:Metadata/wsa:ServiceName
  This OPTIONAL element (of type xs:QName) specifies the value of the
  [service endpoint] property, see Web Services Addressing 1.0 - WSDL
  Binding[WS-Addressing-WSDL] for more details..

/wsa:EndpointReference/wsa:Metadata/wsa:ServiceName/@EndpointName
  This OPTIONAL attribute (of type xs:NCName) specifies the name of a
  particular endpoint, see Web Services Addressing 1.0 - WSDL
  Binding[WS-Addressing-WSDL] for more details.

/wsa:EndpointReference/wsa:Metadata/@{any}
  This is an extensibility mechanism to allow additional attributes 
  to be specified. Some examples in this specification show use of this
  extensibility point to include a wsdlLocation[WSDL 2.0] attribute to
  provide a hint for the location of a WSDL description of the [selected
  interface] and [service endpoint] properties.

/wsa:EndpointReference/wsa:Metadata/{any}
  Each child element of Metadata represents a piece of metadata relevant
  to the endpoint.

/wsa:EndpointReference/{any}
  This is an extensibility mechanism to allow additional elements to be 
  specified.

/wsa:EndpointReference/@{any}
  This is an extensibility mechanism to allow additional attributes to 
  be specified. 

The following shows an example endpoint reference. As indicated in it's
[metadata], this element references the [selected interface] 
"fabrikam:Inventory" at the endpoint URI
"http://example.com/www.fabrikam/acct". Note the use of the WSDL[WSDL
2.0] wsdlLocation attribute.

Example 2-2. Example endpoint reference.

<wsa:EndpointReference
     xmlns:wsa="http://www.w3.org/@@@@/@@/addressing"
     xmlns:fabrikam="http://example.com/fabrikam"
     xmlns:wsdli="http://www.w3.org/2004/08/wsdl-instance"
     wsdli:wsdlLocation="http://example.com/fabrikam
       http://example.com/fabrikam/fabrikam.wsdl">
   <wsa:Address>http://example.com/fabrikam/acct</wsa:Address>
   <wsa:Metadata>
     <wsa:InterfaceName>fabrikam:Inventory</wsa:InterfaceName>
   </wsa:Metadata>
</wsa:EndpointReference>

Add Appendix A. Embedding WSDL metadata (non-normative)

WSDL 1.1 or 2.0 definitions can be embedded in the metadata section of
an EPR to provide a consuming application with WSDL information that
applies to the referenced endpoint. To do so, the creator of an EPR MAY
include a WSDL 2.0 description element (or a WSDL 1.1 definitions
element) in the metadata property of the EPR. The semantics of the
embedded WSDL is as defined by the WSDL 2.0 or 1.1 specifications. 

In particular, embedding a WSDL service component description MAY be
used by EPR issuers to indicate the presence of alternative addresses
and protocol bindings to access the referenced endpoint. The
alternatives are provided by the different endpoints of the embedded
service. In the case of WSDL 1.1, additional ports may be conveyed by
the WSDL 1.1 service definition which are not alternative access
channels to the endpoint. In that case, if the [interface] or [service
endpoint] properties are specified, only the ports with the same
interface as that which applies to the EPR are to be considered
alternative access channels. 

If the [service endpoint] property appears in the EPR's [metadata] and
an embedded WSDL service component is also provided inside a
descriptions or definitions component, then the [service endpoint]
information MUST match the name of (one or more of) the WSDL service(s)
included therein; the endpoint (port) name MUST match as well if
present.  The behavior of an EPR consumer when the [service endpoint]
doesn't match an embedded description is undefined. 

Example A-1. An EPR containing WSDL 2.0 metadata.

<wsa:EndpointReference
     xmlns:wsa="http://www.w3.org/@@@@/@@/addressing">

   <wsa:Address>http://example.com/fabrikam/acct</wsa:Address>
   <wsa:Metadata
        xmlns:wsdli="http://www.w3.org/@@@@/@@/wsdl-instance"
        wsdli:wsdlLocation="http://example.com/fabrikam
           http://example.com/fabrikam/fabrikam.wsdl">
      <wsdl20:description  
           targetNamespace=="http://example.com/fabrikam"
           xmlns:fabrikam="http://example.com/fabrikam"
           xmlns:abc="http://www.abccorp.com/"
           xmlns:wsdl20="http://www.w3.org/2004/12/wsdl">
        <wsdl20:import namespace="http://example.com/fabrikam/"
             location="http://example.com/fabrikam/fabrikam.wsdl/"/>
        <wsdl20:import namespace="http://www.abccorp.com/" 
             location="http://www.abccorp.com/abc.wsdl"/>
         <wsdl20:service name="InventoryService" 
                         interface="fabrikam:Inventory">
            <wsdl20:endpoint name="ep1" binding="abc:soap-http-binding" 
                    address="http://example.com/fabrikam/acct"/>
            <wsdl20:endpoint name="ep2" binding="abc:iiop" 
                    address="..."/>
            <wsdl20:endpoint name="ep3" 
                    binding="abc:soap-http-binding" 
                    address="http://alt.example.com/fabrikam/acct"/>
         </wsdl20:service>
      </wsdl20:description>
   </wsa:Metadata>
</wsa:EndpointReference>

Example A-2. An EPR containing WSDL 1.1 metadata.

<wsa:EndpointReference
     xmlns:wsa="http://www.w3.org/@@@@/@@/addressing">
   <wsa:Address>http://example.com/fabrikam/acct</wsa:Address>
   <wsa:Metadata>
     <wsdl11:definitions targetNamespace="http://example.com/fabrikam"
          xmlns:fabrikam="http://example.com/fabrikam"
          xmlns:abc="http://www.abccorp.com/"
          xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
          xmlns:iiop="http://www.iiop.org/"
          xmlns:wsdl11="http://www.w3.org/@@@@/@@/wsdl">
        <wsdl11:import namespace="http://example.com/fabrikam"  
            location="http://example.com/fabrikam/fabrikam.wsdl"/>
        <wsdl11:import namespace="http://www.abccorp.com/" 
           location="http://www.abccorp.com/abc.wsdl"/>
      <wsdl11:service name="InventoryService">
         <wsdl11:port name="ep1" binding="abc:soap-http-binding"> 
            <soap:address location="http://example.com/fabrikam/acct"/>
         </wsdl11:port>
         <wsdl11:port name="ep2" binding="abc:iiop"> 
            <iiop:address location="..."/>
        </wsdl11:service>
    </wsdl11:definitions>
  </wsa:Metadata>
</wsd:EndpointReference>

Received on Friday, 25 February 2005 07:37:30 UTC