在我的代码(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());
我试图关闭包并在之后重新打开它,我提交了资源解析器,刷新了会话,但结果是一样的。
有什么想法吗?
答案 0 :(得分:0)
getSize适用于JcrPackageImpl的方式是它在包的路径上查找“jcr:content”节点并尝试获取属性“jcr:data”,并以大小返回此属性值的长度。
你能否确认你试图存储包的路径/节点是“jcr:content”节点,我的假设是它不是,这就是为什么你的包大小为0。
答案 1 :(得分:0)
经过多次试验和错误以及Ameesh和Abhishek的提示后,我发现了问题所在:
assemble(JcrPackageDefinition definition,
ProgressTrackerListener listener, OutputStream out)
实际上并没有将已组装的包存储在存储库中。这就是为什么大小为0.这个包被传递给OutputStream - 在我的例子中,它将包保存到磁盘。