Asynchroniczne wywołania usług internetowych za pomocą JAX-WS: Używaj obsługi wsimport dla asynchronii lub rozwijania własnych?

Tam jestdoskonały artykuł Young Yang wyjaśnia, jak używać wsimport do tworzenia artefaktów klienta usługi WWW, które mają asynchroniczne wywołania usługi sieciowej. Asynchronia wymaga, aby WSDL miał znacznik

<enableAsyncMapping>true</enableAsyncMapping>

w sekcji powiązań. Jeśli używasz podejścia oddolnego z klasami Java z adnotacjami JAX-WS, nie możesz tego zrobić bezpośrednio w WSDL, ponieważ WSDL jest wygenerowanym artefaktem na serwerze WWW. Zamiast tego używasz narzędzi do budowania, takich jak Ant lub Maven, aby dołączyć to powiązanie, gdy wsimport jest wykonywany na WSDL.

Wygenerowane artefakty klienta mają asynchroniczne wywołania metod, które zwracają a

Future<?>

lub a

Response

która jest przyszłością.

Moje pytanie po przeczytaniu artykułu Yanga brzmi: dlaczego nie po prostu wywołać własnych asynchronicznych wywołań usług sieciowych przy użyciu Executorów i Futures. Czy artefakty stworzone przez wsimport oferują jakąś przewagę, której nie widzę przy podejściu typu roll-your-own?

Jeśli ktoś ma doświadczenie lub wgląd w oba podejścia, byłbym wdzięczny za Twoją opinię.

questionAnswers(2)

yourAnswerToTheQuestion