I'm trying to use a specific class for parameter in a soap call using Axis. I followed the instruction about how to serialize/deserialize for Axis Soap call (http://cvs.apache.org/viewcvs.cgi/~checkout~/xml-axis/java/docs/user-guide.html)
I want to use a Vector of objetcs. When I run the client of the Webservice I get the following exception :
===============================================================================================
org.xml.sax.SAXException: No deserializer for {mkbNameSpace}local
at org.apache.axis.encoding.DeserializerImpl.onStartElement(DeserializerImpl.java:447)
at org.apache.axis.encoding.DeserializerImpl.startElement(DeserializerImpl.java:394)
at org.apache.axis.encoding.DeserializationContextImpl.startElement(DeserializationContextImpl.java:906)
at org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:200)
at org.apache.axis.message.MessageElement.publishToHandler(MessageElement.java:684)
at org.apache.axis.encoding.DeserializerImpl.startElement(DeserializerImpl.java:370)
at org.apache.axis.encoding.DeserializationContextImpl.startElement(DeserializationContextImpl.java:906)
at org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:200)
at org.apache.axis.message.MessageElement.publishToHandler(MessageElement.java:684)
at org.apache.axis.encoding.DeserializerImpl.startElement(DeserializerImpl.java:370)
at org.apache.axis.encoding.DeserializationContextImpl.startElement(DeserializationContextImpl.java:906)
at org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:200)
at org.apache.axis.message.MessageElement.publishToHandler(MessageElement.java:684)
at org.apache.axis.message.RPCElement.deserialize(RPCElement.java:241)
at org.apache.axis.message.RPCElement.getParams(RPCElement.java:265)
at org.apache.axis.client.Call.invoke(Call.java:1871)
at org.apache.axis.client.Call.invoke(Call.java:1777)
at org.apache.axis.client.Call.invoke(Call.java:1315)
at PClient.main(PClient.java:35)
[ERROR] Call - -Exception: <org.xml.sax.SAXException: No deserializer for {mkbNameSpace}local>
org.xml.sax.SAXException: No deserializer for {mkbNameSpace}local
===============================================================================================
Here is the deployement file :
<deployment xmlns="http://xml.apache.org/axis/wsdd/"
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<service name="PersonneWebService" provider="java:RPC">
<parameter name="className" value="PersonneService"/>
<parameter name="allowedMethods" value="getPersonnes"/>
</service>
<beanMapping qname="ns:local" xmlns:ns="mkbNameSpace" languageSpecificType="java:Personne"/>
</deployment>
=============================================================================================== Here is the source of the Personne Java class :
public class Personne
{
private String nom;
private String prenom;
private int age;
public Personne()
{
this("Green","Hulk",28);
}
public Personne(String nom, String prenom, int age)
{
this.nom=nom;
this.prenom=prenom;
this.age=age;
}
public String getNom()
{
return(nom);
} public String getPrenom()
{
return(prenom);
} public int getAge()
{
return(age);
}
public void setNom(String nom)
{
this.nom=nom;
} public void setPrenom(String prenom)
{
this.prenom=prenom;
} public void setAge(int age)
{
this.age=age;
}
}
=============================================================Here is the Service source :
import java.util.Vector;
public class PersonneService
{ public Vector getPersonnes()
{
Vector
personnes=new Vector();
personnes.add(new Personne());
personnes.add(new Personne("Sawyer","Tom",13));
return(personnes);
}
}=============================================================
Here is the client code :import java.util.*; import org.apache.axis.client.Call; import org.apache.axis.client.Service; import javax.xml.namespace.QName;
public class PClient
{
public static void main(String [] args)
{
Vector ret=null;
try
{
final String endpoint = "http://orion:8080/axis/services/PersonneWebService";
org.apache.axis.client.Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress( new java.net.URL(endpoint) );
call.setOperationName(new QName("urn:PersonneWebService ", "getPersonnes") );
System.out.println("Invoking Webservice ...");
ret = (Vector) call.invoke( new Object[] {} );
System.out.println("Resultat\n'" + ret + "'");
}
catch (Exception e)
{
System.err.println(e.toString());
}
}
} =======================================================================
Any idea ?
Best regards.
Carl.
