FhirContext重用最佳实践返回异常"超时等待来自池的连接"

时间:2016-11-18 01:12:31

标签: java hl7-fhir dstu2-fhir

我有一个jsp使用dstu2异步调用25 hl7 hapi fhir。正如最佳实践中所建议的那样,我使用静态加载创建了fhir上下文,并在每次服务调用中重用它。但是,服务调用会间歇性地使用下面的堆栈跟踪失败:(我为每个服务调用初始化了fhir上下文并解决了这个问题。但是,这会减慢调用速度。有人可以帮我解决任何其他方法或告诉我我的意思我做错了)

引起: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);
}

}

调用代码: IGenericClient client = MyFHIRContext.ctx.newRestfulGenericClient(" server url");

1 个答案:

答案 0 :(得分:1)

该异常表明您的连接池不足以支持那么多重叠请求。

您可以通过将所有请求(或其中的一组)作为批量请求发布,使池更大或更好地减少请求数量 - 有关详细信息,请参阅http://hl7.org/fhir/DSTU2/http.html#transaction

我们在FHIR客户中广泛使用批量请求以达到良好效果。