Playframework Play Framework 2.3.3:WS-library运行缓慢

Playframework Play Framework 2.3.3:WS-library运行缓慢,playframework,playframework-2.0,Playframework,Playframework 2.0,我正在将我的应用程序从Play 2.1.2迁移到Play 2.3.3(使用Play for Java)。我注意到web服务的速度很慢。这些是SOAP服务。基本服务在2.1.2版中需要35毫秒,现在在2.3.3版中需要240毫秒 WSRequestHolder requestHolder = WS.url(url); requestHolder.setHeader(CONTENT_TYPE, CONTENT_TYPE_XML_UTF_8_SAVE); F.Promise&l

我正在将我的应用程序从Play 2.1.2迁移到Play 2.3.3(使用Play for Java)。我注意到web服务的速度很慢。这些是SOAP服务。基本服务在2.1.2版中需要35毫秒,现在在2.3.3版中需要240毫秒

    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;
重头戏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;
WSRequestHolder-requestHolder=WS.url(url);
setHeader(内容类型、内容类型、XML、UTF、8保存);
F.Promise-responsePromise=requestHolder.post(新的ByteArrayInputStream(request.getBytes(“UTF-8”));
响应=响应速度(50000L);
返回响应;
新代码是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;
WSRequestHolder-requestHolder=WS.url(url);
setHeader(内容类型、内容类型、XML、UTF、8保存);
F.Promise-responsePromise=requestHolder.post(新的ByteArrayInputStream(request.getBytes(“UTF-8”));
响应=响应速度(50000L);
文档响应DC=null;
if(response.getStatus()==200){
responseDoc=response.asXml();
}否则{
Logger.error(“服务调用失败。状态:+response.getStatus());
}
返回响应DOC;
所有设置都是默认设置。我是不是错过了一个场景?新游戏是否需要任何与线程池相关的设置?我尝试了一些组合,但没有看到任何改进

感谢您的帮助

谢谢


Jaswinder

您正在使用50000毫秒的超时调用get。这就是让它变慢的原因。尝试使用默认的get()并使用map(),如中的示例所示。

Will-I将代码更改为使用map,但这并没有提高性能。然后我进一步将主体的post从InputStream更改为String,就这样做了。