我正在尝试立即从下面的方法获取响应,然后继续进行其余的过程。但我随时都看不到我的返回值“TestAync”。您能否建议如何从以下呼叫中检索(客户端代码)响应。
这是我正在制作的客户电话,感谢您的帮助。 未来的响应= ClientBuilder.newClient()。target(“http://localhost:8080/testasync/test/async/test5”)。request()。async()。get();
@GET
@Path("async/{echo}")
public String asyncEcho(@PathParam("echo") final String echo, @Suspended final AsyncResponse ar) {
TASK_EXECUTOR.submit(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(SLEEP_TIME_IN_MILLIS);
} catch (InterruptedException ex) {
ar.cancel();
}
ar.resume(echo);
}
});
return "TestAysnc";
}
答案 0 :(得分:1)
在异步情况下,忽略返回值(TestAsync
),因为JAX-RS运行时(例如Jersey)期望通过AsyncResponse#resume(Object)调用提供发送回客户端的实体。
在您的特定情况下,test5
将返回给客户端,因为您正在使用此字符串对象恢复异步响应。
有关详细信息,请查看Jersey用户指南中的Asynchronous Server API或阅读JAX-RS 2.0 Specification。