Java Play Framework 2.2.1:异步请求超时

Java Play Framework 2.2.1:异步请求超时,java,web-services,playframework,timeout,Java,Web Services,Playframework,Timeout,我正在尝试获取http请求的内容/正文。这已经起作用了,但我无法使用get方法获得超时 Logger.info( "before WS.url" ); String res = WS.url( "http://1.2.3.4" ).get() .map( new Function<WS.Response, String>() { @Override public String apply(WS.Respo

我正在尝试获取http请求的内容/正文。这已经起作用了,但我无法使用
get
方法获得超时

    Logger.info( "before WS.url" );
    String res = WS.url( "http://1.2.3.4" ).get()
        .map( new Function<WS.Response, String>() {
            @Override
            public String apply(WS.Response response) throws Throwable {
                return response.getBody();
            }
        } )
        .get( 5000, TimeUnit.MILLISECONDS );
    Logger.info( "after WS.url = " + res );

    return res;
Logger.info(“在WS.url之前”);
字符串res=WS.url(“http://1.2.3.4)获取()
.map(新函数(){
@凌驾
公共字符串apply(WS.Response-Response)抛出可丢弃的{
返回response.getBody();
}
} )
.get(5000,时间单位为毫秒);
Logger.info(“在WS.url=“+res”之后);
返回res;

在我的代码中,超时根本不起作用,我做错了什么或错过了什么?

首先,你不应该调用。在播放应用程序中,你应该为你的操作返回映射的承诺,调用。get可能会让你陷入各种麻烦,比如死锁。除此之外,get的超时方法不起作用是什么意思?发生了什么事?我从未收到TimeoutException,尽管我设置了超时。我通过使用Scala和
Await.result
Await.result
解决了这个问题。result永远都不是正确的答案,如果使用它,很可能会导致死锁或更糟的生产。您应该始终
map
flatMap
未来,并从操作中返回异步结果。您曾经使用过这种方法吗?