One more comment. I consider it out of the ordinary for the code implementing a service method to manipulate XML in any way. As such, your method that returns a DOM element seems quite odd to me. One typically uses constructs more native to the implementation language, such as a class instance or any array. The SOAP engine then serializes this as XML for you, just as it deserializes parameters passed to your method.
On 18 Jun 2003 at 15:13, Scott Nichol wrote: > > I don't concur with you on thing you mentioned below in the first paragraph. If > > you factor interoperability & infrastructure issues in, your design would be > > definitely affected accordingly. If your service is going to be consumed by a VB6 > > client or .net client (or any non-java consumer), > RPC/literal is not the right solution. In that case, the service should be designed > to use Doc/literal. Also, RPC/Encoding is not always the right design for > interopetability reasons. I had my original service return a DOM element and due to > interoperability reasons, I turned in to RPC/Encoding > type that returns a String containing XML representation. > > Most SOAP implementations interoperate well (not necessarily > perfectly) using rpc/encoded, although WS-Interop has made doc/lit > the preferred representation. VB6 clients interop well with Apache > SOAP services, if you either (1) use the SOAP Toolkit low-level API, > or (2) change simple types within the WSDL to xsd:anyType, which > forces the SOAP Toolkit to emit xsi:type attributes for the affected > elements. There are some popular niche SOAP implementations, such as > NuSOAP, that work better with rpc/encoded than doc/lit. And, of > course, Apache SOAP itself is more-or-less based on an rpc/encoded > world. > > For your service returning a DOM element, regardless of whether you > wanted to use rpc/encoded or doc/lit, you would need to either (1) > write a deserializer on the client or (2) write WSDL that describes > the structure of the XML representing the element. These are both > ways of determining how to deserialize the returned value on the > client. This is a general interoperability issue, not restricted to > the use of a DOM element: how does one end of the conversation make > sense of the envelope it receives from the other end. You can get > great interoperability by restricting yourself to the simple types > from the XML Schema spec. When you want to use other types, you need > a mechanism for both ends to agree upon the structure of the > information, which is one of the purposes of WSDL. > > > Are there any "smart SOAP runtime" that provides validation using schema ? > > There may be one or more, but I have to say that I do not know of > any. > > In .NET 1.1, you would do validation through a SOAP Extension. It is > not as simple as specifying an attribute or setting a flag somewhere. > True validation against a schema is not built-in. The extension > receives a copy of the XML to do with what it pleases. At this > point, your code uses the XML parser to validate it, presumably > throwing an exception if there is a problem. > > I cannot tell from the web site whether GLUE > (http://www.themindelectric/) or WASP (http://www.systinet.com/) does > validation. They are two of the premier Java implementations of web > services. > > As described by Anne, in Axis, you could just hook another processor > in the chain to do validation, which is much like the .NET SOAP > extension method. > > Of course, in order to de-serialize the XML document in the SOAP > envelope, binding it to language variables, the XML must be at least > pretty darn close to valid. For example, an element cannot enclose > string data and successfully de-serialize into an int. The biggest > thing I can think of that XML validation would check that de- > serialization would not have to is domain checking for XML types > defined by restriction. If my schema has a type that is an int > restricted to the values 1, 2 and 3, de-serialization will probably > work for any integer, so out-of-range values would pass through. > > Scott Nichol > > Do not reply directly to this e-mail address, > as it is filtered to only receive e-mail from > specific mailing lists. > > > Scott Nichol Do not reply directly to this e-mail address, as it is filtered to only receive e-mail from specific mailing lists.