2016-07-11 4 views
0

내 코드 (AEM 6.1 SP 1)에서 프로그래밍 방식으로 패키지를 빌드합니다. 모든 내가 패키지 크기를 기록 할 점을 제외하고 잘 작동 - 나는 시도 무엇이든, 그것은 0 가 여기에 현재 코드입니다 항상이었다,JcrPackage getSize() 항상 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()); 

나는 패키지를 닫고 나중에 그것을 다시 시도 I 자원 분석기를 커밋하고 세션을 새로 고쳤으나 결과는 동일합니다.

아이디어가 있으십니까?

+0

패키지 노드가 생성되면'infinity.json'을 확인 했습니까? – Abhishek

+0

수천 개의 노드가있는 패키지를 다운로드 할 수 있습니다. 패키지가있는 것 같습니다. 지연이있을 수 있습니까? –

+0

패키지 노드의'infinity.json' 또는'1.json'을 통해 packmgr UI에서 기본적으로 사용되는 jcr 속성': jcr : data'를 얻을 수있었습니다 (Ameesh가 말한 것처럼). 패키지 크기를 표시하십시오. – Abhishek

답변

0

많은 시행 착오와 Ameesh 및 Abhishek에서 힌트 후 나는 문제가 무엇인지 발견 : 사실 저장소에 조립 된 패키지를 저장하지

assemble(JcrPackageDefinition definition, 
     ProgressTrackerListener listener, OutputStream out) 

않습니다. 이것이 크기가 0 인 이유입니다. 패키지는 대신 OutputStream으로 전달됩니다.이 경우 패키지를 디스크에 저장했습니다.

0

getSize가 JcrPackageImpl에서 작동하는 방식은 패키지 경로에서 "jcr : content"노드를 찾고 "jcr : data"속성을 가져 오려고 시도하는 것이며이 속성 값의 길이는 크기.

패키지를 저장하려는 경로/노드가 "jcr : content"노드인지 확인할 수 있습니까? 제 가정은 패키지 크기가 0 인 이유입니다.

+0

Abisheks 질문에 대한 내 의견보기. –

+0

패키지가 생성되지 않았다는 것을 부인할 수는 없습니다. JcrPackageImpl에서 크기를 얻는 논리에 대해 이야기합니다. getSize 메소드를 클릭하면 IDE를 사용하여 "jcr : content"노드를 가져 오는 로직을 볼 수 있으며, 또한 에미레이트에 대한 uber 항아리가 불분명 한 경우에만 구현을 볼 수 있습니다. –