java - FhirContext 重用最佳实践返回异常 "Timeout waiting for connection from pool"

标签 java hl7-fhir dstu2-fhir

我有一个 jsp,它使用 dstu2 异步进行 25 个 hl7 hapi fhir 调用。正如最佳实践中所建议的,我使用静态加载创建一次 fhir 上下文,并在每个服务调用中重用它。但是,服务调用间歇性地失败,并显示以下堆栈跟踪:(我为每个服务调用初始化了 fhir 上下文,并且此问题得到了解决。但是,这会减慢调用速度。有人可以帮助我使用任何替代方法或告诉我我要做什么吗?我做错了)

原因:org.apache.http.conn.ConnectionPoolTimeoutException:WAITING池中的连接超时

公共(public)类 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 客户端 = MyFHIRContext.ctx.newRestfulGenericClient("服务器 url");

最佳答案

该异常表明您的连接池不够大,无法支持那么多重叠请求。

您可以使池更大,或者更好的是,通过将所有(或一组)请求作为批处理请求发出来减少请求数量 - 请参阅 http://hl7.org/fhir/DSTU2/http.html#transaction了解详情。

我们在 FHIR 客户端中广泛使用批量请求,取得了良好的效果。

关于java - FhirContext 重用最佳实践返回异常 "Timeout waiting for connection from pool",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40667839/

相关文章:

java - CutyCapt 的替代品

java - 如何将对象传递给android studio中的新 Activity ?

c++ - 使用 Qt 的 RESTful API 请求

dstu2-fhir - 订购 STU 3 版本的 FHIR?高级指令?

hl7-fhir - 在 FHIR 中代表 PCP/GP 历史

javascript - Epic App Orchard 如何获取从业者 ID 或信息

java - 如何通过 bukkit 中的配置添加消息?

python - 如何在 fhirclient-4.0.0 python 库中设置自定义 header ?

angular - 我如何在 Angular cli 项目中使用 @types/fhir

Java:转义 XML 文本内容而不是整个文本