As a result of todays call, here's a revised copy:
One comment - I went looking for the "structural URI" definition in the
current assembly cd01-rev3 draft, and didn't find it, so I couldn't
actually reference that section.
The following comes in two parts - moving the gist of what is the
existing section 4.4, which is the original text that turned into (the
now deleted) section 4.3 below, and the revision for the rest of
section 4. First, the normative statement about mapping to WSDL:
Section 2.2, paragraph #1 currently reads:
When binding.ws is used on a service or reference with an interface
that is not defined by interface.wsdl, then a WSDL portType for the
service or reference is derived from the interface by the rules defined
for that SCA interface type.
I suggest changing this to:
When binding.ws is used on a service or reference with an interface
that is not defined by interface.wsdl, then a WSDL portType for the
service or reference is derived from the interface by the rules defined
for that SCA interface type. A conformant SCA runtime MUST raise an
error if the interface does not map to a WSDL portType.
(Observation - this is really another RFC 2119 change to an unrelated
section, but given that meaning intended here came from section 4, this
is OK by me.)
Random note - in assembly CD01-rev3, the following appear to be in
error:
- line 2036, 2040, 2054, 2058 - @name attribute on the binding
element is xs:NCName, not xs:QName
And finally, here's the replacement for section four, including all the
edits we discussed today.
4 Transport Binding
The binding.ws element provides numerous ways to
specify exactly how messages ought to be transmitted from or to the
reference or service. Those ways include references to WSDL binding
elements from the @wsdlElement attribute, policy intents, and even
vendor extensions within the binding.ws element. However, all of
those ways to indicate how messages get carried happen to be
optional. This section describes the defaults that MUSTto
be used if the
specific transport
details are not otherwise specified.
4.1 Intents
So as to narrow the range of choices for how messages
are carried, the following policy intents affect the transport
binding.
-
soap
This indicates that messages MUST be transmitted using SOAP. One or
more SOAP versions can be used.
-
soap.1_1
Messages MUST be transmitted using only SOAP 1.1.
-
soap.1_2
Messages MUST be transmitted using only SOAP 1.2.
4.2 Default Transport Binding Rules
4.2.1 WS-I Basic Profile Alignment
To align to WS-I Basic Profile, the resulting WSDL port mustneeds
to be all
document-literal, or all rpc-literal binding (R2705).
This means, for any given portType, for all messages referenced by all
operations in that portType, either
- that every message part references an XML Schema type
(rpc-literal pattern)
- or that every message references exactly zero or one XML
Schema elements (document-literal pattern)
A portType that does not fit one of these two patterns MUST be
treated as an error by a conforming implementation. The rest of this
section assumes the short-hand reference of a "rpc-literal" or
"document-literal" pattern, depending on which of the two bullet points
above it matches.
4.2.2 Default Transport Binding Rules
In the event that the transport details are not otherwise
determined, a conforming implementation MUST enable the following
configuration:
-
HTTP-based transfer protocol
-
Except when an intent or policy mandates the use of only SOAP
1.2, supportgenerate bindings for SOAP 1.1
-
"literal" format as described in section 3.5 of [WSDL11]
-
For document-lteralliteral
pattern, each message uses "document" style, as per section 3.5 of
[WSDL11].
-
For rpc-literal
pattern, each message uses "rpc" style, as per section 3.5 of
[WSDL11]. In this case, the child elements of the SOAP Body element
mustMUST be namespace qualified with a
non-empty namespace name. This
namespace MUST be the structural URI associated with component,
with a
"service-name/binding-name" appended the binding.
-
For SOAP 1.1 messages, the SOAPAction HTTP header described in
section 6.1.1 represents the empty string, in quotes ("").
-
For SOAP 1.2 messages, the optional SOAP
Action feature
described in section 6.5 of [SOAP12Adjuncts] does not appear.
-
All WSDL message parts are carried in the SOAP body
4.2.3 SOAP versions
Where no specific version of SOAP has been dictated, an SCA
runtime MUST
generate bindings for SOAP
1.1.
4.3
WSDL portType
An SCA service has a single interface description. For the
Web
Services binding, this interface description MUST be converted into
a WSDL
1.1 portType.
B. Appendix - WSDL Generation
Due to the number of factors that determine how a WSDL might be
generated, including compatibility with existing WSDL uses, precise
details cannot be specified. For example, implementation decisions can
affect the way WSDL
might be generated. For reference, and consistency, this section
suggests non-normative choices for some of the various details
involved in generating WSDL. For brevity, the following definitions
apply:
- component name = the value of the @name attribute of the
component element containing the binding.ws element
- service name = the value of the @name attribute of the service
element containing the binding.ws element
- binding name = the value of @name attribute of the binding.ws
element, or the default if no @name attribute is present
- SOAP version = either "SOAP11" or "SOAP12" as appropriate
With those definitions in place, here are the suggested choices:
-
wsdl:definitions/@name =
<componentNamecomponent name> + "." + <serviceNameservice
name>
-
wsdl:definitions/@targetNamespace =
<HTTP Base URI> + "/" + <componentName> + "/" +
<serviceName><structural URI for the service>
-
import each WSDL 1.1 portType,
rather than putting them inline
-
wsdl:binding/@name = <name of bindingbinding
name> + <SOAP
Versionversion> + "Binding"
In the above, "<SOAP Version>" should
beis either
"SOAP11" or "SOAP12" as appropriate.
|