JcrPackage getSize()始终为0

时间:2016-07-11 14:19:12

标签: aem jackrabbit

在我的代码(AEM 6.1 SP 1)中,我以编程方式构建包。一切正常,除了我想记录包大小 - 无论我尝试什么,它总是0。 这是当前的代码段:

OutputStream out = new FileOutputStream(backupPath + "/" + fileName);
JcrPackageManager packageManager = packaging.getPackageManager(resolver.adaptTo(Session.class));
packageManager.assemble(jcrPackage.getDefinition(), listener, out);
logger.trace("Package size is {}.", jcrPackage.getSize());

我试图关闭包并在之后重新打开它,我提交了资源解析器,刷新了会话,但结果是一样的。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

getSize适用于JcrPackageImpl的方式是它在包的路径上查找“jcr:content”节点并尝试获取属性“jcr:data”,并以大小返回此属性值的长度。

你能否确认你试图存储包的路径/节点是“jcr:content”节点,我的假设是它不是,这就是为什么你的包大小为0。

答案 1 :(得分:0)

经过多次试验和错误以及Ameesh和Abhishek的提示后,我发现了问题所在:

assemble(JcrPackageDefinition definition, 
         ProgressTrackerListener listener, OutputStream out)

实际上并没有将已组装的包存储在存储库中。这就是为什么大小为0.这个包被传递给OutputStream - 在我的例子中,它将包保存到磁盘。