You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by Ben Souther <bs...@fwdco.com> on 2002/08/13 15:38:03 UTC
BeanSerializer
Can anyone point me to an example of a Java client that calls a webservice who's return type is a JavaBean?
I've looked at samples/userguide/example5/BeanService.java. in the samples section of Axis. This example demonstrates how to send a bean as an argument but doesn't show how to recieve one as a returnType.
Here is my attempt:
try{
String endpoint = "http://localhost:8080/axis/services/EmployerService";
Service service = new Service();
System.out.println("service Created");
Call call = (Call)service.createCall();
System.out.println("Call Created");
call.setTargetEndpointAddress(new java.net.URL(endpoint));
QName qn = new QName("EmployerService", "getEmployerData");
call.setOperationName(qn);
System.out.println("ready to invoke call....");
EmployerBean employerBean = (EmployerBean)call.invoke(new Object[]{"1"});
System.out.println("Call invoked...");
if(employerBean == null)
System.out.println("EmployerBean is null");
String employerName = employerBean.getEmployerName();
System.out.println("Name: " + employerName);
}catch(Exception e){
System.out.println("Error: " + e.toString());
}
}
Here is the error that I am fighting with:
- Exception:
org.xml.sax.SAXException: Deserializing parameter 'getEmployerDataReturn': could not find deserializer for type {com.fwdco.shared}EmployerBean
at org.apache.axis.message.RPCHandler.onStartChild(RPCHandler.java:231)
at org.apache.axis.encoding.DeserializationContextImpl.startElement(DeserializationContextImpl.java:857)
at org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:199)
at org.apache.axis.message.MessageElement.publishToHandler(MessageElement.java:644)
at org.apache.axis.message.RPCElement.deserialize(RPCElement.java:235)
at org.apache.axis.message.RPCElement.getParams(RPCElement.java:259)
at org.apache.axis.client.Call.invoke(Call.java:1806)
at org.apache.axis.client.Call.invoke(Call.java:1711)
at org.apache.axis.client.Call.invoke(Call.java:1251)
at ReadEmployer.main(ReadEmployer.java:35)
Error: org.xml.sax.SAXException: Deserializing parameter 'getEmployerDataReturn': could not find deserializer for type {com.fwdco.shared}EmployerBean
Here is my WSDD.
I'm using Tomcat 4.0.3
Thank you.
Re: BeanSerializer
Posted by Ben Souther <bs...@fwdco.com>.
----- Original Message -----
From: Ben Souther
To: axis-user@xml.apache.org
Sent: Tuesday, August 13, 2002 9:38 AM
Subject: BeanSerializer
Can anyone point me to an example of a Java client that calls a webservice who's return type is a JavaBean?
I've looked at samples/userguide/example5/BeanService.java. in the samples section of Axis. This example demonstrates how to send a bean as an argument but doesn't show how to recieve one as a returnType.
Here is my attempt:
try{
String endpoint = "http://localhost:8080/axis/services/EmployerService";
Service service = new Service();
System.out.println("service Created");
Call call = (Call)service.createCall();
System.out.println("Call Created");
call.setTargetEndpointAddress(new java.net.URL(endpoint));
QName qn = new QName("EmployerService", "getEmployerData");
call.setOperationName(qn);
System.out.println("ready to invoke call....");
EmployerBean employerBean = (EmployerBean)call.invoke(new Object[]{"1"});
System.out.println("Call invoked...");
if(employerBean == null)
System.out.println("EmployerBean is null");
String employerName = employerBean.getEmployerName();
System.out.println("Name: " + employerName);
}catch(Exception e){
System.out.println("Error: " + e.toString());
}
}
Here is the error that I am fighting with:
- Exception:
org.xml.sax.SAXException: Deserializing parameter 'getEmployerDataReturn': could not find deserializer for type {com.fwdco.shared}EmployerBean
at org.apache.axis.message.RPCHandler.onStartChild(RPCHandler.java:231)
at org.apache.axis.encoding.DeserializationContextImpl.startElement(DeserializationContextImpl.java:857)
at org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:199)
at org.apache.axis.message.MessageElement.publishToHandler(MessageElement.java:644)
at org.apache.axis.message.RPCElement.deserialize(RPCElement.java:235)
at org.apache.axis.message.RPCElement.getParams(RPCElement.java:259)
at org.apache.axis.client.Call.invoke(Call.java:1806)
at org.apache.axis.client.Call.invoke(Call.java:1711)
at org.apache.axis.client.Call.invoke(Call.java:1251)
at ReadEmployer.main(ReadEmployer.java:35)
Error: org.xml.sax.SAXException: Deserializing parameter 'getEmployerDataReturn': could not find deserializer for type {com.fwdco.shared}EmployerBean
Here is my WSDD:
<deployment xmlns="http://xml.apache.org/axis/wsdd/"
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<service name="EmployerService" provider="java:RPC">
<parameter name="className" value="EmployerService"/>
<parameter name="allowedMethods" value="*"/>
<beanMapping qname="ns1:EmployerBean" xmlns:ns1="com.fwdco.shared"
languageSpecificType="java:com.fwdco.shared.EmployerBean" />
</service>
</deployment>
I'm using Tomcat 4.0.3
Thank you.