Avatar billede boomshanka Nybegynder
02. februar 2005 - 17:45 Der er 1 løsning

Hvilken serializer skal jeg vælge?

Hej alle

Jeg 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!
Avatar billede boomshanka Nybegynder
02. februar 2005 - 18:33 #1
Ahem...det skulle vist bare have et dask - ligesom man gør med gamle fjernsyn. Jeg kan ikke helt se hvad der skete, men nu virker det ihvertfald
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester