我正在使用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);
...
答案 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(...)替换默认客户端(如果存在)。