8 Stimmen

"java form generator" aus einer gegebenen wsdl-Datei

Ich versuche, einen Formulargenerator in Java zu entwickeln, in dem Benutzer in der Lage sein werden, eine WSDL-Url zu schreiben und die Liste der Operationen, die vom Webdienst unterstützt werden, in einer ComboBox zu erhalten. Wenn der Benutzer eines der Elemente in der ComboBox auswählt, sieht er Formularfelder, die mit der WSDL-Url generiert wurden.

Ich bin ein Neuling in Web-Service-Technologien, nach der Suche über Web-Service-Parser im Netz entschied ich mich für die Verwendung von Achse-Bibliothek. Aber ich weiß wirklich nicht, welcher Teil des Wsdl-Dokuments sollte ich parsen

Ich versuche nicht, Java-Klassen des Webdienstes zu erstellen, ich muss Formularfelder für jede WSDL-Url generieren.

Hier ist zum Beispiel ein Webdienst, der 9 Operationen bietet

http://services.aonaware.com/DictService/DictService.asmx

und die wsdl-Datei ist hier:

http://services.aonaware.com/DictService/DictService.asmx?WSDL

Ich muss wissen, welche Teile der wsdl-Datei geparst werden sollten, jede Hilfe wäre willkommen.

8voto

Pascal Thivent Punkte 548176

Um einen Einstieg in WSDL zu finden und zu verstehen, wie ein solches Dokument aufgebaut ist, sollten Sie vielleicht einen Blick auf einen Artikel werfen wie WSDL verstehen oder die WSDL-Tutorial oder jede andere Ressource für Anfänger, die Sie bei Google finden.

Um Ihre Frage in vereinfachter Form zu beantworten, müssen Sie mit der portType Element, das enthält:

Ein abstrakter Satz von Operationen, die von einem oder mehreren Endpunkten unterstützt werden (allgemein als Schnittstelle bekannt); Operationen werden durch einen Austausch von Nachrichten definiert

Zum Beispiel in Ihrem Fall:

<wsdl:operation name="DictionaryList">
  <wsdl:documentation>Returns a list of available dictionaries</wsdl:documentation>
  <wsdl:input message="tns:DictionaryListSoapIn"/>
  <wsdl:output message="tns:DictionaryListSoapOut"/>
</wsdl:operation>

Und für jede Operation müssen Sie die Eingabe- und Ausgabemeldungen analysieren, eine message sein:

Eine Definition einer abstrakten Nachricht, die aus mehreren Teilen bestehen kann, wobei jeder Teil von einem anderen Typ sein kann.

Hier lautet zum Beispiel die Eingangsmeldung des vorherigen Vorgangs:

<wsdl:message name="DictionaryListSoapIn">
  <wsdl:part name="parameters" element="tns:DictionaryList"/>
</wsdl:message>

Um den Inhalt der Nachricht zu verstehen, sehen Sie sich dann die types :

Ein Container für abstrakte Typdefinitionen, die mit XML Schema definiert werden

Hier ist die DictionaryList Element ist als leerer compleType definiert:

<s:element name="DictionaryList">
  <s:complexType/>
</s:element>

Wie ich bereits sagte, ist dies eine sehr vereinfachte Antwort, da WSDL nicht in vier Absätzen zusammengefasst werden kann und, um ehrlich zu sein, ist das, was Sie vorhaben, wirklich keine triviale Aufgabe. Lassen Sie es mich anders ausdrücken: es wird Blut fließen! Auch wenn diese wenigen Zeilen Ihnen (ein wenig) helfen können, würde ich ein solches Projekt auf keinen Fall von Grund auf neu beginnen, sondern lieber eine bestehende Bibliothek oder ein Tool (wie Xydra oder Eclipse XML-Formular-Generator oder ...), die es erlauben würden, das Rad nicht neu zu erfinden.

Übrigens habe ich bemerkt, dass Sie sich für Axis entschieden haben und die Java-Klassen nicht generieren wollen, aber ich würde Ihnen wärmstens empfehlen no Axis trotzdem verwenden. Eigentlich würde ich JAX-WS RI verwenden, das in Java 6 enthalten ist und eine viel einfachere API darstellt. Nur für den Fall, um die Java-Klassen zu generieren, führen Sie einfach aus:

$ mkdir generated
$ wsimport -d generated http://services.aonaware.com/DictService/DictService.asmx?WSDL

3voto

fsonmezay Punkte 528

Hier ist ein gutes Tutorial über "Lesen einer wsdl-Datei" von Thomas Bayer http://www.predic8.com/wsdl-reading.htm

1voto

Jason Sperske Punkte 28600

Dies ist kein triviales Projekt, und Sie könnten feststellen, dass eine Bibliothek, die dies bereits tut, wäre Ihr bester Ansatz, aber Orte zu beginnen wäre die Zuordnung von Attributen zu HTML FORM-Komponenten, und die Min / Max Occues zu JavaScript-Ereignisse.

Es wäre wahrscheinlich viel einfacher, Ihre FORM auf der Grundlage Ihres Verständnisses der WSDL zu schreiben. Als Hilfsmittel könnten Sie etwas verwenden wie

http://www.soapui.org/

Oder für etwas Webbasiertes (was ich gerade mit Ihrer WSDL getestet habe und es funktioniert) können Sie versuchen

http://www.soapclient.com/soaptest.html

Ich weiß, dass diese beiden Links für das, was Sie zu erreichen versuchen, völlig unpassend sein könnten, aber ich wünsche Ihnen viel Glück bei Ihren Bemühungen, diese Herausforderung zu meistern :)

1voto

Richard Kennard Punkte 36

Ich kann nicht für die WSDL-Seite sprechen, aber Sie können Folgendes in Betracht ziehen Metawidget für die Formularerstellung: Sobald Sie die WSDL extrahiert und geparst haben, können Sie sie in Metawidget einfügen und erhalten eine Menge kostenloser UI-Funktionen (Unterstützung für verschiedene Plattformen, verschiedene Widget-Bibliotheken usw.)

Herzliche Grüße,

Richard.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X