Hi Anne, I should have added the whole WSDL file. (you'll find it below)
As you can see, I already have the global elements. And when I only send an object of the type "User", the <element name="marks" nillable="true" type="impl:ArrayOf_xsd_float"/> causes no problems. So, I think that this is not the source of error. I'm quite sure that the problem is the Hashtable. When I debug the deserialization problem, I can see that everything works fine up to the ItemDeserializer of the Hashtable. Although it is possible to define the type of the items value in the schema (as I have done below), it seems as if this information is not interpreted. I can change it to whatever I want, it is still not working as long as the value can not be interpreted as a single string. The longer I think about it, the more I'm convinced that this is a general problem. For the reason that you can store every object in a Hashtable, there is no way to define the contents of it. If you can not define the contents and there are no type informations sent along with the stored objects, how should Axis know what to do with it. What is needed is a general ObjectDeserializer, but I doubt that such a thing is really possible. It really looks like a bug. --------------------------------------------------------- <?xml version="1.0" encoding="UTF-8"?> <wsdl:definitions targetNamespace="http://service.bookstore.universal" xmlns:impl="http://service.bookstore.universal" xmlns:intf="http://service.bookstore.universal" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns2="http://bookstore.universal" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns="http://schemas.xmlsoap.org/wsdl/"> <wsdl:types> <schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://service.bookstore.universal"> <complexType name="ArrayOf_xsd_float"> <complexContent> <restriction base="soapenc:Array"> <attribute ref="soapenc:arrayType" wsdl:arrayType="xsd:float[]"/> </restriction> </complexContent> </complexType> <element name="getSingleUserReturn" type="tns2:User"/> <element name="id1" type="xsd:string"/> <element name="id2" type="xsd:string"/> <element name="getUserGroupReturn" type="tns2:UserGroup"/> <element name="user" type="tns2:User"/> <element name="saveSingleUserReturn" type="xsd:boolean"/> <element name="group" type="tns2:UserGroup"/> <element name="saveUserGroupReturn" type="xsd:boolean"/> </schema> <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> </wsdl:types> <wsdl:message name="getUserGroupRequest"> <wsdl:part name="id2" element="impl:id2"/> </wsdl:message> <wsdl:message name="saveSingleUserRequest"> <wsdl:part name="user" element="impl:user"/> </wsdl:message> <wsdl:message name="saveUserGroupResponse"> <wsdl:part name="saveUserGroupReturn" element="impl:saveUserGroupReturn"/> </wsdl:message> <wsdl:message name="getSingleUserResponse"> <wsdl:part name="getSingleUserReturn" element="impl:getSingleUserReturn"/> </wsdl:message> <wsdl:message name="getSingleUserRequest"> <wsdl:part name="id1" element="impl:id1"/> </wsdl:message> <wsdl:message name="saveUserGroupRequest"> <wsdl:part name="group" element="impl:group"/> </wsdl:message> <wsdl:message name="getUserGroupResponse"> <wsdl:part name="getUserGroupReturn" element="impl:getUserGroupReturn"/> </wsdl:message> <wsdl:message name="saveSingleUserResponse"> <wsdl:part name="saveSingleUserReturn" element="impl:saveSingleUserReturn"/> </wsdl:message> <wsdl:portType name="StudentManagementService_SEI"> <wsdl:operation name="getSingleUser" parameterOrder="id1"> <wsdl:input name="getSingleUserRequest" message="impl:getSingleUserRequest"/> <wsdl:output name="getSingleUserResponse" message="impl:getSingleUserResponse"/> </wsdl:operation> <wsdl:operation name="getUserGroup" parameterOrder="id2"> <wsdl:input name="getUserGroupRequest" message="impl:getUserGroupRequest"/> <wsdl:output name="getUserGroupResponse" message="impl:getUserGroupResponse"/> </wsdl:operation> <wsdl:operation name="saveSingleUser" parameterOrder="user"> <wsdl:input name="saveSingleUserRequest" message="impl:saveSingleUserRequest"/> <wsdl:output name="saveSingleUserResponse" message="impl:saveSingleUserResponse"/> </wsdl:operation> <wsdl:operation name="saveUserGroup" parameterOrder="group"> <wsdl:input name="saveUserGroupRequest" message="impl:saveUserGroupRequest"/> <wsdl:output name="saveUserGroupResponse" message="impl:saveUserGroupResponse"/> </wsdl:operation> </wsdl:portType> <wsdl:binding name="StudentManagementServicePortSoapBinding" type="impl:StudentManagementService_SEI"> <wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="getSingleUser"> <wsdlsoap:operation soapAction=""/> <wsdl:input name="getSingleUserRequest"> <wsdlsoap:body use="literal" namespace="http://service.bookstore.universal"/> </wsdl:input> <wsdl:output name="getSingleUserResponse"> <wsdlsoap:body use="literal" namespace="http://service.bookstore.universal"/> </wsdl:output> </wsdl:operation> <wsdl:operation name="getUserGroup"> <wsdlsoap:operation soapAction=""/> <wsdl:input name="getUserGroupRequest"> <wsdlsoap:body use="literal" namespace="http://service.bookstore.universal"/> </wsdl:input> <wsdl:output name="getUserGroupResponse"> <wsdlsoap:body use="literal" namespace="http://service.bookstore.universal"/> </wsdl:output> </wsdl:operation> <wsdl:operation name="saveSingleUser"> <wsdlsoap:operation soapAction=""/> <wsdl:input name="saveSingleUserRequest"> <wsdlsoap:body use="literal" namespace="http://service.bookstore.universal"/> </wsdl:input> <wsdl:output name="saveSingleUserResponse"> <wsdlsoap:body use="literal" namespace="http://service.bookstore.universal"/> </wsdl:output> </wsdl:operation> <wsdl:operation name="saveUserGroup"> <wsdlsoap:operation soapAction=""/> <wsdl:input name="saveUserGroupRequest"> <wsdlsoap:body use="literal" namespace="http://service.bookstore.universal"/> </wsdl:input> <wsdl:output name="saveUserGroupResponse"> <wsdlsoap:body use="literal" namespace="http://service.bookstore.universal"/> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="StudentManagementService_SEIService"> <wsdl:port name="StudentManagementServicePort" binding="impl:StudentManagementServicePortSoapBinding"> <wsdlsoap:address location="http://localhost:8081/TestWebServiceDOCUMENT/services/StudentManagementServicePort"/> </wsdl:port> </wsdl:service> </wsdl:definitions> ------------------------------------------------------------ Regards, Brit
