2012-07-11 2 views
1

슬링의 userManager에서 사용자 또는 그룹의 변경 사항이 발생하면 알림을 받고 싶습니다. 예를 들어, 새 그룹이 만들어지면/content 아래에 같은 이름의 새 노드를 만들어야합니다. 새 사용자가 생성되면/content/foo에 대한 쓰기 권한을 부여하려고합니다. 그리고 비슷한 tearDown 개체가 삭제되면 단계.sling의 사용자 및 그룹의 변경 사항 듣기

event.topics를 "*"(모든 항목)로 설정하여 EventHandler (org.osgi.service.event.EventHandler)를 등록하려고 시도했지만 사용자 및 그룹이 합성 리소스 (내 생각)

나는 org.apache.sling.api.request.SlingRequestListener를 사용하여 시도했지만 SlingRequestEvent는 요청을 구별하는 데 도움이되는 정보가 제공되지 않았다.). 또한, 요청이 처리 된 후에 호출해야하는 콜백에도이 코드를 사용할 수 있는지 확실하지 않습니다.

나는 different issueFilters을 사용했으며이 용도로도 적용 해 보았습니다. 하지만 그들은 한계가 있습니다 - 요청 전에 필터가 호출되기 때문에 조치를 취하기 전에 요청이 성공할 것인지를 알 수 없습니다.

슬링 사용자 및 그룹 모델의 변경 사항을 듣고 응답하는 방법에 대한 제안 사항이 있으십니까?

+0

우리는 몇 달 전에 내가 참석 한 반에서이를 보았다. 나는 잘 작동하는 예제를 제공하기에 충분하지 않다. 그러나 ObservationManager, Event 및 EventListener를 [javax.jcr.observation] (http://www.day.com/maven/jsr170/javadocs/jcr-1.0/javax/jcr/observation/package-summary)에 제안 할 수 있습니다. .html) 패키지. –

+0

고마워, 나는 그것을 시도 할 것이다. 그러나, 나는 그들이 진정한 JCR 노드가 아니기 때문에 Users와 Groups와는 작동하지 않을 것이라고 생각합니다. –

답변

1

https://issues.apache.org/jira/browse/SLING-977 이안 보스턴 (Ian Boston)은 SlingPostProcessor 서비스를 사용하여 사용자 관리의 POST 서블릿에 대한 호출을 알릴 것을 제안합니다.

나는 그것을 직접 시도하지 않았으며, 그렇게한다면 슬링의 사용자 관리 API를 통해 이루어진 변경 사항을 놓칠 수도 있습니다.하지만 유스 케이스에 따라 충분할 수도 있습니다.

나는 현재 그러한 변화에 대한 통보를받는 확실한 방법이 있다고 생각하지 않는다. Sling에서이를 구현하기 위해 org.apache.jackrabbit.api.security.user. * 객체 (Group, User, UserManager)를 래핑하여 변경된 이벤트를 보내야합니다. 물론 가능하지만 슬링 번들을 변경해야합니다.

+0

힌트를 보내 주셔서 감사합니다. 샘플에 설명 된대로 후 처리기와 사후 작업을 추가하려고 시도했지만 사용자 및 그룹을 생성하기 위해 나가는 POST가 아니라'/ content'로 이동하는 POST에 대해서만 호출됩니다. 코드를 살펴보면'SlingPostServlet'에는 포스트 프로세서가 포함되어 있지만 CreateUserServlet은 포스트 프로세서를 사용하지 않는 것 같습니다. 최근의 리펙토링이 당신이 언급 한 해결 방법을 없애 버릴 가능성은 있습니까? –