ColdFusion Web Service Engine
ColdFusion uses Apache Axis, a proven and reliable implementation of SOAP, as its underlying engine to implement SOAP-based web services. ColdFusion Version 9 uses Axis 1, which supports only WSDL 1.1 and SOAP 1.1. Therefore, ColdFusion 9 cannot create web services using these specifications and cannot consume external web services that used newer versions of WSDL and SOAP.
ColdFusion 10 has upgraded its web services support and includes implementation based on Axis 2 as well. ColdFusion now supports both versions of the WSDL and SOAP specifications simultaneously while maintaining backward compatibility.
We have already noted that support for newer specifications is important for ColdFusion to play well with external web services that use these specifications. This support also provides other benefits, discussed in upcoming sections.
In the subsequent sections, we will treat Apache Axis as a web service engine.
SOAP 1.2
SOAP 1.2 can do everything that SOAP 1.1 does and more. Among others the most notable differences between the two versions are the following:
- SOAP 1.1 is based on XML 1.0, and SOAP 1.2 is based on XML Information Set (XML Infoset). XML Infoset provides a way to describe the XML document with an XSD schema but is not bound to serialize using XML 1.0 serialization. Thus, SOAP 1.2 places no restriction on the way that the Infoset data is transported.
- SOAP 1.2 provides a binding framework. You can use SOAP 1.2’s specification of a binding to an underlying protocol to determine which XML serialization is used in the underlying protocol data units, thus making SOAP truly protocol independent.
- SOAP 1.2 includes HTTP binding. It provides support for both HTTP GET and POST operations and conforms better to web architectural principles. Thus, it uses established web technologies for improved performance.
- SOAP 1.2 provides a clear processing model. SOAP 1.2 is more robust and less ambiguous because it has resolved many of the interoperability issues that were concerns with SOAP 1.1.
To conclude, SOAP 1.2 is truly protocol agnostic, extensible, unambiguous, and more HTTP friendly than SOAP 1.1.
WSDL 2.0
WSDL 2.0 is the newer version of WSDL and a W3C standard. It is significantly different from WSDL 1.1 and provides additional benefits since it:
- Uses SOAP 1.2: WSDL 2.0 uses SOAP 1.2 to provide all the benefits of SOAP 1.2 such as better extensibility.
- Supports interface inheritance: As with Object-Oriented Programming (OOP), a WSDL document can inherit from another WSDL document, providing reusability and component-based architecture.
- Supports additional schemas: Along with the XML schema, WSDL 2.0 supports the use of RelaxNG and DTD as type definitions.
- Supports additional message patterns: WSDL 2.0 supports eight new patterns, including only single messages.
Although it is an enhanced version, WSDL 2.0 is mainly used to create SOAP-based REST-complaint web services. One reason for its lower rate of adoption is that WSDL 1.1 is sufficient for most common needs of most applications.
To view the generated WSDL 2.0 for a ColdFusion component deployed as a web service, append the string ?wsdl2 to the component’s URL. Note that WSDL 2.0 is available only with Web Service Engine Version 2.