2012-03-26 2 views
0

Die Frage ist ziemlich einfach, also hoffe ich, dass ich glücklich wäre, klar genug zu sein, um zu vermeiden, Codebeispiel dafür zu schaffen. Wir verwenden Axis2 (1.5.1, um genau zu sein), um Java-Client-Code und Server-Stubs über wsdl2java mit unseren handgefertigten WSDL/XSD-Dateien zu erstellen. Der Dienst wird im Dokumentformat generiert, und wird der ADB-Beans-Serialisierungsstack verwendet.axis2: Vererbung für codegenerierte Anfrage/Antwort-Objekte verwenden

Unser neuer Webservice hat einige allgemeine Attribute in allen Methoden, die wir erstellen sollen. Sagen wir mal, jede Anfrage muss mit einem accessToken, einer anderenPartyID und anderen ähnlichen Eigenschaften versehen werden.

Ich konnte Vererbung in Schemas verwenden, also erweitern Request/Response-Typen häufig complexType und ich muss mich nicht wiederholen, während ich Schemas/WSDL für den Webservice erstelle. Aber wenn ich versuche, die Implementierung zu codieren, sehe ich (zu meiner größten Frustration), dass alle codegenerierten Request/Response-Objekte java.lang.Object erben und es keine gemeinsame Oberklasse mit den gemeinsamen Eigenschaften gibt.

Es wäre ziemlich nett, solch eine Klasse zu haben, so dass Code, der diese allgemeinen Eigenschaften behandelt, generisch bleibt und ich keine Spiegelung und andere schmutzige Tricks verwenden muss, um die Affencodierung zu vermeiden.

Mein aktueller Verdacht ist, dass AXIS Vererbung über Request/Response-Methoden der Methode nicht unterstützt, während es für Parametertypen unterstützt. Bitte teilen Sie Ihre Erfahrungen in dieser Angelegenheit.

Wenn Sie eine definitive/genaue Antwort mit einem Link zur Dokumentation/Quellen von AXIS haben, wird dies einfach großartig.

Vielen Dank im Voraus, Anton

Antwort

1

Dies ist keine direkte Antwort auf Ihre Frage, aber was Sie tun, ist falsch.
Vererbung ist ein objektorientierter Begriff, und Sie sollten keine Webdienste bereitstellen, die OO-spezifische Mechanismen erfassen. Dies widerspricht dem Konzept des serviceorientierten Ansatzes.

Für den Fall, dass Ihr Verdacht sich als richtig herausstellt, ist dies in Axis kein Problem, sondern Ihr Design.
Ich würde vorschlagen, dies in der Axis2-Unterstützung direkt zu fragen.

+0

Ja, guter Punkt, aber die Webservice-Spezifikation bittet einfach um etwas Wiederverwendung. :) Was die Unterstützung betrifft - ich habe gerade vor ein paar Augenblicken getan: https://issues.apache.org/jira/browse/AXIS2-5277 –