Может ли конечная точка Spring Boot WS SOAP работать реактивно? - PullRequest
0 голосов
/ 29 апреля 2020

Допустим, мой файл wsdl говорит, что эта конечная точка возвращает String, но я хочу, чтобы они возвращали Future или Mono. Когда я только что изменил возвращаемый тип, это то, что я получил:

            <faultstring xml:lang="en">No adapter for endpoint [public reactor.core.publisher.Mono&lt;java.lang.String&gt; example.QuestionEndpoint.questionEndpoint(java.lang.String)]: Is your endpoint annotated with @Endpoint, or does it implement a supported interface like MessageHandler or PayloadEndpoint?</faultstring> 

Я искал много статей и форумов и нашел только решения для SOAP клиента.

@Endpoint
public class QuestionEndpoint {

   @PayloadRoot(namespace = http://stack.org/, localPart = "Question")
   @ResponsePayload
   public String questionEndpoint(@RequestPayload String request) {
      return facade.getQuestion(request)          
        .flatMap(result -> Mono.just(mapper.toDto(result)))
        .block();;
   }
}

В моем коде ниже конечной точки я использую Mono из'ctor.core 'и выполняю block () в конечной точке непосредственно перед возвратом результата. Достаточно ли для этой конечной точки реактивной работы?

Если этого недостаточно, может ли конечная точка Spring Boot WS SOAP возвращать какой-либо реактивный тип, даже если мой файл WSDL требует указанного типа c? В REST API его легко реализовать реактивным способом.

...