2013-08-31 2 views
2

CQ 페이지를 프로그래밍 방식으로 생성해야한다는 요구 사항이 있습니다. 하지만 도전 과제는 페이지 이름/uri가 문자열 + 고유 번호 (예 : PT2000, PT2001)의 자동 생성 조합이어야한다는 것입니다.CQ에서 자동 증가 고유 번호를 생성하는 전략

사람이 여러 동시 요청이 있어도 ID가 고유 한 방식으로 CQ에서 autoincrement-id/constant를 생성하는 방법을 알려 줄 수 있습니까?

답변

0

ID를 제공하고 휘발성 인스턴스 변수에서 카운터를 관리하는 서비스를 사용하면 한 스레드의 상태 변경이 다른 모든 스레드에 즉시 전달되도록 할 수 있습니다.

구현이 단일 작성자 노드에서 실행되도록 보장 할 수 있다면이 트릭을 수행해야합니다. 클러스터 시나리오에서는 노드 하나에서만 추가로 실행해야합니다.

+0

당신이 말했듯이 클러스터의이 시나리오는 특별한 처리가 필요합니다. 호출되는 http 엔드 포인트가 (일부 http 매개 변수를 통해) 마스터에서만 실행되도록하는 방법이 있습니까? 슬레이브 노드가이 고유 ID를 생성하기위한 단일 지점이 될 수있는 마스터를 호출 할 수 있다고 생각합니다. – Shan25

+0

클러스터 된 시나리오에서 일반적으로로드 밸런서를 사용하여 제작 노드간에로드를 분산시킵니다. 이렇게하면 특정 매개 변수가 포함 된 게시 요청의 모든 종류가 마스터로 전달되도록 할 것입니다. 다른 종류의 게이트웨이 프록시 또는 웹 서버를 사용하면 트릭을 수행 할 수도 있습니다. – Thomas

0

저장소의 어딘가에서 카운터를 관리하고 jcr EventListener 역할을하는 서비스를 만드는 것이 좋습니다. 서비스는 cq : Page 유형의 상위 노드에서 NODE_ADDED 이벤트를 수신해야하며 onEvent가 호출되면 해당 지점에서 고유 ID를 할당 할 수 있습니다. onEvent()에 대한 중복 호출이 동일한 ID를 사용하지 않도록 동기화를 사용하고 싶을 것입니다.

+0

나는 저장소에 카운터를 보관하는 아이디어를 좋아합니다. 그러나 unique_d와 같이 Node_Added 사운드를 듣는 id 생성기 서비스는 페이지가 생성 된 후에 만 ​​생성 될 수 있습니다. 반면에 페이지 이름/uri가 uniqueId 인 페이지를 생성해야하는 경우가 있습니다. – Shan25

+0

@ Shan25 해결책을 찾았습니까? 노드를 생성하고 그 시간에 uid 속성을 할당하는 서비스를 생성 한 다음 노드를 호출자에게 반환하는 방법은 무엇입니까? –

0

AEM이 동일한 이름 페이지에 자동으로 번호를 추가하지 않습니까?

그렇지 않은 경우 아마도 다음 번에 다시 시작할 수 있습니다. 이 경우에는 최선의 추측으로 충분합니다.

관련 문제