Salve ho una classe che contiene il mio servizio web:
public class SimulatorServer {
private Map<String,Ab> sims = new HashMap<String,Ab>();
public void addSimulator(String simid, Ab sim) throws InstantiationException, IllegalAccessException{
sims.put(simid, sim);
}
.....
}
Quindi quando chiamo il metodo addSimulator devo passargli un oggetto Ab:
public abstract class Ab implements Serializable {
private String istance;
public String getIstance() {
return istance;
}
public void setIstance(String i) {
istance=i;
}
}
Questo è il mio client che invia un oggetto Ab:
public static void main(String[] args) throws MalformedURLException, RemoteException, ServiceException {
String address = "http://localhost:8080/SINPL/services/SimulatorServer";
URL endPointWS = new URL(address);
Service service = new Service();
Call call =(Call)service.createCall();
call.removeAllParameters();
call.setTargetEndpointAddress(endPointWS);
call.addParameter("simid", XMLType.XSD_STRING, ParameterMode.IN);
QName qname = new QName( "urn:SimulatorServer", "Ab" );
call.registerTypeMapping(Ab.class, qname,
new org.apache.axis.encoding.ser.BeanSerializerFactory (Ab.class, qname),
new org.apache.axis.encoding.ser.BeanDeserializerFacto ry(Ab.class, qname));
call.addParameter("sim", qname, ParameterMode.IN);
call.setOperationName("addSimulator");
call.setReturnType(XMLType.AXIS_VOID);
Ab dd = new BufferServant();
dd.setIstance("lll");
call.invoke(new Object[]{"a",dd});
}
Invio un istanza di una sottocalsse di Ab che è BufferServant e mi da errore:
Deserializing parameter 'sim': could not find deserializer for type {urn:SimulatorServer}Ab
Non sapete come si passano parametri che non siano tipi standard ? Grazie.