Hi Is there are a reason why you have commented out the call to client.registerTypeMapping in your client program . This surely will fail since there is no deserializerfactory registered for Person. Can you run the code with the typemapping registered. You could also set the return type to be of type Person instead of anytype. Vidyanand -----Original Message----- From: Quinn, Kim John Sent: Fri 12/13/2002 8:50 PM To: '[EMAIL PROTECTED]' Cc: Subject: Problems with Deserialization Hello all, I am having a super frustrating problem with deserializing an object in Axis. It says it cannot find the "deserializer for {xxx}YYY". I can see in the TCPMonitor though that it seems to be working correctly. I have a custom serializer and deserializer that I am using. I have tried scouring the newsgroups and saw a lot on the topic but I couldnt seem to find anything that helped me. Everything seems to be working fine till i get to the client... Here is my error: --------------------------------- org.xml.sax.SAXException: Deserializing parameter 'createPersonReturn': could not find deserializer for type {PersonWorkflowService}Person at org.apache.axis.message.RPCHandler.onStartChild(RPCHandler.java:264) at org.apache.axis.encoding.DeserializationContextImpl.startElement(Deseria liza tionContextIm pl.java:883) at org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java: 158) at org.apache.axis.message.MessageElement.publishToHandler(MessageElement.j ava: 681) at org.apache.axis.message.RPCElement.deserialize(RPCElement.java:244) at org.apache.axis.message.RPCElement.getParams(RPCElement.java:268) at org.apache.axis.client.Call.invoke(Call.java:1862) at org.apache.axis.client.Call.invoke(Call.java:1768) at org.apache.axis.client.Call.invoke(Call.java:1306) at test.testwf.TestWfWs.testPerson(TestWfWs.java:61) at test.testwf.TestWfWs.main(TestWfWs.java:87) Exception in thread "main" AxisFault faultCode: { http://xml.apache.org/axis/}Server.userException faultString: org.xml.sax.SAXException: Deserializing parameter 'createPersonReturn': could not fin d deserializer for type {PersonWorkflowService}Person faultActor: null faultDetail: stackTrace: org.xml.sax.SAXException: Deserializing parameter 'createPersonReturn': could n ot find deserializer for type {PersonWorkflowService}Person at org.apache.axis.message.RPCHandler.onStartChild(RPCHandler.java:264) at org.apache.axis.encoding.DeserializationContextImpl.startElement(Deseria liza tionContextIm pl.java:883) at org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java: 158) at org.apache.axis.message.MessageElement.publishToHandler(MessageElement.j ava: 681) at org.apache.axis.message.RPCElement.deserialize(RPCElement.java:244) at org.apache.axis.message.RPCElement.getParams(RPCElement.java:268) at org.apache.axis.client.Call.invoke(Call.java:1862) at org.apache.axis.client.Call.invoke(Call.java:1768) at org.apache.axis.client.Call.invoke(Call.java:1306) at test.testwf.TestWfWs.testPerson(TestWfWs.java:61) at test.testwf.TestWfWs.main(TestWfWs.java:87) org.xml.sax.SAXException: Deserializing parameter 'createPersonReturn': could not find deserializer for type {PersonWorkflowService}Person at org.apache.axis.AxisFault.makeFault(AxisFault.java:115) at org.apache.axis.client.Call.invoke(Call.java:1865) at org.apache.axis.client.Call.invoke(Call.java:1768) at org.apache.axis.client.Call.invoke(Call.java:1306) at test.testwf.TestWfWs.testPerson(TestWfWs.java:61) at test.testwf.TestWfWs.main(TestWfWs.java:87) Caused by: org.xml.sax.SAXException: Deserializing parameter 'createPersonReturn': could not find d eserializer for type {PersonWorkflowService}Person at org.apache.axis.message.RPCHandler.onStartChild(RPCHandler.java:264) at org.apache.axis.encoding.DeserializationContextImpl.startElement(Deseria liza tionContextIm pl.java:883) at org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java: 158) at org.apache.axis.message.MessageElement.publishToHandler(MessageElement.j ava: 681) at org.apache.axis.message.RPCElement.deserialize(RPCElement.java:244) at org.apache.axis.message.RPCElement.getParams(RPCElement.java:268) at org.apache.axis.client.Call.invoke(Call.java:1862) ... 4 more Here is my deploy.wsdd --------------------------------- <deployment xmlns=" http://xml.apache.org/axis/wsdd/" xmlns:java=" http://xml.apache.org/axis/wsdd/providers/java"> <!-- Services from PersonWorkflowService WSDL service --> <service name="PersonWorkflowService" provider="java:RPC"> <parameter name="wsdlTargetNamespace" value="urn:PersonWorkflowService"/> <parameter name="wsdlServiceElement" value="PersonWorkflowService"/> <parameter name="wsdlServicePort" value="PersonWorkflowService"/> <parameter name="className" value="com.x2.blocks.person.webservice.PersonWorkflowServiceSoapBindingS kele ton"/> <parameter name="wsdlPortType" value="PersonWorkflowPort"/> <parameter name="allowedMethods" value="*"/> <parameter name="scope" value="Request"/> <typeMapping qname="MyNS:Person" xmlns:MyNS="PersonWorkflowService" languageSpecificType="java:com.x2.blocks.person.Person" serializer="com.x2.ext.axis.PersistableSerializerFactory" deserializer="com.x2.ext.axis.PersistableDeserializerFactory" encodingStype=" http://schema.xmlsoap.org/soap/encoding/" /> </service> </deployment> Here is my WSDL file: ---------------------------------------- <?xml version="1.0" encoding="UTF-8"?> <wsdl:definitions targetNamespace="urn:PersonWorkflowService" xmlns:soapenc=" http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdlsoap=" http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns2=" http://person.blocks.x2.com" xmlns:typens="urn:PersonWorkflowService" xmlns:apachesoap=" http://xml.apache.org/xml-soap" xmlns:xsd=" http://www.w3.org/2001/XMLSchema" xmlns:intf="urn:PersonWorkflowService" xmlns:wsdl=" http://schemas.xmlsoap.org/wsdl/" xmlns:impl="urn:PersonWorkflowService" xmlns=" http://schemas.xmlsoap.org/wsdl/"> <wsdl:types/> <!-- <types> <xsd:schema targetNamespace="urn:PersonWorkflowService" xmlns:xsd=" http://www.w3.org/1999/XMLSchema"> <xsd:complexType name="Person"> <xsd:all> <xsd:element name="PersonID" type="xsd:int"/> <xsd:element name="FirstName" type="xsd:string"/> <xsd:element name="LastName" type="xsd:string"/> </xsd:all> </xsd:complexType> </xsd:schema> </types> --> <wsdl:message name="testResponse"> <wsdl:part name="testReturn" type="xsd:string"/> </wsdl:message> <wsdl:message name="createPersonResponse"> <wsdl:part name="createPersonReturn" type="xsd:anyType"/> </wsdl:message> <wsdl:message name="createPersonRequest"> </wsdl:message> <wsdl:message name="testRequest"> </wsdl:message> <wsdl:portType name="PersonWorkflowPort"> <wsdl:operation name="test"> <wsdl:input name="testRequest" message="intf:testRequest"/> <wsdl:output name="testResponse" message="intf:testResponse"/> </wsdl:operation> <wsdl:operation name="createPerson"> <wsdl:input name="createPersonRequest" message="intf:createPersonRequest"/> <wsdl:output name="createPersonResponse" message="intf:createPersonResponse"/> </wsdl:operation> </wsdl:portType> <wsdl:binding name="PersonWorkflowServiceSoapBinding" type="intf:PersonWorkflowPort"> <wsdlsoap:binding style="rpc" transport=" http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="test"> <wsdlsoap:operation soapAction=""/> <wsdl:input name="testRequest"> <wsdlsoap:body use="encoded" encodingStyle=" http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:PersonWorkflowService"/> </wsdl:input> <wsdl:output name="testResponse"> <wsdlsoap:body use="encoded" encodingStyle=" http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:PersonWorkflowService"/> </wsdl:output> </wsdl:operation> <wsdl:operation name="createPerson"> <wsdlsoap:operation soapAction=""/> <wsdl:input name="createPersonRequest"> <wsdlsoap:body use="encoded" encodingStyle=" http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:PersonWorkflowService"/> </wsdl:input> <wsdl:output name="createPersonResponse"> <wsdlsoap:body use="encoded" encodingStyle=" http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:PersonWorkflowService"/> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="PersonWorkflowService"> <wsdl:port name="PersonWorkflowService" binding="intf:PersonWorkflowServiceSoapBinding"> <wsdlsoap:address location=" http://localhost:8080/axis/services/PersonWorkflowService"/> </wsdl:port> </wsdl:service> </wsdl:definitions> Here is my TCPMonitor Report: ------------------------------------------ Listen Port: 8070 Target Host: localhost Target Port: 8080 ==== Request ==== POST /axis/services/PersonWorkflowService HTTP/1.0 Content-Type: text/xml; charset=utf-8 Accept: application/soap+xml, application/dime, multipart/related, text/* User-Agent: Axis/beta3 Host: localhost Cache-Control: no-cache Pragma: no-cache SOAPAction: "" Content-Length: 389 <?xml version="1.0" encoding="UTF-8"?> <soapenv:Envelope xmlns:soapenv=" http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd=" http://www.w3.org/2001/XMLSchema" xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance"> <soapenv:Body> <ns1:createPerson soapenv:encodingStyle=" http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="PersonWorkflowService"/> </soapenv:Body> </soapenv:Envelope>==== Response ==== HTTP/1.1 200 OK Date: Sat, 14 Dec 2002 04:50:48 GMT Server: Jetty/4.1.0 (Windows 2000 5.0 x86) Servlet-Engine: Jetty/4.1.0 (Servlet 2.3; JSP 1.2; java 1.4.0) Content-Type: text/xml; charset=utf-8 <?xml version="1.0" encoding="UTF-8"?> <soapenv:Envelope xmlns:soapenv=" http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd=" http://www.w3.org/2001/XMLSchema" xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance"> <soapenv:Body> <ns1:createPersonResponse soapenv:encodingStyle=" http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="PersonWorkflowService"> <createPersonReturn href="#id0"/> </ns1:createPersonResponse> <multiRef id="id0" soapenc:root="0" soapenv:encodingStyle=" http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns2:Person" xmlns:soapenc=" http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns2="PersonWorkflowService"> <PersonID xsi:type="xsd:int">1177</PersonID> <FisrtName xsi:type="xsd:string">Super</FisrtName> <LastName xsi:type="xsd:string">Man</LastName> </multiRef> </soapenv:Body> </soapenv:Envelope> Here is my test: --------------------------------------------- public void testPerson() throws Exception { String endpoint = " http://localhost:8070/axis/services/PersonWorkflowService"; Service srvc = new Service(); Call call = (Call)srvc.createCall(); call.setTargetEndpointAddress ( new java.net.URL(endpoint) ); call.setOperationName ( new QName("PersonWorkflowService", "createPerson") ); /* QName qname = new QName("PersonWorkflowService", "Person"); Class clz = com.x2.blocks.person.Person.class; call.registerTypeMapping(clz, qname, com.x2.ext.axis.PersistableSerializerFactory.class, com.x2.ext.axis.PersistableDeserializerFactory.class); call.setReturnType(XMLType.XSD_ANYTYPE); */ Person p = (Person)call.invoke( new Object[] {} ); System.out.println("Person: " + p.getPersonID() + " = " + p.getFirstName() + ", " + p.getLastName() + "\n"); } Gad, any help or tips or suggestions would be really appreciated, I've been banging my head against the wall on this one for some time now... Thanks. KJQ [EMAIL PROTECTED]
<<winmail.dat>>