首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何设置Sesame2.8.0 RepositoryConnection超时

如何设置Sesame2.8.0 RepositoryConnection超时
EN

Stack Overflow用户
提问于 2015-04-24 13:28:05
回答 1查看 311关注 0票数 1

我正在尝试为我的芝麻连接实现类似断路器的后端数据库。当数据库不存在时,我想在2秒后知道这一点,而不是依赖客户机的默认超时。我可以通过我自己的FutureTasks来克服这一点,在这里我将执行存储库初始化和连接获取。但是,在日志中,我可以看到sesame客户端使用o.a.h.i.c.PoolingClientConnectionManager --这是传递的--我打赌ExecutorService和一些默认的超时。这将使我的FutureTask解决方案非常混乱。是否有一种更简单的方法来为sesame客户端设置超时。

EN

回答 1

Stack Overflow用户

发布于 2015-04-24 21:05:31

您可以在查询/更新对象本身上设置查询和更新超时:

代码语言:javascript
复制
 RepositoryConnection conn = ....;

 ... 
 TupleQuery query = conn.prepareTupleQuery(QueryLangage.SPARQL, "SELECT ...");
 query.setMaxExecutionTime(2);

但是,如果您希望通过HTTP为所有api调用设置一个通用超时,那么目前唯一的方法是获取对HttpClient对象的引用,并重新配置它:

代码语言:javascript
复制
  HTTPRepository repo = ....;
  AbstractHttpClient httpClient = (AbstractHttpClient)((SesameClientImpl)repo.getSesameClient()).getHtttpClient();
  HttpParams params = httpClient.getParams();
  params.setIntParameter(CoreConnectionPNames.SO_TIMEOUT, 2000);
  httpClient.setParams(params);

正如您所看到的,这是相当脆弱的(很多显式转换),并且使用了ApacheApache4.4中不推荐的方法。因此,我并不推荐这是一个稳定的解决方案,但它应该在短期内提供一个解决办法。

从长远来看,Sesame团队正在致力于更方便地访问httpclient的配置。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29848768

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档