[Java] Arbeiten mit großen WSDL, können wir es schneiden?


Answers

Ich habe die Tools, über die Sie sprechen, nicht verwendet, aber Sie können Webdienstmethoden erfolgreich ausführen, ohne dass der Code jemals eine WSDL-Datei berührt.

Dies scheint eine gute Zeit für einen schnellen Test zu sein. Schneiden Sie alles aus der WSDL-Datei aus, außer dass Sie eine der einfacheren Methoden ausführen müssen, die Sie verwenden möchten. Referenzieren Sie stattdessen die Kopie der WSDL. Wenn es funktioniert, weißt du, was als nächstes zu tun ist!

Question

Mein Webservice-Provider gibt mir eine große WSDL-Datei, aber wir werden nur einige wenige Funktionen verwenden.

Ich glaube, dass die große WSDL negative Auswirkungen auf die Anwendungsleistung hat.

Wir verwenden den Webservice in der Client-Anwendung, die Startzeit und die Speichernutzung sind Probleme. Eine große WSDL bedeutet, dass jax-ws länger braucht, um eine Bindung herzustellen, und mehr Speicherplatz für die Stub-Klasse benötigt.

Ist es möglich, dass wir die WSDL-Datei auf eine Lightweight-Version zuschneiden? Gibt es ein Werkzeug für diesen Zweck?

Ich glaube nicht, dass mein Webservice-Provider eine weitere WSDL für uns generieren wird. Möglicherweise müssen wir es im Build-Skript automatisch machen .




Sie könnten einfach die <wsdl: operation> -Elemente entfernen, die den Methoden entsprechen, die Sie nicht benötigen, und sehen, ob das ausreicht. Sie sollten in der Lage sein, diese Elemente zu entfernen, ohne den Rest der Datei zu berühren.




Die Größe der WSDL hat keinen Einfluss auf die Leistung, es sei denn, Sie laden sie herunter und / oder analysieren sie für jede Anfrage. Und wenn du Letzteres tust, tu es nicht. Es muss nur verarbeitet werden, wenn sich der Dienst ändert, und der Dienst sollte sich immer kompatibel ändern, wobei weiterhin alte Nachrichten unterstützt werden (zumindest für einen überlappenden Zeitraum).

Sie sollten in Erwägung ziehen, eine WSDL als Programmänderung zu bearbeiten und dies wie bei jeder Version, mit Versionierung und Tests usw. durchzuführen.