JcrPackage getSize() 始终为 0
JcrPackage getSize() is always 0
在我的代码 (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());
我尝试关闭包然后重新打开它,我提交了资源解析器,刷新了会话,但结果是一样的。
有什么想法吗?
getSize 为 JcrPackageImpl 工作的方式是它在包的路径上寻找 "jcr:content" 节点并尝试获取 属性 "jcr:data" 和这个 属性 值在尺寸中返回。
您能否确认您尝试存储包的 path/node 是否是 "jcr:content" 节点,我的假设是它不是,这就是为什么包大小为 0 的原因。
经过多次试验和错误以及 Ameesh 和 Abhishek 的提示,我发现了问题所在:
assemble(JcrPackageDefinition definition,
ProgressTrackerListener listener, OutputStream out)
实际上并没有将组装好的包存储在存储库中。这就是大小为 0 的原因。包被传递到 OutputStream,在我的例子中,它把包保存到磁盘。
在我的代码 (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());
我尝试关闭包然后重新打开它,我提交了资源解析器,刷新了会话,但结果是一样的。
有什么想法吗?
getSize 为 JcrPackageImpl 工作的方式是它在包的路径上寻找 "jcr:content" 节点并尝试获取 属性 "jcr:data" 和这个 属性 值在尺寸中返回。
您能否确认您尝试存储包的 path/node 是否是 "jcr:content" 节点,我的假设是它不是,这就是为什么包大小为 0 的原因。
经过多次试验和错误以及 Ameesh 和 Abhishek 的提示,我发现了问题所在:
assemble(JcrPackageDefinition definition,
ProgressTrackerListener listener, OutputStream out)
实际上并没有将组装好的包存储在存储库中。这就是大小为 0 的原因。包被传递到 OutputStream,在我的例子中,它把包保存到磁盘。