在我们的测试服务器中,我们要删除节点。我们使用下面的代码
Repository repository = .... ;
Session session = null;
session = repository.login(new SimpleCredentials(getApplicationName(), getPassword().toCharArray()));
JcrTools jcrTools = new JcrTools();
if (!session.nodeExists(fileInfo.getRealPath())) {
return;
}
Node node = session.getNode(fileInfo.getRealPath());
//delete children nodes if exists
jcrTools.removeAllChildren(node);
//delete all properties include mixins
PropertyIterator pIt = node.getProperties();
while (pIt.hasNext()) {
javax.jcr.Property property = pIt.nextProperty();
property.remove();
}
node.remove();
session.save();
session.logout();
该方法有效,我们看到文件已从modeshape-explorer Web应用程序中删除。但我们也看到二进制文件位于存储库的二进制文件夹中,因此不会在物理上删除节点,磁盘使用情况不会改变。可能是什么问题?
答案 0 :(得分:2)
最终将在后台线程中删除未使用的二进制值,默认情况下每天执行一次。
您可以通过存储库的JSON配置轻松配置它。例如:
{
...
"garbageCollection" : {
"threadPool" : "modeshape-gc-pool",
"initialTime" : "00:00",
"intervalInHours" : 24,
}
...
}
上面显示的值是默认值,但显然您可以更改它们并仅包含那些有意义的非默认字段。