Допустим, мой файл wsdl говорит, что эта конечная точка возвращает String, но я хочу, чтобы они возвращали Future или Mono. Когда я только что изменил возвращаемый тип, это то, что я получил:
<faultstring xml:lang="en">No adapter for endpoint [public reactor.core.publisher.Mono<java.lang.String> 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 его легко реализовать реактивным способом.