耍酷的墨镜 · 张雪云:舍南舍北皆春水_机关文化_湖南政研网· 5 月前 · |
近视的熊猫 · 沃尔沃XC60驾驶人死亡率高,问题在车还是人 ...· 1 年前 · |
腹黑的领带 · 生日王国素描/速写- 京东· 1 年前 · |
空虚的花卷 · 威廉·冯特:实验心理学之父的卓越贡献和广泛影 ...· 1 年前 · |
坏坏的丝瓜
3 月前 |
IPR and Distribution Notices
Recipients of this document are requested to submit, with their comments, notification of any relevant patent claims or other intellectual property rights of which they may be aware that might be infringed by any implementation of the specification set forth in this document, and to provide supporting documentation.
1EdTech takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Information on 1EdTech's procedures with respect to rights in 1EdTech specifications can be found at the 1EdTech Intellectual Property Rights web page: http://www.imsglobal.org/ipr/imsipr_policyFinal.pdf .
Permission is granted to all parties to use excerpts from this document as needed in producing requests for proposals.
Use of this specification to develop products or services is governed by the license with 1EdTech found on the 1EdTech website: http://www.imsglobal.org/license.html .
The limited permissions granted above are perpetual and will not be revoked by 1EdTech or its successors or assigns.
THIS SPECIFICATION IS BEING OFFERED WITHOUT ANY WARRANTY WHATSOEVER, AND IN PARTICULAR, ANY WARRANTY OF NONINFRINGEMENT IS EXPRESSLY DISCLAIMED. ANY USE OF THIS SPECIFICATION SHALL BE MADE ENTIRELY AT THE IMPLEMENTER'S OWN RISK, AND NEITHER THE CONSORTIUM, NOR ANY OF ITS MEMBERS OR SUBMITTERS, SHALL HAVE ANY LIABILITY WHATSOEVER TO ANY IMPLEMENTER OR THIRD PARTY FOR ANY DAMAGES OF ANY NATURE WHATSOEVER, DIRECTLY OR INDIRECTLY, ARISING FROM THE USE OF THIS SPECIFICATION.
The '1EdTech General Web Services WSDL Binding Guideline' document outlines a process for creating web service bindings using the 1EdTech General Web Services Base Profile, Abstract Framework and business domain knowledge intrinsic to the Information Model of a particular Specification. The 'General Web Services WSDL Binding Guideline' contains a description of how a project teams should use the Unified Modelling Language (UML) and Extensible Mark-up Language (XML) style-sheet language auto-generation tools to specify a Web Service protocol and binding as appropriate.
For the auto-generation approach to work the 1EdTech specification must be represented with UML. 1EdTech has created a Web Services description Profile that defines how UML is to be used to describe a web service-based specification. A specification becomes a collection of UML packages. UML packages are used to ensure that the different ways in which UML models are visually presented by different UML tools do not result in tool interoperability issues. Three types of package stereotypes are used:
The 1EdTech General Web Services Basic Profile introduced the approach of separate bindings for different communications models. Therefore, three sets of transformation rules are required, one for each of the communication models that are to be supported by the bindings, namely (at the current time only the Synchronous binding is described herein):
This Guideline contains a description of how the 1EdTech Binding Auto-generation Tool-kit (I-BAT) is used to create the WSDL/XSD files from the XMI-based description of the specification. The I-BAT is used to create WSDL/XSD bindings that are categorized as:
The WSDL/XSD files created are designed to comply with the Web Service Interoperability (WS-I) Consortium Base Profile v1.1. A clear statement of the relationship between the WS-I Base Profile and the 1EdTech General Web Service Basic Profile is described in the 1EdTech GWS Base Profile V1.0 Specification. Furthermore information on how the equivalent WSDL/XSD bindings are created to support the 1EdTech General Web Services extension profiles, e.g., Addressing, Security, Attachments, etc. are supplied in the corresponding profile specifications. This guideline also presents recommendations on how to extend the specification by changing the UML description and re-applying the auto-generation file, and the areas for further work.
Executive Summary
1. Introduction
1.1 Scope and Context
1.2 Structure of this Document
1.3 Nomenclature
1.4 References
2. Web Services Description Language Files
2.1 WSDL Document Structure
2.2 WSDL Schema
2.2.1 Top-level Structure (<definitions>)
2.2.2 <import> Element Structure
2.2.3 <types> Element Structure
2.2.4 <message> Element Structure
2.2.5 <portType> Element Structure
2.2.6 <binding> Element Structure
2.2.7 <service> Element Structure
2.3 Basic WSDL File Content
2.3.1 Single File Representation
2.3.2 Split File Representation
2.3.3 Service Split File Representation
2.3.4 Multiple File Representation
2.3.5 Structure Relationships and Naming Conventions
2.4 WS-I Basic Profile
3. WSDL Files for the Set of Communications Models
3.1 Synchronous Communications Transformation Algorithms
3.1.1 Single File Representation
3.1.2 Split File Representation
3.1.3 Service Split File Representation
3.1.4 Multiple File Representation
3.2 Asynchronous Communications Transformation Algorithms
3.3 Polled Communications Transformation Algorithms
4. Creating a WSDL Binding
5. Base Profile WSDL Auto-generation
5.1 WSDL Auto-generation for Synchronous Communications
5.1.1 Single File Representation
5.1.2 Split File Representation
5.1.3 Service Split File Representation
5.1.4 Multiple File Representation
5.2 WSDL Auto-generation for Asynchronous Communications
5.3 WSDL Auto-generation for Polled Communications
6. Extending the Binding
6.1 Changing the Binding
6.2 Adding New Services
6.3 Adding New Behaviors
6.4 Adding New Data Structures
6.4.1 Adding New 'DataModel' Packages
6.4.2 Using the DataModel Extension Classes
6.5 Extending the SOAP headers
7. Claiming Conformance to the Specification
7.1 WS-I Conformance Claim Attachment
7.2 Creating Conformance Claims to 1EdTech Profiles
8. Recommended Tools
8.1 UML and Auto-generation of the Bindings
8.2 Generating Code Stubs using Java
8.3 Generating Code Stubs Using the Microsoft .NET Framework
8.3.1 Code Generation using WSDL.EXE
8.3.2 The .NET Tools
9. Further Work
Appendix A - The Binding Support XSD Files
A1 - Status Information
A2 - Message Header Structures for Synchronous Models
A3 - Message Header Structures for Asynchronous Models
A4 - Message Header Structures for Polled Models
About This Document
List of Contributors
Revision History
Index
The objective of the General Web Services Web Services Description Language (WSDL) Binding Guidelines activity is to provide a framework for guiding project teams looking to use web services as part of 1EdTech/GLC specification development. The General Web Services WSDL Binding Guidelines provide a methodology that meets the following criteria:
The General Web Services WSDL Binding Guidelines (GWSWBG) outlines a process for creating web service bindings using the 1EdTech General Web Services Base Profile, 1EdTech Abstract Framework and business knowledge intrinsic to the Information Model of a particular Specification. The GWSWBG includes guidelines that instruct project groups in how to use the recommended tools in gathering information, processing information, and specifying Web Services protocols and binding as appropriate. The methodology includes information and graphics describing the role and relationship of the General Web Services methodology to the 1EdTech/GLC Specifications. The creation of the WSDL binding files is based upon representation of the specification in the UML. The XML Metadata Interchange (XMI) representation of UML is then used to enable the auto-generation. The automated conversion is supplied by applying one or more specially developed Extensible Stylesheet Language Transformations (XSLTs) to the XMI to create the corresponding set of WSDL and Extensible Schema Definition (XSD) files.
This document should be read in conjunction with the General Web Services Base Profile document [GWS, 05b] and the set if extension profiles [GWS, 05c], [GWS, 05d] and [GWS, 05d] and the 1EdTech Binding Auto-generation Toolkit (I-BAT) Manual [GWS, 05e]. The terms of reference for the creation of both documents are defined in the original project charter [GWS, 03].
The structure of this document is:
3. WSDL Files for the Set of Communications Models A description of the transformation algorithms to be applied to the UML representation to create the corresponding WSDL/XSD files; 4. Creating a WSDL Binding An explanation of how the WSDL files are created from the Information Model description; 5. Base Profile WSDL Auto-generation A description of how a WSDL/XSD binding based upon the 1EdTech GWS Base Profile is created; 6. Extending the Binding Discusses the ways in which the binding can be extended including extensibility as discussed in the WS-I Basic Profile v1.1; 7. Claiming Conformance to the Specification A discussion of how an implementation can prove that it conforms to the specification. This also addresses the WS-I approach of embedded conformance statements in the binding; 8. Recommended Tools The tools that are recommended to support the creation of a web service binding including the messaging questionnaire; 9. Further Work A summary of the further work that should be undertaken, particularly to ensure full compatibility with the recommendations in the WS-I Basic Profile v1.1; Appendix A - The Binding Support XSD Files A description of the structure and contents of the common XSD files (the Common Data Model and the Message Binding Schema) that support the transformation rules.The structure of a WSDLv1.1 1 document is shown in Figure 2.1.
A WSDL document defines services as collections of network endpoints, or ports . In WSDL, the abstract definition of endpoints and messages is separated from their concrete network deployment or data format bindings. This allows the reuse of abstract definitions: messages , which are abstract descriptions of the data being exchanged, and port types that are abstract collections of operations . The concrete protocol and data format specifications for a particular port type constitute a reusable binding . A port is defined by associating a network address with a reusable binding and a collection of ports defines a service. Hence, a WSDL document uses the following elements in the definition of network services:
It should be noted that WSDLv1.1 supports the following simple message choreographies:
More complex choreographies have to be constructed using multiple WSDL file-sets with the choreography between the file-sets imposed by an implementation.
The top level XSD for the WSDL schema is shown in Figure 2.2.
There are three approaches to the creation of the WSDL description:
The <import> schema structure is shown in Figure 2.3. The <import> is used to enable a WSDL description to be defined in several linked physical files. 1EdTech will use the <import> element to link the abstract definition file to the specific service file, i.e., the specific service file imports the abstract definitions file.
The <type> schema structure is shown in Figure 2.4. The <type> Element is used within the single WSDL or abstract definitions file to link to the associated XSD files. These XSD files will contain the XML definitions of the SOAP structures.
The <message> schema structure is shown in Figure 2.5. This element is used within the single WSDL or the abstract definitions file to define the set of messages that are used to exchange the information for a particular operation. The <part> elements are used to define the message header and body parts.
The <portType> schema structure is shown in Figure 2.6. The <portType> element is used within the abstract definitions file to identify the messages used to represent an operation. In a single abstract definition structure an operation can have at most one input message (from the client to the server) and one output message (from the server to the client).
The <binding> schema structure is shown in Figure 2.7. The <binding> element is used within the single WSDL or the specific service file to bind the abstract message definitions to a particular transport mechanism. In the case of the 1EdTech GWS the transport system is SOAPv1.1/HTTPv1.1; no other bindings are supported.
The <service> element is used within the single WSDL or the specific service file to represent a collection of port elements, where each port represents the availability of binding at a particular endpoint. The 'binding' attribute of the port element ties it to the corresponding binding element (see sub-section 2.2.6).
This is a single file containing the WSDL and XSD information. The basic structure of an integrated WSDL document is:
<?xml version = "1.0" encoding = "UTF-8"?> <wsdl:definitions name = "??" targetNamespace = "??"> <wsdl:types> <xsd:schema> </xsd:schema> </wsdl:types> <wsdl:message name = "??"> <wsdl:part name = "??" element = "??"/> </wsdl:message> <wsdl:message name = "??"> <wsdl:part name = "??" element = "??"/> </wsdl:message> <wsdl:portType name = "??"> <wsdl:operation name = "??"> <wsdl:input message = "??"/> <wsdl:output message = "??"/> <wsdl:fault message = "??" name = "??"/> </wsdl:operation> <wsdl:operation name = "??"> <wsdl:input message = "??"/> <wsdl:output message = "??"/> <wsdl:fault message = "??" name = "??"/> </wsdl:operation> </wsdl:portType> <wsdl:portType name = "??"> </wsdl:portType> <wsdl:binding name = "??" type= "??"> <wsdl:operation name = "??"> <wsdl:input/> <wsdl:output/> <wsdl:fault name = "??"/> </wsdl:operation> <wsdl:operation name = "??"> <wsdl:input/> <wsdl:output/> <wsdl:fault name = "??"/> </wsdl:operation> </wsdl:binding> <wsdl:binding name = "??" type= "??"> </wsdl:binding> <wsdl:service name = "??"> <wsdl:port name="??" binding= "??"/> <wsdl:port name="??" binding= "??"/> </wsdl:service> <wsdl:service name = "??"> </wsdl:service> </wsdl:definitions> <?xml version = "1.0" encoding = "UTF-8"?> <wsdl:definitions name = "??" targetNamespace = "??"> <wsdl:types> <xsd:schema> <xsd:import namespace = "??" schemaLocation = "??"/> </xsd:schema> </wsdl:types> <wsdl:message name = "??"> <wsdl:part name = "??" element = "??"/> </wsdl:message> <wsdl:message name = "??"> <wsdl:part name = "??" element = "??"/> </wsdl:message> <wsdl:portType name = "??"> <wsdl:operation name = "??"> <wsdl:input message = "??"/> <wsdl:output message = "??"/> <wsdl:fault message = "??" name = "??"/> </wsdl:operation> <wsdl:operation name = "??"> <wsdl:input message = "??"/> <wsdl:output message = "??"/> <wsdl:fault message = "??" name = "??"/> </wsdl:operation> </wsdl:portType> <wsdl:portType name = "??"> </wsdl:portType> <wsdl:binding name = "??" type= "??"> <wsdl:operation name = "??"> <wsdl:input/> <wsdl:output/> <wsdl:fault name = "??"/> </wsdl:operation> <wsdl:operation name = "??"> <wsdl:input/> <wsdl:output/> <wsdl:fault name = "??"/> </wsdl:operation> </wsdl:binding> <wsdl:binding name = "??" type= "??"> </wsdl:binding> <wsdl:service name = "??"> <wsdl:port name="??" binding= "??"/> <wsdl:port name="??" binding= "??"/> </wsdl:service> <wsdl:service name = "??"> </wsdl:service> </wsdl:definitions>This is the separation of the WSDL into two files (abstract definitions and service specific files) and the XSD as a single file. For the 1EdTech GWS the recommended composition for the Abstract Definitions File is:
<?xml version = "1.0" encoding = "UTF-8"?> <wsdl:definitions name = "??" targetNamespace = "??"> <wsdl:types> <xsd:schema> <xsd:import namespace = "??" schemaLocation = "??"/> </xsd:schema> </wsdl:types> <wsdl:message name = "??"> <wsdl:part name = "??" element = "??"/> </wsdl:message> <wsdl:message name = "??"> <wsdl:part name = "??" element = "??"/> </wsdl:message> <wsdl:portType name = "??"> <wsdl:operation name = "??"> <wsdl:input message = "??"/> <wsdl:output message = "??"/> <wsdl:fault message = "??" name = "??"/> </wsdl:operation> <wsdl:operation name = "??"> <wsdl:input message = "??"/> <wsdl:output message = "??"/> <wsdl:fault message = "??" name = "??"/> </wsdl:operation> </wsdl:portType> <wsdl:portType name = "??"> </wsdl:portType> </wsdl:definitions> <?xml version = "1.0" encoding = "UTF-8"?> <wsdl:definitions name = "??" targetNamespace = "??"> <wsdl:import namespace = "??" location = "??"/> <wsdl:binding name = "??" type= "??"> <wsdl:operation name = "??"> <wsdl:input/> <wsdl:output/> <wsdl:fault name = "??"/> </wsdl:operation> <wsdl:operation name = "??"> <wsdl:input/> <wsdl:output/> <wsdl:fault name = "??"/> </wsdl:operation> </wsdl:binding> <wsdl:binding name = "??" type= "??"> </wsdl:binding> <wsdl:service name = "??"> <wsdl:port name="??" binding= "??"/> <wsdl:port name="??" binding= "??"/> </wsdl:service> <wsdl:service name = "??"> </wsdl:service> </wsdl:definitions> <?xml version = "1.0" encoding = "UTF-8"?> <wsdl:definitions name = "??" targetNamespace = "??"> <wsdl:types> <xsd:schema> <xsd:import namespace = "??" schemaLocation = "??"/> <xsd:import namespace = "??" schemaLocation = "??"/> </xsd:schema> </wsdl:types> <wsdl:message name = "??"> <wsdl:part name = "??" element = "??"/> </wsdl:message> <wsdl:message name = "??"> <wsdl:part name = "??" element = "??"/> </wsdl:message> <wsdl:portType name = "??"> <wsdl:operation name = "??"> <wsdl:input message = "??"/> <wsdl:output message = "??"/> <wsdl:fault message = "??" name = "??"/> </wsdl:operation> <wsdl:operation name = "??"> <wsdl:input message = "??"/> <wsdl:output message = "??"/> <wsdl:fault message = "??" name = "??"/> </wsdl:operation> </wsdl:portType> <wsdl:portType name = "??"> </wsdl:portType> </wsdl:definitions> <?xml version = "1.0" encoding = "UTF-8"?> <wsdl:definitions name = "??" targetNamespace = "??"> <wsdl:import namespace = "??" location = "??"/> <wsdl:binding name = "??" type= "??"> <wsdl:operation name = "??"> <wsdl:input/> <wsdl:output/> <wsdl:fault name = "??"/> </wsdl:operation> <wsdl:operation name = "??"> <wsdl:input/> <wsdl:output/> <wsdl:fault name = "??"/> </wsdl:operation> </wsdl:binding> <wsdl:binding name = "??" type= "??"> </wsdl:binding> <wsdl:service name = "??"> <wsdl:port name="??" binding= "??"/> <wsdl:port name="??" binding= "??"/> </wsdl:service> <wsdl:service name = "??"> </wsdl:service> </wsdl:definitions>The Types, Message, Operation, Port Type, Binding, Port and Service elements in the set of WSDL files have strict relationships. To make these relationships we propose a naming convention. The default target namespace is allocated a prefix of 'tns:'. The naming conventions introduced here are further refined in Section 5.
Several services can be defined. Each Service will be given a unique name and will have the string 'Service' at the end. An example of the WSDL is:
Several ports can be defined for each service. The Port associates a binding with a network address. Ports that are bound to the same Port Type are treated as alternatives, i.e., two ports could be defined for the same Port Type but one port would use a SOAP binding and the other a HTTP-Post binding. Each Port will have a unique name and will have the string 'Port' at the end. The binding identified in the <wsdl:port> declaration must be defined elsewhere in the WSDL using the <wsdl:binding> element. An example of the WSDL is:
<wsdl:service name = "PackagingService"> <wsdl:port name = "Packaging1SoapPort" binding = "tns: OpSet1SoapBinding "> </wsdl:port> <wsdl:port name = "Packaging2SoapPort" binding = "tns: OpSet2SoapBinding "> </wsdl:port> <wsdl:port name = "PackagingPostPort" binding = "tns: OpSet1PostBinding "> </wsdl:port> </wsdl:service> </wsdl:definitions>Every Port Type must have at least one binding. The binding defines the concrete protocol and data format for a particular Port Type. Each binding must have a unique name and will have the string 'Binding' at the end. The Port Type identified in the <wsdl:binding> element must be defined elsewhere n the WSDL using the <wsdl:portType> element. An example of the WSDL is:
Note that for every binding name there must be an associated port usage (note the shaded words in the 'Port Definitions' and 'Binding Definitions' examples.
The Port Type is an abstract set of operations supported by one or more end points. Each Port Type must have a unique name and will have the string 'PortType' at the end. An example of the WSDL is:
Note that every Port Type must be used in a binding. The relationship between the 'Port Type Definitions' and the 'Binding Definitions' is shown by the underlined phrases in the corresponding examples.
An operation is an abstract description of an action supported by the service. Operations are associated with a Port Type. Each operation within a Port Type must have a unique name and this name should be representative of the functional nature of the operation. An example of the WSDL is:
</wsdl: portType > <wsdl:portType name = "OpSet2PortType"> <wsdl:operation name = "compressObjects"> </wsdl:operation> <wsdl:operation name = "expandObjects"> </wsdl:operation> </wsdl:portType> </wsdl:definitions>A message is the abstract construct of the information being communicated. Messages are used to communicate the activity of the corresponding operations. The number of messages per operation depends upon the choreography for the service is 'one-way', 'request-response', solicit-response' or 'notification'. For the 'request-response' choreography the naming convention for the two messages is to take the name of the operation and append the string 'Request' for the message to the endpoint and the string 'Response' for the message from the end point. The example WSDL is:
<wsdl:portType name = "OpSet1PortType"> <wsdl:operation name = "createObject"> <wsdl:input message = "tns: createObjectRequest "> <wsdl:output message = "tns: createObjectResponse "> </wsdl:operation> <wsdl:operation name = "deleteObject"> <wsdl:input message = "tns:deleteObjectRequest"> <wsdl:output message = "tns:deleteObjectResponse"> </wsdl:operation> </wsdl: portType > <wsdl:portType name = "OpSet2PortType"> <wsdl:operation name = "compressObjects"> <wsdl:input message = "tns:compressObjectRequest"> <wsdl:output message = "tns:compressObjectResponse"> </wsdl:operation> <wsdl:operation name = "expandObjects"> <wsdl:input message = "tns:expandObjectRequest"> <wsdl:output message = "tns:expandObjectResponse"> </operation> </wsdl:portType> </wsdl:definitions>Note that the message descriptions are linked to the operation descriptions and every message must be used in at least one operation. In the WSDL example above the naming convention is shown by the shaded and underlined phrases.
The WS-I Basic Profile 1.1 [WSI, 04a] consists of a set of non-proprietary Web services specifications, plus clarifications, refinements, interpretations and amplifications of those specifications which promote interoperability. The Profile was developed according to a set of principles that, together, form the philosophy of the Profile, as it relates to bringing about interoperability. The principles are:
The 1EdTech GWS Base Profile [GWS, 05a] is heavily based upon the WS-I Basic Profile v1.1 [WSI, 04a] and the WS-I simple SOAP binding Profile v1.0 [WSI, 04d]. There are some points where the 1EdTech GWS Base Profile differs from the WS-I equivalent. These differences are identified in Section 3 of [GWS, 05a].
Three sets of transformation rules are required, one for each of the communication models that are to be supported by the bindings. The three communication models are:
The transformation algorithm is used to create the single file WSDL/XSD representation shown in Figure 3.1.
The binding files described in Figure 3.1 contain:
The name space prefixes used within this binding are listed in Table 3.1.
The transformation algorithm is used to create the single WSDL and single XSD files representation shown in Figure 3.2.
The binding files described in Figure 3.2 contain:
The name space prefixes used within this binding are listed in Table 3.2.
The transformation algorithm is used to create the service specific and abstract definition WSDL and single XSD files shown in Figure 3.3.
The binding files described in Figure 3.3 contain:
The name space prefixes used within this binding are listed in Table 3.3.
The transformation algorithm is used to create the multiple WSDL and XSD files shown in Figure 3.4. The binding files described in Figure 3.4 contain:
The separation of the 'Service Specific' and 'Abstract Definition' files means that a new Service Specific binding can be created without changing the Abstract Definition. The Abstract Definition describes the behaviors in the UML model whereas the Service Specific file is responsible for binding these to the required transport protocol (in this document this is SOAP/http).
The name space prefixes used within these bindings are listed in Table 3.4.
At the current time 1EdTech has not authorized the publication of the Asynchronous Communications transformation algorithms as Final Release. This is because there are no validated implementations of this technique and there is work underway in W3C that could result in that 1EdTech approach becoming proprietary. This work remains published as Public Draft material [GWS, 05a].
At the current time 1EdTech has not authorized the publication of the Polled Communications transformation algorithms as Final Release. This is because there are no validated implementations of this technique and there is work underway in W3C that could result in that 1EdTech approach becoming proprietary. This work remains published as Public Draft material [GWS, 05a].
The process for creating a WSDL binding based upon the 1EdTech GWS Base Profile is:
The following points should be noted when using the I-BAT:
The auto-generation files used to create the single file WSDL/XSD representation are shown in Figure 5.1.
The transformation files are used to:
Details of these XSL files are given in I-BAT [GWS, 05f].
The transformation files use the information supplied in the UML description as described in Table 5.1. In Table 5.1 each attribute has an example value and for each set of values there follows the corresponding WSDL file. All of the attribute values are used in the single WSDL/XSD file.
The auto-generation files used to create the split file WSDL/XSD representation are shown in Figure 5.2.
The transformation files are used to:
Details of these XSL files are given in I-BAT [GWS, 05f].
The transformation files use the information supplied in the UML description as described in Tables 5.2 and 5.3. In Tables 5.2 and 5.3 each attribute has an example value and for each set of values there follows the corresponding WSDL file. All of the attribute values are used in the split WSDL and XSD files.
The auto-generation files used to create the split file WSDL/XSD representation are shown in Figure 5.3.
The transformation files are used to:
Details of these XSL files are given in I-BAT [GWS, 05f]. At the current time the files created for this approach have not been thoroughly tested in the .NET and J2EE tools and so their details are not presented.
The auto-generation files used to create the multiple files WSDL/XSD representation are shown in Figure 5.4.
The transformation files are used to:
Details of these XSL files are given in I-BAT [GWS, 05f]. At the current time the files created for this approach have not been thoroughly tested in the .NET and J2EE tools and so their details are not presented.
At the current time 1EdTech has not authorized the publication of the Asynchronous WSDL auto-generation as Final Release. This is because there are no validated implementations of this technique and there is work underway in W3C that could result in that 1EdTech approach becoming proprietary. This work remains published as Public Draft material [GWS, 05a].
At the current time 1EdTech has not authorized the publication of the Polled Communications WSDL auto-generation as Final Release. This is because there are no validated implementations of this technique and there is work underway in W3C that could result in that 1EdTech approach becoming proprietary. This work remains published as Public Draft material [GWS, 05a].
The 1EdTech bindings are controlled documents. It is recommended that changes take the form as recommended by the 1EdTech Application Profile Guidelines [APG, 05a], [APG, 05b].
New capability should be added by creating new structures and not by changing a previously defined structure, i.e., instead of changing the definition of an operation a new operation should be created. The auto-generation files have been produced such that once they are re-applied to a new UML description then the new features are included within the new WSDL/XSD files. It is recommended that all new structure have a clear naming convention that show they are extensions to the original definition.
It is strongly recommended that a new service be produced by creating a new set of WSDL/XSD files and not by extending an established Service Group definition.
If it is undesirable or inappropriate to create a new Service Group set then a new service can be created by adding a new 'ServiceModel' package to the original UML definition (see the 1EdTech Auto-generation Toolkit Manual [GWS, 05e] for more details on how this should be achieved). When the new service is defined it is recommended that:
It is strongly recommended that a new behavior is not produced by changing the definition of an established operation. Instead, a new operation should be created within its own 'interface' definition, i.e., the new operation should not be added to an established 'interface'. When new behaviors are defined it is recommended that:
The data structure definition can be extended by adding one or more new 'DataModel' packages. When a new 'DataModel' package is defined it is recommended that:
It is important to note that adding new 'DataModel' packages, as with adding any new Service or behavior, requires that the client are server parts of the system use the same WSDL/XSD definition. It is not possible to have just the client be constructed from the new service and leave the server with the original service definition. This will result in a service rejection and the corresponding SOAP failure code being generated and returned.
The only way to extend the service definition without requiring a change to both ends of the system is to use the data model extension classes. These classes allow the XSD to be extended without requiring a change to the XSD itself. However, this approach does not enable an XML parser to validate the modified data definition model.
It is possible to extend the SOAP header definitions using the auto-generation files. SOAP Header extensions should be inserted in the 'DataModel' package description for the Statusinfo class within the service WSDL files. The extensions should be given a new namespace to differentiate the extensions from the original definition.
In an 1EdTech service-oriented specification the Conformance Specification is defined with respect to the Information Model and not to the binding. The binding must sustain the corresponding Information Model conformance statement. Conformance to the binding is expressed as part of the corresponding set of Application Profiles. An Application Profile is defined by the corresponding user community. Therefore, while it is not the responsibility of 1EdTech to define the Conformance Specification for a service binding, 1EdTech must supply the mechanisms by which a Conformance Specification for a binding can be created. This approach is based upon that used by WS-I.
WS-I has written the Conformance Claim Attachments Mechanism document [WSI, 04b]. This document catalogues mechanisms that can be used to attach WS-I Profile Conformance Claims to Web services artifacts, e.g., WSDL descriptions, UDDI registries, etc.
To allow advertisement of profile conformance, artifacts can be annotated with conformance claims, which use URIs to assert that a particular claim subject, e.g., an artifact or a party to a Web service, meets the appropriate requirements in the indicated profile. The requirements considered in-scope for a particular conformance claim are those placed upon the conformance target(s) associated with the claim attachment mechanism by the relevant profile. Therefore, every profile specifies its own conformance claim URI. Furthermore, every profile documents which of its conformance targets are in-scope for each claim attachment mechanism described in the following sections. In WS-I the appropriate claim attachments mechanisms are:
Apart from the WS-I Conformance Claims mechanism, the W3C is investigating the usage of WS-Policy. Therefore, no definitive recommendation is made on the usage of the WS-I approach. However, if some form of conformance statement is required then the WS-I approach can be used but no firm commitment is made to supporting this technique in later releases of the 1EdTech GWS specification.
The tools that have been used to support the development of the auto-generation files are:
The open source Apache Axis web services engine is used to illustrate how one might implement a web service in Java beginning with a WSDL. Axis provides a utility class, org.apache.axis.wsdl.WSDL2Java, to use for generating client-side and server-side code from a WSDL. To generate stubs for making client-side service calls, execute WSDL2Java against your WSDL. By default WSDL2Java generates client-side code, which includes a class for each type specified in any schemas included in the types section of the WSDL, a stub that represents the call, a service locator implementation, and associated interfaces.
To generate server-side classes, execute WSDL2Java against a WSDL with the arguments "--server-side --skeletonDeploy true". The generated skeleton, the server-side equivalent of the client stub, sits between your implementation of the service and the Axis web service engine, and handles details such as mapping namespaces used in the WSDL onto generated Java classes. WSDL2Java also generates deployment descriptors for use in deploying the service to an Axis web services instance running in a J2EE servlet container such as Apache Tomcat. As in the client, classes are generated for schema types. WSDL2Java takes a number of arguments that allow you, among other things, to fetch a WSDL from a remote URL, map namespaces onto locally sensible package names, and generate Junit test cases. Axis also provides Ant methods that allow you to automate code generation and service deployment within an Ant build. At the end of the day, the Java developer is presented with a collection of familiar looking classes.
Axis can be obtained from the Apache site http://xml.apache.org/axis/ .
The WSDL.EXE tool ships with Microsoft.NET and generates code for web services and web services clients using WSDL contract files, XSD schema files and "discomap" discovery documents. This paper focuses on code generation using WSDL. See 'MSDN Table 2 ' (illustrating options for the WSDL.EXE tool) for examples and other code generation options using the WSDL.EXE tool.
The WSDL.EXE tool is automatically installed when Visual Studio or the .NET Framework 1.1 is installed. In Visual Studio 2003 the WSDL.EXE tool is located in the C:\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\Bin folder. A batch file is included to ensure the developer will have all of the .NET Tools included in the system PATH.
When you use WSDL.EXE to create a proxy class, a single source file is created in the programming language that you specify (see language option in the following tables). The WSDL.EXE tool determines the best type to use for objects specified in the service description. As a result, the generated type in the proxy class might not be what the developer wants or expects. To ensure correct object type casts, open the file containing the generated proxy class and change any incorrect object types to the expected object type. The WSDL.EXE tool expects all WSDL files to be specified on the command line. If your WSDL file imports additional schemas via one or more <wsdl:import> elements, a code generation error may occur. To get around this issue make sure you specify all of your schemas on the command line following the WSDL file. For example, if 'foo.wsdl' imports 'bar.xsd' which then imports 'example.xsd' the command line for the WSDL.EXE tool should be:
wsdl foo.wsdl bar.xsd example.xsd
The "location" attribute (in <wsdl:import>) and 'schemaLocation' attribute (in <xsd:import>) are "hints" that can be ignored by processors that provide alternate means to locate schemas (in accordance with the W3C WSDL and XSD Technical Recommendations).
The table on the following page summarizes the use of the WSDL.EXE tool.
wsdl [ options ] { URL | path }
/urlkey:key Specifies the configuration key to use in order to read the default value for the URL property when generating code. /appsettingbaseurl:baseurlConfiguration and Deployment Tools:
The further work to be undertaken on the development of the auto-generation files is:
All of the following data structures are either defined within the WSDL files or supplied in the external XSD file: "imsMessBindSchemav1p0.xsd" 3 .
The 'StatusInfo' class diagram is shown in Figure A1.1. This class is used to return the status information reporting on the outcome of the associated request.
The set of attributes for the 'StatusInfo' class are summarized in Table A1.1.
The associated object constraint language description for this class is:
inv: Set{success, processing, failure, unsupported}.includes(codeMajor)
inv: Set{status, warning, error}.includes(severity)
inv: codeMinorValue.size <= 32
inv: messageRefIdentifier.size <= 32
inv: operationRefIdentifier.size <= 32
CodeMajor/Severity Interpretation Matrix
The interpretation of the 'CodeMajor/Severity' matrix is shown in Table A1.2.
The set of predefined 'CodeMinor' codes is shown in Table A1.3 (these is an initial set of common codes - each specification is expected to define its own set of codes).
The XML binding for the Identifier class is shown in Figure A1.2. This binding is based upon the creation of the complex-type StatusInfo.Type.
The StatusInfoSet class diagram is shown in Figure A1.3. This is a collection of StatusInfo classes and the order of these reflects the sequence in which the individual operations were requested.
The set of associations for the StatusInfoSet class are summarized in Table A1.4.
The XML binding for the Identifier class is shown in Figure A1.4. This binding is based upon the creation of the complex-type 'StatusInfoSet.Type'.
The following structures are the message headers that are to be used in the synchronous, asynchronous and polled message choreographies to implement the behaviors (these choreographies are described in [GWS, 05b]).
The synchronous request message header structure is shown in Figure A2.1. This header is attached to the request message issued by the client system. The 'wildCard' extension element enables any new namespaced element(s) to used.
This is the container for the version of the GWS infrastructure being employed. It is an enumerated field. This is an optional field and if not used then the default value should be assumed to be '1.0'.
This is the container for the unique message identifier. This is to be assigned by the system constructing the message header. It is the responsibility of the transmitting system to ensure that the message identifier is unique.
The synchronous response message header structure is shown in Figure A2.2. This header is attached to the response message issued by the server system. The 'wildCard' extension element enables any new namespaced element(s) to used.
This is the container for the version of the GWS infrastructure being employed. It is an enumerated field. This is an optional field and if not used then the default value should be assumed to be '1.0'.
This is the container for the unique message identifier. This is to be assigned by the system constructing the message header. It is the responsibility of the transmitting system to ensure that the message identifier is unique.
The status information returned as a response to single transaction request; see sub-section A1.1.
The status information returned as a response to multiple transaction request; see sub-section A1.2.
At the current time 1EdTech has not authorized the publication of the Asynchronous WSDL messaging in the Final Release. This is because there are no validated implementations of this technique and there is work underway in W3C that could result in the 1EdTech approach becoming proprietary. This work remains published as Public Draft material [GWS, 05a].
At the current time 1EdTech has not authorized the publication of the Polled WSDL messaging in the Final Release. This is because there are no validated implementations of this technique and there is work underway in W3C that could result in the 1EdTech approach becoming proprietary. This work remains published as Public Draft material [GWS, 05a].
Base Profile 1 , 2 , 3 , 4 , 5 , 6 , 7
Conformance 1 , 2 , 3 , 4
DCOM 1
General Web Services Base Profile 1
1EdTech Auto-generation Binding Tool 1 , 2 , 3 , 4 , 5 , 6 , 7
Security 1 , 2 , 3
UDDI 1 , 2
1EdTech Consortium, Inc. ("1EdTech/GLC") is publishing the information contained in this
1EdTech General Web Services WSDL Binding Guidelines
("Specification") for purposes of scientific, experimental, and scholarly collaboration only.
1EdTech/GLC makes no warranty or representation regarding the accuracy or completeness of the Specification.
This material is provided on an "As Is" and "As Available" basis.
The Specification is at all times subject to change and revision without notice.
It is your sole responsibility to evaluate the usefulness, accuracy, and completeness of the Specification as it relates to you.
1EdTech/GLC would appreciate receiving your comments and suggestions.
Please contact 1EdTech/GLC through our website at
http://www.imsglobal.org
Please refer to Document Name:
1EdTech General Web Services WSDL Binding Guidelines
Revision:
19 December 2005
The names 1EdTech ® and IMS Global Learning Consortium ® , the 1EdTech logos, Better Learning From Better Learning Technology ® , TrustEd Apps™, 1EdTech TrustEd Apps™, Learning Tools Interoperability ® , LTI ® , IMS LTI ® , IMS Learning Tools Interoperability ® , OneRoster ® , Caliper Analytics ® , Question & Test Interoperability (QTI) ® , QTI ® , Common Cartridge ® , Competencies and Academic Standards Exchange ® , CASE ® , Competencies and Academic Standards Exchange (CASE) ® , Accessible Portable Item Protocol (APIP) ® , AccessForAll ® , Badge Connect ® , Comprehensive Learner Record Standard™, and CLR Standard™ are trademarks of 1EdTech Consortium, Inc. in the United States and/or other countries. All other trademarks and registered trademarks are the properties of their respective owners.
For information on the 1EdTech trademark usage policy, see our trademark policy page .