削减或限制Apache Jackrabbit JCR的最大版本历史记录

时间:2015-04-29 04:03:45

标签: jcr jackrabbit

在使用Apache Jackrabbit作为JCR后端的应用程序中,存储库中有一些可版本化的节点(主要是文本内容)。似乎这些节点的版本历史只会永久地增长,并且会永久地增长#34;。

在版本历史记录中配置最大版本数量的最佳/正确方法是什么(每个工作区?) - 对于将来的历史记录条目和"减少"每个历史记录中任意最大条目数的现有版本历史记录?

1 个答案:

答案 0 :(得分:2)

我们只设置一个属性,对我们要保留的版本数量进行限制,然后删除多余的。

这是一个未经测试的想法,你怎么做...

public void deleteOldVersions(Session session, String absPath, int limit) 
    throws RepositoryException {

    VersionManager versionManager = session.getWorkspace().getVersionManager();
    VersionHistory versionHistory = versionManager.getVersionHistory(absPath);
    VersionIterator versionIterator = versionHistory.getAllLinearVersions(); // Gets the history in order
    long numberToDelete = versionIterator.getSize() - limit;
    while (numberToDelete-- > 0) {
        String versionName = versionIterator.nextVersion().getName();
        versionHistory.removeVersion(versionName);
    }
}