使用 vaadin 在异步方法中调用 restController

问题描述

当我想从线程中触发 RestController 时,我在触发它时遇到了一些问题。我正在尝试从我的线程向 RestController 发送请求,但是当我的 restTemplate 正在执行目标 URL 时,我没有收到来自控制器的任何响应。 RestController 甚至没有被执行。仅当我从 ui.access->rest.sendRequest() 发送请求时,它才能按预期工作,但无论如何我的应用程序都必须等待请求结束。

我正在使用 Vaadin 14。我创建了一个带有 run 方法的线程,如下所示:

CompletableFuture<Long> nonBlocking = CompletableFuture.supplyAsync(() -> restTemp.getForObject("http://localhost:4240/Servis/api/address",Long.class));
nonBlocking.thenAccept(s -> {
    if (s != null) {
      ui.access(() -> Notification.open("long is not null"));
    } else {
      ui.access(() -> Notification.open("long is null"));
    }
});
nonBlocking.get();

但是我的来自 rest 控制器的代码仍然没有执行。

解决方法

当我用 WebClient 替换 RestTemplate 时,我让它按预期工作