Frage

Ich würde gerne wissen, ob jemand eine gute Bibliothek empfehlen kann Java Web Service Stubs als Kunden zu generieren.

Zur Zeit ein Produkt ich verwende, die einen Generator eingebettet ist, die nur die WSDL muss und erstellt dann die benötigten Klassen und Methoden.

Meine Probleme ist es wirft Warnungen und schafft keine Methode für einige Web Service zu verwenden, ich versuche.

Das eigentliche Problem ist es nicht erklären, was das Problem ist (so kann ich mit dem Besitzer des Webservice gehe und habe es geändert) noch lassen Sie mich das ouput ändern, so kann ich das Problem wahrscheinlich meine selbst beheben.

Doch die Besitzer des Web Service (weil dies geschieht mit mehreren verschiedenen ws) sagen, ihre ws laufen gut und eigentlich, wenn ich Achse die die Arbeit tun sollten, aber meine Sorge ist, dass mein versagen Generator dieser Bibliothek verwendet bereits (was ich etwas macht, wird es nicht wieder)

Und in letzter Zeit weiß ich nicht, wenn diese beiden Bibliotheken der Java-Source-Stub generieren oder nur haben Methoden wie

Object [] args = ...;
service.inkvoke("updateCustomer", args );

Wenn das, was würde Ich mag zu haben ist so etwas wie:

CustomerWs cws = ....
cws.updateCustomer(custId, custName, custAddress /*etc*/ );

Also, jemand hat einen GOOD ws Stubs Generator, empfehlen kann?

Ich bin über meine eigenen handcode, aber es wird auf jeden Fall mehrere Tage dauern als akzeptabel

War es hilfreich?

Lösung

Was sind Sie zur Zeit? Ich benutze Achse WSDL2Java als Ant-Task. Es erzeugt die Arten von Stubs Sie wollen. Funktioniert prima, obwohl die Classpath Einrichtung für die Ausführung des Build wurde ein wenig Schmerzen in Eclipse (es gab eine Handvoll Gläser ich brauchte, um die Spur zu kommen und beinhalten). In meinem ant Buildfile sieht es wie folgt aus:

<taskdef name="axis-wsdl2java" classname="org.apache.axis.tools.ant.wsdl.Wsdl2javaAntTask" />
<target name="foo">
<axis-wsdl2java
              output="${build.dir}"
              testcase="false"
              verbose="true"
              typemappingversion="1.2"
              url="http://ws.domain.com/url/of/WebService?wsdl" />
<!-- Compile, etc... -->
</target>

Andere Tipps

Seien Sie sehr vorsichtig, wenn Sie auf "Achse" verweisen: Apache Axis 1 Anfang aufgegeben wurde 2006 mit Bugs Thread-Sicherheit zu Deadlocks und CPU-Spins führt (wie wir sie beide erlebt). Sie werden tief mit bereuen. Apache Axis 2 ist komplett neu geschrieben und kann einen Blick wert sein. Aber ich würde vorschlagen, zuerst Sie Apache CXF und Glassfish Metro .

Update: Hier sind Fehlerberichte auf der Deadlock und 100% CPU-Spin . Hier ist Cyrille Le Clerc vorgeschlagen Patch von vor drei Jahren, nie begangen hat.

Wir eliminierten unsere Deadlocks und drehen von unseren Kunden in gerade Java Umkodierung. Und dann lehnte der Axis-Server mit uns zu sprechen, zurückschicken HTTP 500 Fehler. Wir mussten fälschlicherweise behaupten wir ein Axis-Client waren eine richtige Antwort zu erhalten. SOAP Interoperabilität war nicht eine Priorität für die Achse 1-Team.

Ich mag Apache CXF - es fügt sich perfekt mit Maven durch ein Plugin, und es funktioniert. Ich habe eine Zeit lang für Client-Stub-Code-Generierung mit ihm, und in der letzten Firma, die ich arbeitete sie es für den Server-Teil der WS ist zu benutzten.

In den letzten Projekte, die ich mit CXF + Maven + Subversion gearbeitet, haben wir nicht die generierten Klassen in Subversion sind, nur eine Kopie der WSDL-Datei - die Stub-Klassen wurden in der „erzeugen“ Ziel von Maven erzeugt .

Apache Axis 2 ist der Weg zu gehen ... wenn Sie benötigen um ein bisschen spielen es richtig zu machen. Es ist vielleicht die häufigste Art und Weise, es zu tun. Vielleicht ist das Werkzeug, das Sie ist verwenden basierend auf Achse 1?

Ich würde vorschlagen, auf jeden Fall etwas mit basierend auf Standards basierenden APIs. Das würde bedeuten, JAX-WS-API. Apache CXF und U sind die beiden wichtigsten JAX-WS-Implementierungen, obwohl eine Implementierung JBoss außerdem hat. Axis2 hat eine nicht-zertifizierte Implementierung, aber kein Code gen Unterstützung.

Der beste Teil eines Standards basierte API zu verwenden, wenn Sie in ein Problem laufen mit auf Produkt, können Sie die anderen versuchen. In vielen Fällen, die ich gesehen habe, auch das andere Produkt nicht funktioniert, aber wird eine andere Fehlermeldung oder ähnlich ausspucken, die dazu beigetragen, die Tatsache zu diagnostizieren, dass es wirklich ein Problem in unserem eigenen Code oder Wsdl ist.

Auch JAX-WS wird gebaut rechts in Java6. Wenn Sie auf Java6 laufen planen, können Sie es verwenden und nicht mit zusätzlichen Gläser zu tun haben und so weiter.

Die neueste JAX-WS als Teil der U-Bahn ( http://metro.dev.java.net ) ist eine ziemlich nette Abstraktionsschicht. Nimmt ein wenig angepasst, aber es war viel intuitiver zu mir als einige der anderen Optionen gibt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top