web-dev-qa-db-ja.com

Reactive Spring WebClient-SOAPを呼び出す

私はSOAPの呼び出しに反応するWebクライアントからの呼び出しを探しています。そのためのドキュメントが見つかりませんでした。アプローチはどうなるのだろうと思っています。今、私は考えています

  1. 別のスレッドプールでJAXBを使用してSOAPメッセージを構築します
  2. Webclientを介して文字列に変換して呼び出しを行います
  3. 別のtpに戻る途中でjaxbを使用して、Javaに変換し直します。

欠点と他のアプローチは何ですか?

14
Faisal Masood

SOAPクライアントを非同期のメソッドを持つスタブクラスとして生成する必要があります。JAX-WSAPIは非同期呼び出しをサポートしています。wsiimportenableAsyncMappingを使用してメソッドを生成operationAsync(Input request、AsyncHandler asyncHandler);

Mono.create()を使用したAsyncHandlerの作成

Service service = new Service();
ServicePortType portType = service.getPortType();

public Mono<Output> operation(Input input) {
            return Mono.create(sink ->
               portType.operation(input, outputFuture -> {
                   try {
                       sink.success(outputFuture.get());
                   } catch (Exception e) {
                       sink.error(e);
                   }
               })
            );
        }

そして、あなたはMonoを再活性化します

私は投稿で提案を見つけました https://blog.godatadriven.com/jaxws-reactive-client

5
Petr Sheshenya