WebService soll ein String[][] übertragen

Vatar

Erfahrenes Mitglied
Hi.
Ich hab diese Frage schon in einem anderen Forum gestellt, aber da konnte mir noch niemand helfen.

Ich möchte in einem WebService ein String[][] übertragen. Im WSAD (WebSphere Application Developer) muss ich dafür nur eine Bean erstellen, welche die get-Methode enthällt. Daraus lasse ich mir dann ein WSDL generieren und kann dieses dan testen. Da funktioniert alles wunderbar und ich bekomme die erwarteten Ergebnisse.

Aus dem WSDL kann ich mir dann einen Client generieren lassen. Wenn ich dieses dann allerdings ausführe erhalte ich eine ArrayStoreException. Diese wird in einer automatisch generierten Klasse geworfen (und zwar im catch-Block)
Java:
try {
            return (de.fh.restaurant.ws.ArrayOf_Xsd_String[]) ((com.ibm.ws.webservices.engine.xmlsoap.ext.ParamValue) _resp.get(0)).getValue();
        } catch (java.lang.Exception _exception) {
            return (de.fh.restaurant.ws.ArrayOf_Xsd_String[]) com.ibm.ws.webservices.engine.utils.JavaUtils.convert(((com.ibm.ws.webservices.engine.xmlsoap.ext.ParamValue) _resp.get(0)).getValue(), de.fh.restaurant.ws.ArrayOf_Xsd_String[].class);
        }

Will ich nur ein einfaches String[] übertragen funktioniert der Client.

Kennt sich damt jemand aus? Is dringend da morgen Abgabe vom Projekt

Thx
 
Hallo!

Das Transportieren von mehrdimensionalen Feldern bereitet oftmals Probleme...
Siehe hier:
http://forum.java.sun.com/thread.jspa?forumID=331&threadID=615738

Du musst wohl wie hier angegeben:
http://aspn.activestate.com/ASPN/Mail/Message/Apache-Soap-Dev/1733604
entsprechende Serializer/Deserializer registrieren
Auf die Nase fällt das ganze wohl innerhalb von com.ibm.ws.webservices.engine.utils.JavaUtils.convert. Schau doch mal, was dort passiert. Eine ArrayStoreException bekommt man nur dann, wenn man versucht elemente in einem Array abzuspeichern, deren Typen zueinander inkompatibel sind (keine Zuweisung möglich)
Bsp.:
Code:
Object[] data = new String[1];
data[0] = new Object(); //ArrayStoreException

Als Workaround könntest du ja String[] statt String[][] übertragen und die einzelnen Elemente in CSV Style verschicken und dann auf dem Client wieder in die einzelnen Werte aufsplitten.

Gruß Tom
 
Thomas Darimont hat gesagt.:
Als Workaround könntest du ja String[] statt String[][] übertragen und die einzelnen Elemente in CSV Style verschicken und dann auf dem Client wieder in die einzelnen Werte aufsplitten.

Gruß Tom

Das is ne gute idee. Wird zwar etwas umständlicher da Java 1.3 noch keine split-Methode hat aber das krieg ich schon hin.

Danke Danke Danke
 

Neue Beiträge

Zurück