ERLEDIGT
NEIN
NEIN
ANTWORTEN
2
2
ZUGRIFFE
621
621
EMPFEHLEN
-
Hallo zusammen,
ich habe ein paar WebServices erstellt, welche einen komplexen eigenen Datentyp an den Requestor als Antwort zurücksenden.
Diesen komplexen Datentyp - nennen wir ihn ReturnedData - habe ich als Bean implementiert und kann ihn daher schön einfach über die BeanSerializerFactory und BeanDeserializerFactory deployen.
Nun wollte ich zusätzlich über einen responseFlow und eine eigene Handler-Klasse den zurückgegebenen Datentyp aber in Abhängigkeit des Requestors mal als komplexen und mal als simplen Datentyp (z.B. nur als String, welcher aus dem komplexen Typ erzeugt wird) zurückgeben lassen.
Zur Veranschaulichung:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
HTTP/1.1 200 OK Content-Type: text/xml;charset=utf-8 Date: Tue, 22 Mar 2005 17:30:50 GMT Server: Apache-Coyote/1.1 Connection: close <?xml version="1.0" encoding="UTF-8"?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/1999/XMLSchema" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"> <soapenv:Body> <ns1:getHelloWorldResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="http://localhost:8082"> <getHelloWorldReturn href="#id0"/> </ns1:getHelloWorldResponse> <multiRef id="id0" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns2:ReturnedData" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns2="http://webServiceTester"> <internalFunctionHandler xsi:type="soapenc:string">0</internalFunctionHandler> <returnCode xsi:type="soapenc:string"></returnCode> <returnCodeClass xsi:type="soapenc:string">0</returnCodeClass> <returnDS xsi:type="soapenc:Array" xsi:null="true" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"/> <returnMsg xsi:type="soapenc:string">returnMsg!</returnMsg> <returnMsgLong xsi:type="soapenc:string">returnMsgLong!</returnMsgLong> <returnResult xsi:type="soapenc:string"></returnResult> </multiRef> </soapenv:Body> </soapenv:Envelope>
ist die Rückgabe des komplexen Datentypes.
Im besagten responseFlow-Handler wollte ich gegebenenfalls nun z.B. den Wert der returnMsg auslesen und Stelle des komplexen ReturnedData nur einen ReturnedString zurückgeben. Und dies ist derzeit mein Problem: Ich versuche den SOAPBody zu deserialisieren und neu aufzubauen. Aber schon beim deserialisieren habe ich meine Probleme. So komme ich zum Beispiel schon gar nicht an die Values der Elemente ran.
ist ein (misslungener) Versuch.Code :1 2 3 4 5 6 7 8 9 10 11 12
Message outMsg = msgContext.getResponseMessage(); SOAPBody sb = outMsg.getSOAPEnvelope().getBody(); Iterator it = sb.getChildElements(); String returnValue = ""; while (it.hasNext()) { javax.xml.soap.SOAPElement sbe = (javax.xml.soap.SOAPElement)it.next(); Iterator it2 = sbe.getChildElements(); while (it2.hasNext()) { javax.xml.soap.SOAPElement sbee = (javax.xml.soap.SOAPElement)it2.next(); returnValue += sbee.getValue(); } }
Hat jemand einen Tipp?
Danke
yrkoon
-
mmh... ich weiß nicht, ob ich dein problem so recht verstehe...
aber warum stellst du nicht einfach zwei methoden via soap zur verfügung?
eine, die den simplen objekttyp zurückgibt, und eine für den komplexen
returnwert
yves030
-
hallo yves,
du hast natürlich recht. dies wäre die einfache und recht schnell zu implementierende Lösung. Auf der anderen Seite hätte dies den Nachteil, dass ich jeden WebService n mal implementieren müsste, je nachdem welche Anforderung der Requestor an die WebService-Response hat (okay, eigentlich gibt der WebService die Response vor
, aber Ausnahmen bestätigen die Regel).
D.h. aus meiner Sicht wäre es ein Zeichen von Flexibilität und Komfort, wenn ich eine Methode habe, deren Response ich einfach in Abhängigkeit des Requestors anpasse.
Grüße
yrkoon
Ähnliche Themen
-
Deserialisieren mit einem anderen Assembly-Name
Von Taigatrommel im Forum .NET Application und Service DesignAntworten: 0Letzter Beitrag: 05.01.10, 19:55 -
Deserialisieren von nicht bekannten Objekten
Von h3xagon im Forum JavaAntworten: 3Letzter Beitrag: 08.05.09, 00:26 -
JAX-WS - AXIS2 DataHandler Deserialisieren ?!
Von tutorials007 im Forum Enterprise Java (JEE, J2EE, Spring & Co.)Antworten: 0Letzter Beitrag: 24.10.08, 13:26 -
JAR Archiv ent-/verpacken
Von mp89 im Forum JavaAntworten: 0Letzter Beitrag: 01.03.08, 17:16 -
mehrere Objekte deserialisieren
Von chickenwings im Forum JavaAntworten: 2Letzter Beitrag: 08.05.07, 11:46





Zitieren
Login





