Sagar You do need to make sure the service is receiving the request okay and the response is coming back as expected. System.out.println's in the Service help and running the TCPMON program will allow you to view the SOAP going back and forth.
So for my clarification, you are trying to send your customer object as arg2 and expecting a return of a customer object... correct? If you you need to create the QName object registerTypeMapping prior to the addParameter call. I'm not sure how the INOUT parms works, but by givng the QName in the addParameter call it should then know how to serialize and deserialize the object. Should look something like this: public static Customer getCustomer(String name, String authentication, Customer cust) { Customer ret = null; try { String endpoint = " http://localhost/WebServices/services/PmfCustomerClientAgent"; Service service = new Service(); QName qn = new QName(" http://com.chordiant.customer.businessClasses","Customer"); call.registerTypeMapping(Customer.class, qn, new BeanSerializerFactory(Customer.class, qn), new BeanDeserializerFactory(Customer.class, qn)); Call call = (Call) service.createCall(); call.setTargetEndpointAddress( new java.net.URL(endpoint) ); call.setOperationName( "getCommonObject" ); call.addParameter( "arg0", XMLType.XSD_STRING, ParameterMode.IN); call.addParameter( "arg1", XMLType.XSD_STRING, ParameterMode.IN); call.addParameter( "arg2", qn ,ParameterMode.INOUT ); call.setReturnType(qn); System.out.println(" invoking getCustomer" ); ret = (Customer) call.invoke( new Object[] { name, authentication, cust} ); } catch (Exception e) { System.err.println("Exception occured in the invoke getCustomer method"); System.err.println(e.toString()); } } "Sagar Pidaparthi" <Sagar.Pidaparthi To @chordiant.com> <[EMAIL PROTECTED]> cc 09/09/04 02:11 PM Subject RE: Could not find deserializer Please respond to [EMAIL PROTECTED] he.org Mark, I still have problems. I made one more observation. I had two testers one using the Proxies and by building the call structure without using proxies. I was under the impression that both were sending the response back, but I just realized that the one we are testing is only sending the SOAP message out but is not getting any response. The tester with proxies is sending the response back but finds missing constructors on the server. They both have problems that I need to get around. So in this case, I need to ensure that the SOAP message to the server is correct in the first place, to get any response. First question is Am I passing the input parameters correctly? How do I specify that I am passing a User defined bean called a Customer? This may ensure that I send a proper SOAP Message out to get a proper response. The error message that it was reporting was an indication that arg2, Could not be deserialized, but because nothing was coming back, it could not serialize. I would appreciate an answer. Regards Sagar -----Original Message----- From: Mark Malinoski [mailto:[EMAIL PROTECTED] Sent: Thursday, September 09, 2004 10:38 AM To: [EMAIL PROTECTED] Subject: RE: Could not find deserializer Sagar, We are not doing ours in Arguments, but in headers, but I think if you change your code to look something like this it might work: public static Customer getCustomer(String name, String authentication, Customer cust) { Customer ret = null; try { String endpoint = " http://localhost/WebServices/services/PmfCustomerClientAgent"; Service service = new Service(); Call call = (Call) service.createCall(); call.setTargetEndpointAddress( new java.net.URL(endpoint) ); call.setOperationName( "getCommonObject" ); call.addParameter( "arg0", XMLType.XSD_STRING, ParameterMode.IN); call.addParameter( "arg1", XMLType.XSD_STRING, ParameterMode.IN); call.addParameter( "arg2", XMLType.XSD_ANYTYPE,ParameterMode.INOUT ); QName qn = new QName(" http://com.chordiant.customer.businessClasses","Customer"); call.registerTypeMapping(Customer.class, qn, new BeanSerializerFactory(Customer.class, qn), new BeanDeserializerFactory(Customer.class, qn)); call.setReturnType(qn); System.out.println(" invoking getCustomer" ); ret = (Customer) call.invoke( new Object[] { name, authentication, cust} ); } catch (Exception e) { System.err.println("Exception occured in the invoke getCustomer method"); System.err.println(e.toString()); } } I can't really test this, but I think that should work. By setting the return type to the QName for your class it should know how to deserialize when it returns from the client. Let me know how it goes. Mark "Sagar Pidaparthi" <Sagar.Pidaparthi To @chordiant.com> <[EMAIL PROTECTED]> cc 09/09/04 01:21 PM Subject RE: Could not find deserializer Please respond to [EMAIL PROTECTED] he.org Mark, Given below are my imports. They look similar to yours. import javax.xml.rpc.ParameterMode; import org.apache.axis.client.Call; import org.apache.axis.client.Service; import org.apache.axis.encoding.XMLType; import javax.xml.namespace.QName; import org.apache.axis.encoding.ser.BeanDeserializerFactory; import org.apache.axis.encoding.ser.BeanSerializerFactory; given blow is my calling sequence. Can you comment on my passing of parameters. Thanks Sagar public static Customer getCustomer(String name, String authentication, Customer cust) { Customer ret = null; try { String endpoint = "http://localhost/WebServices/services/PmfCustomerClientAgent"; Service service = new Service(); Call call = (Call) service.createCall(); call.setTargetEndpointAddress( new java.net.URL(endpoint) ); call.setOperationName( "getCommonObject" ); call.addParameter( "arg0", XMLType.XSD_STRING, ParameterMode.IN ); call.addParameter( "arg1", XMLType.XSD_STRING, ParameterMode.IN ); call.addParameter( "arg2", XMLType.XSD_ANYTYPE, ParameterMode.INOUT ); call.setReturnType( XMLType.XSD_ANYTYPE ); System.out.println(" invoking getCustomer" ); QName qn = new QName("http://com.chordiant.customer.businessClasses","Customer"); call.registerTypeMapping(Customer.class,qn, new BeanSerializerFactory(Customer.class, qn), new BeanDeserializerFactory(Customer.class, qn)); ret = (Customer) call.invoke( new Object[] { name, authentication, cust} ); } catch (Exception e) { System.err.println("Exception occured in the invoke getCustomer method "); System.err.println(e.toString()); } return ret; } -----Original Message----- From: Mark Malinoski [mailto:[EMAIL PROTECTED] Sent: Thursday, September 09, 2004 9:54 AM To: [EMAIL PROTECTED] Subject: RE: Could not find deserializer Sagar, I don't see your imports in your e-mail. Here are all of my imports in my BindingStub.java file. import com.datatransportstandard.www.utils.DTSRouting; import javax.xml.namespace.QName; import javax.xml.soap.SOAPException; import org.apache.axis.encoding.ser.BeanDeserializerFactory; import org.apache.axis.encoding.ser.BeanSerializerFactory; import org.apache.axis.message.SOAPEnvelope; import org.apache.axis.message.SOAPHeaderElement; The key for the serialization/deserialization is the registerTypeMapping call. Without that the axis engine does not know what to object to call to serialize and deserialize the object. The QName object plays a role also. Look at your return SOAP packet in TCPMON to determine how to instantiate the QName object on the client side. Mark "Sagar Pidaparthi" <Sagar.Pidaparthi To @chordiant.com> <[EMAIL PROTECTED]> cc 09/09/04 12:39 PM Subject RE: Could not find deserializer Please respond to [EMAIL PROTECTED] he.org Thanks. However, it still gives me problems. Here are my importd for this program, can you send me your equivalents for these. Thanks once again. very much appreciate your help. Regards sagar -----Original Message----- From: Mark Malinoski [mailto:[EMAIL PROTECTED] Sent: Thursday, September 09, 2004 9:29 AM To: [EMAIL PROTECTED] Subject: RE: Could not find deserializer Sagar, I'm using 1.1. I'm using BeanSerializationFactory in client code. On the service side I'm using the <beanMapping> element in my wsdd. Here are my imports: import com.datatransportstandard.www.utils.DTSRouting; // My class that I send both directions. import javax.xml.namespace.QName; import org.apache.axis.encoding.ser.BeanDeserializerFactory; import org.apache.axis.encoding.ser.BeanSerializerFactory; One other thing...my DTSRouting class implements java.io.Serializable; Good Luck, Mark "Sagar Pidaparthi" <Sagar.Pidaparthi To @chordiant.com> <[EMAIL PROTECTED]> cc 09/09/04 12:22 PM Subject RE: Could not find deserializer Please respond to [EMAIL PROTECTED] he.org Mark, Thanks for your message. Can you please send me your import statements. Are you using 1.1 or 1.2 beta? I had to switch to 1.1 due to problems elsewhere in our product. In 1.1 Do we use BeanSerializerFactory, or Serializer Factory? Regards Sagar -----Original Message----- From: Mark Malinoski [mailto:[EMAIL PROTECTED] Sent: Thursday, September 09, 2004 9:07 AM To: [EMAIL PROTECTED] Subject: Re: Could not find deserializer Sagar, I have not done the type mappping in the wsdd on the client side, but I have done it in code. Here is the snippet from my code in the BindingStub: QName qn = new QName("http://www.datatransportstandard.com", "DTSRouting"); _call.registerTypeMapping(DTSRouting.class, qn, new BeanSerializerFactory(DTSRouting. class, qn), new BeanDeserializerFactory(DTSRouting. class, qn)); This needs to go before the invoke. This works because I can send a DTSRounting object in both directions. Hope this helps, Mark "Sagar Pidaparthi" <Sagar.Pidaparthi To @chordiant.com> <[EMAIL PROTECTED]> cc 09/09/04 11:54 AM Subject Could not find deserializer Please respond to [EMAIL PROTECTED] he.org Hi, I get the following exception on the client. I see the response coming back on the SOAPMonitor, but the client is unable to deserialize the message. Is there something missing on my client side that is making it difficult for the client to deserialize the object? This is happening both on Axis 1.1 and axis 1.2. Exception occured in the invoke getCustomer method org.xml.sax.SAXException: Deserializing parameter 'arg2': could not find deserializer for type {urn:com.chordiant.customer.businessClasses}Customer My wsdd contains the following line along with others of the same kind. <typeMapping deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" qname="ns8:Customer" serializer="org.apache.axis.encoding.ser.BeanSerializerFactory" type="java:com.chordiant.customer.businessClasses.Customer" xmlns:ns8="http://businessClasses.customer.chordiant.com"/> I would appreciate any help. Thanks Sagar