Frage

Meine Webservice-Provider geben Sie mir eine große WSDL-Datei, aber wir werden nur einige Funktion nach innen verwenden.

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

Wir verwenden den Webservice in Client appliction, Startzeit und Speichernutzung sind Fragen. Großer WSDL bedeutet, dass JAX-WS Willen mehr Bindung zu tun nimmt und Willen braucht mehr Speicher für die Stub-Klasse.

Ist es möglich, dass wir WSDL-Datei auf eine leichte Version trimmen? Gibt es Werkzeug für diesen Zweck?

Ich glaube nicht, meine Webservice-Provider eine andere WSDL für uns generieren. Wir haben auf tut es automatisch in dem Build-Skript .

War es hilfreich?

Lösung

Kurz gesagt, Ihre Antworten sind "kein Werkzeug, aber Sie können DIY".

Ich wünschte, es sind einfache Werkzeug kann es tun, weil meine WSDL zu viele ungenutzte Funktion enthält und das Schema der Datenstruktur.

Wenn ich es automatisieren können, WSDL -> getrimmten WSDL -> Client-Stubs Klassen generieren. Nichts ungenutzt wird generiert, kein Missbrauch, keine Wartungen erforderlich, werden wir nicht auf den generierten Code berühren, und ich kann wirklich konzentrieren sich auf den Code im Einsatz, die. Kleinerer JAR, kürzere XML Parse-Zeit. Wenn die WSDL aktualisiert werden, werde ich habe nur Client-Stubs Klassen und Lauf Unit-Test neu zu erstellen.

Ich habe versucht, von Menschen zu halten aufgerufen. Es braucht Zeit, leicht Fehler zu bekommen, und hat jedes Mal, jede noch so kleine Änderung auf der ursprünglichen WSDL wiederholen.

Ich bin auf dem WSDL-Schema nicht vertraut. Ich denke dabei kann es durch XSLT getan werden?

Andere Tipps

Die Größe der WSDL wird keinerlei Auswirkungen auf die Leistung haben ... es sei denn, Sie es herunterladen und / oder es für jede Anforderung das Parsen. Und wenn Sie das letztere tun, nicht. Es braucht nur dann, wenn die Service-Änderungen bearbeitet werden, und der Service sollte immer kompatibel ändern, mit der Unterstützung von alten Nachrichten weiterhin (zumindest für einige überlappende Zeitperiode).

Sie berücksichtigen sollten, eine WSDL-Verarbeitung einer Programmänderung zu sein, und tun es wie jedes Release, mit Versionierung und Tests, etc.

Das Problem ist nicht mit der Größe des WSDL selbst. Es ist die Größe des generierten Codes, was zählt. Zum Beispiel, wenn Sie Axis2 verwenden Sie den Code aus einer großen WSDL zu generieren, würden Sie auf die Schaffung eines Request / Response-Klasse für jede WSDL-Vorgang beenden, sowie die Klassen ihrer Rückgabetypen. Sie würden mit einer riesigen Stub-Klasse am Ende später auf, die die Leistung beeinträchtigen könnte, da es Klassen importieren würde, die von Web-Service-Operationen erforderlich ist, dass Sie nicht brauchen.

Es gibt kein einfaches Werkzeug, das zu tun. Ich benutze Notizblock in die Regel ++, das zu tun, und ja man kann immer Fehler machen, während es zu tun.

Ein weiterer häufiger Fehler ist die Wahl beiden Sync und Async Stil Methoden zu erzeugen, wenn die meistes Zeit (in meinem Fall zumindest), dann werden Sie nur Sync-Stil Methoden verwenden. Dies könnte drastisch die Größe Ihres Stub erhöht auch.

Ich habe nicht die Werkzeuge verwendet, die Sie im Gespräch sind, aber Sie können erfolgreich Web-Service-Methoden ohne den Code jemals berühren eine WSDL-Datei auszuführen.

Dies scheint eine gute Zeit, um einen schnellen Test zu laufen. Schneiden Sie alles aus der WSDL-Datei außer dem, was Sie benötigen, eine der einfacheren Methoden auszuführen, die Sie verwenden möchten. Referenz, die anstelle der WSDL kopieren. Wenn es funktioniert, wissen Sie, was als nächstes zu tun ist!

Es gibt keine Notwendigkeit, die WSDL zu trimmen. Wenn Sie auf dem Gehen hinunter diesen Pfad gesetzt sind, einfach etwas in den Stub-Klassen löschen, die Sie nicht brauchen. So stellen Sie sicher, es zu testen, wie Sie gehen, um sicherzustellen, dass alles noch funktioniert.

Sie können nur manuell entfernen Sie die -Elemente zu den Methoden, den Sie benötigen und sehen nicht, ob das reicht. Sie sollten diese Elemente entfernen können, ohne den Rest der Datei zu berühren.

Die physikalische Größe der WSDL sollte keine Rolle spielen, wenn Sie Client-Stubs Klassen während der Kompilierung erzeugen (zB über AXIS wsdl2java.) Wenn Sie die WSDL werden heruntergeladen und für jede Anforderung das Parsen dann der Download Zeit wird wahrscheinlich die Parse-Zeit Zwerg. Betrachten Sie das Caching die Datei lokal, wenn die Download-Zeit ein Problem wird. Wenn die Parsing-Zeit ein Problem wird möglicherweise Sie die Datei betrachten Trimmen oder die analysierten Objekte Caching. Gehen Sie beim Cachen oder Trimmen der Datei, wie Sie alle Änderungen integrieren müssen, wenn Ihr Provider eine neue WSDL ausstellt. Betrachten Sie die Aktualisierung Ihres gecached / getrimmt WSDL jedes Mal, wenn der Dienst neu gestartet wird oder zu einem bestimmten Intervall.

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