我正在将我的应用程序从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
答案 0 :(得分:0)
你以50000毫秒的超时时间调用get。这就是让它变慢的原因。尝试使用默认的get()并使用map(),如https://www.playframework.com/documentation/2.3.x/JavaWS中的示例所示。