2016-11-18 39 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客户中大量使用批量请求以取得良好效果。

相关问题