Stuart, Since you haven't defined global elements in your schema, I suspect there's an error in your WSDL:
When using document style, your <part> definitions must use an element= attribute rather than a type= attribute, and you must reference an <element> definition rather than a <ComplexType> definition. So you need to define two additional elements in your schema: <element name=User type=tns2:User /> <element name=UserGroup type=tns2:UserGroup /> and you need to modify your message part definitions to reference these elements: <part name=body element=tns2:User /> <part name=body element=tns2:UserGroup /> And this local element definition in the "User" type would cause trouble: <element name="marks" nillable="true" type="impl:ArrayOf_xsd_float"/> You haven't provided us with the schema for the impl namespace, but I suspect that this is a SOAP Encoding type. You should define the "marks" element this way: <element name="marks" type="xsd:float" minOccurs="0" maxOccurs="unbounded" /> Also, you should replace nillable="true" with minOccurs="0" in all your definitions. Regards, Anne ----- Original Message ----- From: "Stuart Barlow" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Thursday, August 07, 2003 8:52 AM Subject: Re: Deserialization problems with document/literal Web service > Could this be related to AXIS generating an invalid WSDL for > DOCUMENT/LITERAL services? > > It is correct that DOCUMENT/LITERAL does not send type info > over the wire with each call because the client should already have > the type information from the WSDL. > > Brit Ziemendorf wrote: > > Hi all, > > > > I implemented a small document /literal Web service sending and > > receiving complex objects. > > The XML Schema looks like listed below. > > As can be seen a "UserGroup" consists of some String elements and a > > Hashtable that itself contains "User" objects. > > > > The Problem: > > When the client sends a UserGroup object the contained Hashtable can not > > be deserialized properly. When I debug it, it looks as if Axis can not > > find the correct Deserializer and uses a SimpleDeserializer as default. > > The SimpleDeserializer throws an exception because simple values are not > > supposed to have child elements. > > > > However, when the server sends a UserGroup object back to the client, > > the result is nearly the same. It seems that the client expects a > > Hashtable and therefore uses the MapDeserializer, but the included > > ItemDeserializer is not able to find the correct Deserializer for the > > items value, a "User" object. Again a SimpleDeserializer is used as > > default and throws an exception. > > > > When debugging it seems that in both cases the SimpleDeserializer is > > choosen because there are no type information available. > > How can this be? Is it normal for a document/literal service that no > > type information is sent over the wire? > > When I implement the same service as RPC/encoded it works fine. > > Is there anything that I can do, so that Axis gets the correct > > Deserializer? (Both objects are already registered in the TypeMapping!) > > > > HELP!! > > > > ____________________________________________________________________________ _________ > > > > <schema xmlns="http://www.w3.org/2001/XMLSchema" > > targetNamespace="http://bookstore.universal"> > > <complexType name="User"> > > <sequence> > > <element name="age" type="xsd:int"/> > > <element name="name" nillable="true" type="xsd:string"/> > > <element name="profession" nillable="true" type="xsd:string"/> > > <element name="userID" nillable="true" type="xsd:string"/> > > <element name="marks" nillable="true" type="impl:ArrayOf_xsd_float"/> > > </sequence> > > </complexType> > > <complexType name="UserGroup"> > > <sequence> > > <element name="groupID" type="xsd:string"/> > > <element name="groupName" nillable="true" type="xsd:string"/> > > <element name="groupUsers" nillable="true" type="apachesoap:Map"/> > > </sequence> > > </complexType> > > </schema> > > <schema xmlns="http://www.w3.org/2001/XMLSchema" > > targetNamespace="http://xml.apache.org/xml-soap"> > > <complexType name="mapItem"> > > <sequence> > > <element name="key" nillable="true" type="xsd:string"/> > > <element name="value" nillable="true" type="tns2:User"/> > > </sequence> > > </complexType> > > <complexType name="Map"> > > <sequence> > > <element name="item" minOccurs="0" maxOccurs="unbounded" > > type="apachesoap:mapItem"/> > > </sequence> > > </complexType> > > </schema> > > ____________________________________________________________________________ _______________ > > > > > > Thanks, > > Brit > > > > >
