2014-09-12 56 views
0

我正在將我的應用程序從Play 2.1.2遷移到Play 2.3.3(使用Play for Java)。我注意到網絡服務很慢。這些是SOAP服務。基本服務當時正在播放2.1.2版爲35ms,現在正在240MS在播放2.3.3Play Framework 2.3.3:WS庫很慢

初始代碼在播放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; 

新代碼播放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

你調用了50000毫秒超時得到。這是讓它變慢的原因。嘗試使用默認的get()並使用map(),如https://www.playframework.com/documentation/2.3.x/JavaWS中的示例所示。

+0

Will-我將代碼更改爲使用map,但沒有提高性能。然後,我進一步將InputStream的主體的帖子更改爲String,並做到了這一點。 – 2014-09-15 22:38:59