我有一个带有肥皂服务的应用程序,可与Jena TDB2和Fuseki一起使用。它可以正常工作,但是我的应用程序在第5次请求后从fuseki获取对象时阻塞。 这是代码
QueryExecution q = QueryExecutionFactory.sparqlService(serviceURI, query);
ResultSet results = q.execSelect();
Model model = ModelFactory.createDefaultModel();
while (resultSet.hasNext()) {
QuerySolution querySolution = resultSet.next();
RDFNode object = querySolution.get("?o");
if (object instanceof Literal) {
model.add(querySolution.getResource("?s"), model.createProperty(querySolution.getResource("?p").toString()),
object);
}
if (object instanceof Resource) {
if (querySolution.getResource("?p").getLocalName().equals("type")) {
model.add(querySolution.getResource("?s"), model.createProperty(querySolution.getResource("?p").toString()),
object);
} else {
model.add(querySolution.getResource("?s"), model.createProperty(querySolution.getResource("?p").toString()),
model.createProperty("#" + querySolution.getResource("?o").getLocalName()));
}
}
那么什么会引起这个问题呢?我以为这是一些配置,但是我没有找到关于此的有用注释。
答案 0 :(得分:3)
该代码无法关闭QueryExecution
。
对于外部资源(网络连接),最好是使用Java“ try-with-resource”
try(QueryExecution q = ...) { code }
这加快了OS资源的重用。