Modeshape - 删除节点二进制文件

时间:2014-08-21 13:59:18

标签: modeshape

在我们的测试服务器中,我们要删除节点。我们使用下面的代码

        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应用程序中删除。但我们也看到二进制文件位于存储库的二进制文件夹中,因此不会在物理上删除节点,磁盘使用情况不会改变。可能是什么问题?

1 个答案:

答案 0 :(得分:2)

最终将在后台线程中删除未使用的二进制值,默认情况下每天执行一次。

您可以通过存储库的JSON配置轻松配置它。例如:

{
  ...
  "garbageCollection" : {
    "threadPool" : "modeshape-gc-pool",
    "initialTime" : "00:00",
    "intervalInHours" : 24,
  }
  ...
}

上面显示的值是默认值,但显然您可以更改它们并仅包含那些有意义的非默认字段。