Avatar billede hakio Novice
03. maj 2005 - 21:16 Der er 15 kommentarer og
1 løsning

Alternativ til at sende ArrayList via SOAP Web Service

Eftersom jeg har fundet ud af (på den hårde måde :o) ) at der ikke findes nogen Serializer til at serialize en ArrayList skal jeg finde ud af hvordan jeg så gør. (og mener ikke det at skrive min egen serializer er løsningen..!!)
Min tanke var at jeg ville sende en ArrayList med objekter af klassen 'minklasse' fra serveren tilbage til klienten, når klienten laver et bestemt kald til serveren.

Men nu jeg ikke kan sende en ArrayList med alle mine objekter - hvordan bør man så gøre?
Avatar billede arne_v Ekspert
03. maj 2005 - 21:19 #1
du skal sende et normalt array
Avatar billede arne_v Ekspert
03. maj 2005 - 21:22 #2
Kender du det lille fif:

DinKlasse[] a = new DinKlasse[dinliste.size()];
dinliste.toArray(a);

?
Avatar billede arne_v Ekspert
03. maj 2005 - 21:23 #3
Jeg mener nu iøvrigt godt at du kan få serialiseret en ArrayList - men men men
hvad skal et .NET program eller et PHP program gøre ved en java.util.ArrayList ????
Avatar billede hakio Novice
03. maj 2005 - 21:59 #4
Ok - det fif kendete jeg ikke... og forstår ik 100% hvordan jeg skal udnytte det.
Min kode er:

public ?? getDefectList(String todo) {
        System.out.println("recieved from client:" + todo);
        DataDB db = new DataDB();
        ArrayList arraylist = db.getDefect();

        Defect[] a = new Defect[arraylist.size()];
        arraylist.toArray();

        return ??;
    }

Det er altså denne metode som klienten kalder på min server, og jeg skal have sendt min liste tilbage til klienten så data kan vises i en tabel. Hvad skal der stå i min huller (??) ovenfor ?
Avatar billede arne_v Ekspert
03. maj 2005 - 22:00 #5
Prøv:

public Defect[] getDefectList(String todo) {
        System.out.println("recieved from client:" + todo);
        DataDB db = new DataDB();
        ArrayList arraylist = db.getDefect();

        Defect[] a = new Defect[arraylist.size()];
        arraylist.toArray(a);
        return a;
    }
Avatar billede hakio Novice
03. maj 2005 - 22:04 #6
Ah ja selvfølgelig - hvorfor kunne jeg dog ikke se det...
Tak - må lige prøve det af i morgen.
Avatar billede mikkelbm Nybegynder
03. maj 2005 - 22:52 #7
Man kan forkorte det endnu mere :D

return (Defect[])arraylist.toArray (new Defect[0]);
Avatar billede hakio Novice
04. maj 2005 - 11:15 #8
ja - personligt har jeg dog bedre overblik ved at dele del lidt op :)

Jeg har dog stadig et problem, da jeg får fejlen :
"The call failed:
Fault Code  = SOAP-ENV:Server
Fault String = java.lang.IllegalArgumentException: No mapping found for 'ambiinfo.dataobjects.DefectBean' using encoding style 'http://schemas.xmlsoap.org/soap/encoding/'."

Min Defect er nu omdøbt til DefectBean (jeg forstår ikke bean's helt, og hvornår man bør bruge dem), da jeg har læst på nettet at man kan bruge en Bean til dette - altså sende den via server/klient WS. Min DefectBean implementerer serializable.
Men hvordan undgår jeg den der mapping fejl og får systemet til at genkende min klasse?
Eller måske jeg ikke bør bruge selv-oprettede klasser og sende disse vi fra server til klient?
Avatar billede arne_v Ekspert
04. maj 2005 - 11:49 #9
Måske skal du angive bean serializer og array serializer i WSDD filen ??

(se eksempel i http://www.eksperten.dk/artikler/159)
Avatar billede hakio Novice
04. maj 2005 - 18:06 #10
tak - har fået løst mit problem. venligst svar
Avatar billede arne_v Ekspert
04. maj 2005 - 18:07 #11
ok
Avatar billede arne_v Ekspert
04. maj 2005 - 18:07 #12
var det serializer i WSDD ?
Avatar billede hakio Novice
04. maj 2005 - 18:24 #13
well... jeg gik over til at bruge XML. Blev nødt til at bruge noget platforms-uafhængigt, så det gik ikke at binde mig til en Java-klasse.
Avatar billede arne_v Ekspert
04. maj 2005 - 18:31 #14
Du kan sagtens bruge ovenstående i andet end Java !

Den WSDL fil der genereres indeholder en beskrivelse af Defect klassern. Og hvis
det er en pæn data klasse, så kan .NET wsdl tool generere en nydelig C# klasse
med samme navn og attributter som kan returneres fra den stub der også genereres.
Avatar billede hakio Novice
04. maj 2005 - 18:42 #15
hmm... var jeg ikke klar over. Er ikke SÅ meget inde i alt det her. Men XML synesjeg virker ganske fornuftigt at bruge også.
Avatar billede arne_v Ekspert
04. maj 2005 - 18:56 #16
En web service sender jo også XML. Med et web service toolkit er man bare
fri for selv at skrive og læse det.
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