0

我有一个使用 dstu2 异步调用 25 hl7 hapi fhir 的 jsp。正如最佳实践中所建议的那样,我使用静态加载创建 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");

4

1 回答 1

1

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

您可以使池更大,或者更好地通过将它们全部(或它们的组)作为批处理请求发出来减少请求的数量 - 请参阅http://hl7.org/fhir/DSTU2/http.html#transaction细节。

我们在 FHIR 客户端中广泛使用批处理请求以取得良好效果。

于 2016-11-18T01:25:58.523 回答