Asynchrone Webservices-Aufrufe mit JAX-WS: Verwenden Sie die Unterstützung von wsimport für die Asynchronität oder rollen Sie meine eigenen?

Da ist einausgezeichneter Artikel von Young Yang Das erklärt, wie Sie mit wsimport Webdienst-Client-Artefakte erstellen, die asynchrone Webdienst-Aufrufe haben. Für die Asynchronität muss die WSDL über das Tag verfügen

<enableAsyncMapping>true</enableAsyncMapping>

in seinem Bindungsabschnitt. Wenn Sie den Bottom-up-Ansatz mit JAX-WS-annotierten Java-Klassen verwenden, können Sie dies nicht direkt in der WSDL tun, da die WSDL ein generiertes Artefakt auf dem Webserver ist. Stattdessen verwenden Sie Build-Tools wie Ant oder Maven, um diese Bindung einzuschließen, wenn wsimport in der WSDL ausgeführt wird.

Die generierten Clientartefakte haben asynchrone Methodenaufrufe, die a zurückgeben

Future<?>

oder ein

Response

Welches ist eine Zukunft.

Nachdem ich Yangs Artikel gelesen habe, frage ich mich, warum ich nicht einfach meine eigenen asynchronen Web-Service-Aufrufe mit Executors und Futures abwickle. Bieten die von wsimport erstellten Artefakte einen Vorteil, den ich nicht gegenüber einem Roll-Your-Own-Ansatz sehen kann?

Wenn jemand Erfahrung oder Einsicht in beide Ansätze hat, würde ich mich über Ihr Feedback freuen.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage