LibraryToggle FramesPrintFeedback

To map an interface to a pure XML payload format do the following:

  1. Add the namespace declaration to include the extensions defining the XML binding. See XML binding namespace.

  2. Add a standard WSDL binding element to your contract to hold the XML binding, give the binding a unique name, and specify the name of the WSDL portType element that represents the interface being bound.

  3. Add an xformat:binding child element to the binding element to identify that the messages are being handled as pure XML documents without SOAP envelopes.

  4. Optionally, set the xformat:binding element's rootNode attribute to a valid QName. For more information on the effect of the rootNode attribute see XML messages on the wire.

  5. For each operation defined in the bound interface, add a standard WSDL operation element to hold the binding information for the operation's messages.

  6. For each operation added to the binding, add the input, output, and fault children elements to represent the messages used by the operation.

    These elements correspond to the messages defined in the interface definition of the logical operation.

  7. Optionally add an xformat:body element with a valid rootNode attribute to the added input, output, and fault elements to override the value of rootNode set at the binding level.

[Note]Note

If any of your messages have no parts, for example the output message for an operation that returns void, you must set the rootNode attribute for the message to ensure that the message written on the wire is a valid, but empty, XML document.

When you specify that an interface’s messages are to be passed as XML documents, without a SOAP envelope, you must take care to ensure that your messages form valid XML documents when they are written on the wire. You also need to ensure that non-Fuse Services Framework participants that receive the XML documents understand the messages generated by Fuse Services Framework.

A simple way to solve both problems is to use the optional rootNode attribute on either the global xformat:binding element or on the individual message’s xformat:body elements. The rootNode attribute specifies the QName for the element that serves as the root node for the XML document generated by Fuse Services Framework. When the rootNode attribute is not set, Fuse Services Framework uses the root element of the message part as the root element when using doc style messages, or an element using the message part name as the root element when using rpc style messages.

For example, if the rootNode attribute is not set the message defined in Example 6.1 would generate an XML document with the root element lineNumber.


For messages with one part, Fuse Services Framework will always generate a valid XML document even if the rootNode attribute is not set. However, the message in Example 6.2 would generate an invalid XML document.


Without the rootNode attribute specified in the XML binding, Fuse Services Framework will generate an XML document similar to Example 6.3 for the message defined in Example 6.2. The generated XML document is invalid because it has two root elements: pairName and entryNum.


If you set the rootNode attribute, as shown in Example 6.4 Fuse Services Framework will wrap the elements in the specified root element. In this example, the rootNode attribute is defined for the entire binding and specifies that the root element will be named entrants.


An XML document generated from the input message would be similar to Example 6.5. Notice that the XML document now only has one root element.


Comments powered by Disqus