泽西休息异步响应

时间:2015-01-14 16:23:10

标签: rest asynchronous jersey

我正在尝试立即从下面的方法获取响应,然后继续进行其余的过程。但我随时都看不到我的返回值“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";
}

1 个答案:

答案 0 :(得分:1)

在异步情况下,忽略返回值(TestAsync),因为JAX-RS运行时(例如Jersey)期望通过AsyncResponse#resume(Object)调用提供发送回客户端的实体。

在您的特定情况下,test5将返回给客户端,因为您正在使用此字符串对象恢复异步响应。

有关详细信息,请查看Jersey用户指南中的Asynchronous Server API或阅读JAX-RS 2.0 Specification