[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]
Subject: [wsrp-wsia] [I#93] Payload extensibility mechanism
Topic: interface Class: Minor Technical Title: Payload extensibility mechanism Document Section: throughout Description: Current draft spec uses Property[] as a payload extension mechanism. At the F2F we decided to explore changing this to the <any/> mechanism of schema. Richard Cieply did some testing based on the working demo he showed and some exploration around the relevant specs. His writeup: Here is a short summary about the <any> support in WSDL and the SOAP stacks. WSDL spec 1.1 and 1.2 doesn't mention the <any> XML extension and how to deal with it. However it states that WSDL prefers XSD as the canonical type system. XSD defines the <any> wild card. SOAP 1.1 spec states that it defines a narrower set of rules for encoding data (than XML does). Section 5 defines some value, simple value, compound value, array, struct, simple type, compound type. However this deals with how content must be encoded in a SOAP message. For the <any> case one would exchange this wildcard with actual content which follows the spec, i.e. one can not say whether <any> is supported or not. JAX RPC has an XML schema support appendix and states that any XML data types not listed in this section are not required to be supported. How to deal with <any> is not mentioned here. I made some testing with AXIS and .NET created a WSDL extending a complex type (DataItem) with <any namespace="##other"/> (See attached file: echo.wsdl) used AXIS' WSDL2Java to generate the server side stub AXIS created a field named _any to DataItem with type org.apache.axis.message.MessageElement [ ] created a client side wsdl which replaced the <any> element with some additional elements to get a client proxy which sends addtional data in DataItem in the soap message (See attached file: echoclient.wsdl) communication between client and server worked as expected the addtional elements were accessible by means of the MessageElement [ ] on the server side. Of course this would also work vice versa. MS Visual Studion .NET failed to generate proxies on a WSDL containing <any> with no error message. Simply no code was generated at all. WSDL.exe from the .netFrameworkSDK failed saying that any is not allowed in the WSDL. I could not find any statement saying whether .net should support <any> in WSDL or not However a .net server accepts a soap message which contains additional elements compared to the ones defined in the wsdl (as expected). There should be a way to access the complete soap message from .net. So there might be a workaround by simply dropping the <any> elements in the WSDL (when creating a service from a WSDL) and access the soap message to obtain the addtional data sent by the client (not tried). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Discussion:
Attachment:
echo.wsdl
Description: Binary data
Attachment:
echoclient.wsdl
Description: Binary data
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]
Powered by eList eXpress LLC