내 커뮤니티 업적 표시줄을 확대합니다.

Submissions are now open for the 2026 Adobe Experience Maker Awards.

Mark Solution

활동이 없어 이 대화는 잠겼습니다. 새 게시물을 작성해 주세요.

해결됨

Is there a way to make the following code atomic (transactional)?

Avatar

Level 7

Hi,

Is there a way to make code similar to what follows transactional:

UserManager userManager = ...; //  org.apache.jackrabbit.api.security.user.UserManager userManager.createUser(...); userManager.createGroup(...); updateGroupService.updateGroup(...) // org.apache.sling.jackrabbit.usermanager.UpdateGroup AccessControlUtil.replaceAccessControlEntry(...) JcrResourceUtil.createPath(...) JcrUtil.copy(...)

Basically:

  • We create a user,
  • A group,
  • Assign the user to the group,
  • Add permissions to the group,
  • Create a folder (e.g. /content/foo/bar/baz)
  • Copy some content from some folder in JCR to /content/foo/bar/baz

At the moment one or more of ceateUser, createGroup, updateGroup, replaceAccessControlEntry commit their changes even before explicitly calling save() on the current request's session.

1 채택된 해결책 개

Avatar

정확한 답변 작성자:
Employee Advisor

Hi,

On the Jackrabbit wiki [1] there's a reference to the chapter 8.1 of the JCR specification, see also [2]. To be honest, I never played with transactions on JR.

Jörg

 

[1] http://jackrabbit.apache.org/frequently-asked-questions.html

[2] http://www.day.com/maven/jcr/2.0/21_Transactions.html

원본 게시물의 솔루션 보기

3 답변 개

Avatar

정확한 답변 작성자:
Employee Advisor

Hi,

On the Jackrabbit wiki [1] there's a reference to the chapter 8.1 of the JCR specification, see also [2]. To be honest, I never played with transactions on JR.

Jörg

 

[1] http://jackrabbit.apache.org/frequently-asked-questions.html

[2] http://www.day.com/maven/jcr/2.0/21_Transactions.html

Avatar

Employee

Hi,

Is the UserManager you are using in "autosave" [0] mode? If autosave mode is on session.save() is called for you and could explain the results you are seeing.

Will

[0] http://jackrabbit.apache.org/api/2.4/org/apache/jackrabbit/api/security/user/UserManager.html#isAuto...()

Avatar

Level 7

Hi Will,

That almost worked until I hit this roadblock: http://help-forums.adobe.com/content/adobeforums/en/experience-manager-forum/adobe-experience-manage...

Do you know if there's a way to work around that? IMHO, looks like a bug in Jackrabbit/Sling.

Thanks.