Unter Verwendung von komplexen Datentypen aus dem Java-Axis-webservice
Ich bin derzeit an der Entwicklung einer Java-Anwendung, die Griffe einen SOAP webservice.
Liegt das problem, nachdem ich Parsen der WSDL - [die Parser Objekt von Apache Axis macht es für mich], und ich erstellen Sie den Aufruf.
Wenn ich versuche es aufzurufen, ich haben, um einen Object[] zum zuweisen der Parameter [übernommen von der Aktion der WSDL]. Eine normale Handlung ist einfach, aber wenn ich benutzerdefinierte Datentypen, ich kann es nicht erhalten, füllen Sie es aus für mich. Ich versuche zu pass Object[]{ new Object { }}, aber es weist das erste Feld statt. Ich kann Sie nicht weitergeben es schon verarbeitet, weil es ändert sich den '< >', '--lt --gt', und der server nicht erkannt".
Dies ist ein fragment des WSDL.
<s:element name="FERecuperaQTYRequest"> <s:complexType> <s:sequence> <s:element minOccurs="0" maxOccurs="1" name="argAuth" type="tns:FEAuthRequest" /> </s:sequence> </s:complexType> </s:element> <s:complexType name="FEAuthRequest"> <s:sequence> <s:element minOccurs="0" maxOccurs="1" name="Token" type="s:string" /> <s:element minOccurs="0" maxOccurs="1" name="Sign" type="s:string" /> <s:element minOccurs="1" maxOccurs="1" name="cuit" type="s:long" /> </s:sequence> </s:complexType>
- Und dies ist die lästigen Java-Fragment
QTY = (String) call.invoke (
new Object[]{
new Object[]{
tokenConexion.getToken (),
tokenConexion.getSign (),
tokenConexion.getCUIT ()
}
});
wie definiert in Java-API für die Serializable-Schnittstelle können Sie überschreiben die Art und Weise der Serialisierung durch die Implementierung von private Funktionen writeObject(java.io.ObjectOutputStream) und readObject(java.io.ObjectInputStream)
InformationsquelleAutor Manuel Ferreria | 2008-10-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie sich in etwas wie Spring proxy-Funktionalität? Sie erzählen ein bisschen über den webservice in eine spring config-Datei und alle Ihre client-code zu tun hat ist eine Schnittstelle, die Sie erstellen - es muss nicht einmal wissen, dass es ist ein web-service auf der anderen Seite!
Beispiel Spring config:
Java:
Für benutzerdefinierte Objekte, müssen Sie möglicherweise Unterklasse JaxRpcPortProxyFactoryBean:
Was ich daran Liebe, ist, dass code, der sollte nicht kümmern sich um die Umsetzung der service nicht. Die Prüfung wird zum Kinderspiel, und der zusammenhalt der Klassen ist viel besser.
InformationsquelleAutor Chris Marasti-Georg
Wir haben versucht, verwenden von komplexen Objekten und Achse. Nicht! Wir hatten ein paar Probleme mit Dotnet zu können, erstellen Sie eine richtige Objekt aus der WSDL. Landeten wir nur mit primitives, strings und arrays. Wenn jemand eine gute Methode ist die Verwendung von komplexen Objekten, die ich lieben würde, es zu hören.
InformationsquelleAutor Javamann