从URI检索RDF时如何设置HTTP超时?

时间:2014-04-17 14:27:10

标签: java timeout rdf jena

我正在使用Jena解析Servlet中的RDF URI:

final Model rdfModel = ModelFactory.createDefaultModel();
rdfModel.read(resource);

是否有可能在Jena中设置Http Connect和Socket超时?

或者它是使用Apache HttpClient“手动”处理http连接的唯一选择吗?

final HttpClient httpclient = new DefaultHttpClient();
final HttpParams params = httpclient.getParams();
params.setParameter(HttpConnectionParams.CONNECTION_TIMEOUT, 1000);
params.setParameter(HttpConnectionParams.SO_TIMEOUT, 5000);
...

2 个答案:

答案 0 :(得分:2)

这里的代码基于@ rob-hall的提示:

final Model rdfModel = ModelFactory.createDefaultModel();
final HttpClient httpclient = new DefaultHttpClient();
final HttpParams params = httpclient.getParams();
params.setParameter(HttpConnectionParams.CONNECTION_TIMEOUT, 1000);
params.setParameter(HttpConnectionParams.SO_TIMEOUT, 5000);
HttpOp.setDefaultHttpClient(httpclient);
rdfModel.read(resource);

答案 1 :(得分:1)

根据API的设计,您似乎可以使用HttpOp#setDefaultHttpClient()修改Jena中使用的默认HttpClient

HttpOp#execHttpGet(String,String)LocatorURL#open(String)委托,由StreamManager使用的RDFDataMgr调用。在其他地方,HttpOp#ensureClient(...)替换默认客户端(如果存在)。