2016-11-18 42 views
0

我有一個jsp使得25 hl7 hapi fhir使用dstu2異步調用。正如最佳實踐中所建議的,我使用靜態加載創建fhir上下文,並在每次服務調用中重新使用它。但是,服務調用會在下面的堆棧跟蹤中間歇性地失敗:(我爲每個服務調用初始化了fhir上下文並解決了這個問題,但是這會減慢調用的速度。有人可以幫助我使用其他方法,或者告訴我我做錯了)FhirContext重用最佳做法返回異常「超時等待連接池」

造成的:org.apache.http.conn.ConnectionPoolTimeoutException:超時等待池連接

公共類MyFHIRContext {

public static FhirContext ctx; 

static{ 
    ctx = FhirContext.forDstu2(); 
    ctx.getRestfulClientFactory().setSocketTimeout(60 * 1000); 
    ctx.getRestfulClientFactory().setConnectTimeout(60 * 1000); 
    ctx.getRestfulClientFactory().setServerValidationMode(ServerValidationModeEnum.NEVER); 
} 

}

CAL ling代碼: IGenericClient client = MyFHIRContext.ctx.newRestfulGenericClient(「server url」);

回答

1

這個例外表明,您的連接池不夠大,無法支持許多重疊的請求。

您可以通過將批量請求全部(或它們的組)發出來減少請求數量,從而減少請求數量 - 有關詳細信息,請參閱http://hl7.org/fhir/DSTU2/http.html#transaction

我們在我們的FHIR客戶中大量使用批量請求以取得良好效果。

相關問題