Hvilken serializer skal jeg vælge?
Hej alleJeg har et problem som ligner http://eksperten.dk/spm/440336
Jeg har nedenstående simple klasse i mit \webapps\axis\WEB-INF\classes directory:
public class hecaAdvice {
private String advice_description;
public hecaAdvice() {
advice_description = "No advice available";
}
public hecaAdvice(String advice_description) {
this.advice_description = advice_description;
}
public String getAdvice() {
return advice_description;
}
public String toString() {
return "advice description: " + this.advice_description;
}
}
Jeg har så en webservice (hecaWS_object) som kalder ovenstående constructor - hecaAdvice(String advice_description) - og returnerer instansen:
public hecaAdvice search(String languagePrefix, int patient_id, int emergency_id) {
...
String advice_description = "Do this...";
ha = new hecaAdvice(advice_description);
return ha;
}
Jeg deployer herefter webservicen med nedenstående WSDD:
<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<service name="hecaWS_object" provider="java:RPC">
<parameter name="className" value="hecaWS_object" />
<parameter name="allowedMethods" value="*" />
<parameter name="scope" value="application" />
<typeMapping xmlns:ns="http://soapinterop.org/xsd" qname="ns:hecaAdvice" type="java:hecaAdvice" serializer="org.apache.axis.encoding.ser.BeanSerializerFactory" deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
</service>
</deployment>
På min klient forsøger jeg så at kalde metoden i min webservice med følgende kode (ksoap2 i j2me):
Thread t = new Thread() {
public void run() {
try {
//For test purpose only
String activeLanguagePrefix = "dk";
Integer activePatientID = new Integer(1);
Integer activeEmergencyID = new Integer(1);
SoapObject rpc = new SoapObject("urn:hecaWS_object", "search");
rpc.addProperty("languagePrefix", activeLanguagePrefix);
rpc.addProperty("patient_id", activePatientID);
rpc.addProperty("emergency_id", activeEmergencyID);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER10);
envelope.bodyOut = rpc;
HttpTransport transport = new HttpTransport("http://[ip]/axis/services/hecaWS_object");
transport.debug = true;
transport.call("search", envelope);
System.out.println("res: " + envelope.getResult().toString());
}
catch (IOException ioe) {
ioe.printStackTrace();
}
catch (XmlPullParserException xppe) {
xppe.printStackTrace();
}
}
};
t.start();
[ip] er naturligvis erstattet med en rigtig IP. Problemet er bare, at der sker absolut ingenting...ingen exceptions eller fejlbeskeder hverken i Tomcat prompten, database prompten eller i J2ME Wireless Toolkit. Er det fordi jeg ikke skal bruge BeanSerializerFactory men en anden? På forhånd tak!
