问题描述
当我想从线程中触发 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 时,我让它按预期工作