Play Framework 2.3.3:WS库很慢

时间:2014-09-12 23:34:20

标签: playframework playframework-2.0

我正在将我的应用程序从Play 2.1.2迁移到Play 2.3.3(使用Play for Java)。我注意到Web服务很慢。这些是SOAP服务。 Play版本2.1.2中的基本服务占用了35ms,现在在Play 2.3.3中占用240ms

Play 2.1.2中的初始代码

    WSRequestHolder requestHolder = WS.url(url);
    requestHolder.setHeader(CONTENT_TYPE, CONTENT_TYPE_XML_UTF_8_SAVE);
    F.Promise<WS.Response> responsePromise = requestHolder.post(new ByteArrayInputStream(request.getBytes("UTF-8")));
    response = responsePromise.get(50000L);
    return response;

新规则是Play 2.3.3

    WSRequestHolder requestHolder = WS.url(url);
    requestHolder.setHeader(CONTENT_TYPE, CONTENT_TYPE_XML_UTF_8_SAVE);
    F.Promise<WSResponse> responsePromise = requestHolder.post(new ByteArrayInputStream(request.getBytes("UTF-8")));
    response = responsePromise.get(50000L);
    Document responseDoc = null;
    if(response.getStatus() == 200) {
        responseDoc = response.asXml();
    }else{
        Logger.error("service call failed. Status: " + response.getStatus());
    }
    return responseDoc;

所有设置均为默认设置。我错过了一个设置吗?新的Play是否需要与线程池相关的任何设置?我尝试了几种组合,但没有看到任何改进。

感谢任何帮助。

由于

Jaswinder

1 个答案:

答案 0 :(得分:0)

你以50000毫秒的超时时间调用get。这就是让它变慢的原因。尝试使用默认的get()并使用map(),如https://www.playframework.com/documentation/2.3.x/JavaWS中的示例所示。