javax.jcr.nodetype.ConstraintViolationException:在AEM中迁移用户和组时出现OakConstraint0027错误

打包用户和组时,请确保避免打包现成的用户包括管理员和匿名用户。 您必须使用合并包过滤器模式。

描述 description

环境

Adobe Experience Manager 6.x (AEM 6.x)

Adobe公报5.x (Adobe CQ5.x)

问题

通过包管理器将用户和组从一个AEM实例迁移到另一个实例时,您会收到类似于以下内容的错误:

26.01.2017 16:03:20.024 *ERROR* [ qtp2078058939-7783]  org.apache.jackrabbit.vault.fs.io.Importer Error while committing : javax.jcr.nodetype.ConstraintViolationException: OakConstraint0027: The admin user cannot be removed.
javax.jcr.nodetype.ConstraintViolationException: OakConstraint0027: The admin user cannot be removed.
Caused by: org.apache.jackrabbit.oak.api.CommitFailedException: OakConstraint0027: The admin user cannot be removed

解决方法 resolution

打包用户和组时,您应确保避免打包现成的用户包括管理员和匿名用户。

您必须使用合并包过滤器模式。

按照以下步骤解决此问题

  1. 前往 CRXDE lite 应用程序/crx/de/index.jsp并以管理员用户身份登录(在旧系统上)。

  2. 转到 工具 > 查询

  3. 在底部的 查询 框中,输入此查询以查找管理员用户:

    code language-none
    /jcr:root/home/users//element(*,rep:User)[ @rep:principalName="admin"]
    
  4. 单击 执行,并将结果中管理员用户节点的路径复制到文本文件中。

  5. 对匿名用户的查询重复 步骤3

    code language-none
    /jcr:root/home/users//element(*,rep:User)[ @rep:principalName="anonymous"]
    
  6. 单击 执行,并将结果中的匿名用户节点的路径复制到一个文本文件中(所以现在您应该有两个路径,一个用于“管理员”,一个用于“匿名”)。

    例如:

    /home/users/Q/QY5FIMXeQIbGpwZtQ3Dv — 正在创建包的系统上的管理员用户

    /home/users/K/Kj1406Qo9IDODc_nk5Ib — 您正在创建包的系统上的匿名用户

  7. 转到AEM包管理器http://host:port/crx/packmgr/index.jsp,并以 管理员 身份登录。

  8. 创建名为 用户 的包。

  9. 使用这些排除规则(在 /home/users 过滤器中)将过滤器添加到 /home/users 的包配置中:

    code language-none
    exclude /home/users/.*/.tokens
    exclude /home/users/Q/QY5FIMXeQIbGpwZtQ3Dv
    exclude /home/users/K/Kj1406Qo9IDODc_nk5Ib
    exclude /home/users/a/admin
    exclude /home/users/a/anonymous
    exclude /home/users/system
    exclude /home/users/geometrixx
    exclude /home/users/media
    exclude /home/users/projects
    exclude /home/users/mac
    
  10. 构建包。

  11. 下载包。

  12. 在您的计算机上解压缩package.zip文件。

  13. 在文本编辑器中打开 META-INF/vault/filter.xml 文件。

  14. mode="merge"添加到标记。

    例如:

    code language-none
    <?xml version="1.0" encoding="UTF-8"?>
    <workspaceFilter version="1.0">
      <filter root="/home/users" mode="merge">
        <exclude pattern="/home/users/.*/.tokens"/>
        <exclude pattern="/home/users/Q/QY5FIMXeQIbGpwZtQ3Dv"/>
        <exclude pattern="/home/users/K/Kj1406Qo9IDODc_nk5Ib"/>
        <exclude pattern="/home/users/a/admin"/>
        <exclude pattern="/home/users/a/anonymous"/>
        <exclude pattern="/home/users/system"/>
        <exclude pattern="/home/users/geometrixx"/>
        <exclude pattern="/home/users/media"/>
        <exclude pattern="/home/users/projects"/>
        <exclude pattern="/home/users/mac"/>
      </filter>
    </workspaceFilter>
    
  15. 重新压缩修改后的包内容,使其包含更改。

  16. 创建包含筛选规则/home/groups 包。

  17. 程序包重复执行 步骤10-15

  18. 仅升级):如果执行迁移到较新的AEM版本,请安装新的本地AEM实例(带有nosamplecontent),并在该处安装用户包和组包。 然后,对该实例执行就地升级。 升级后,再次重新打包用户,然后再次打包组,并下载较新版本的包。

  19. 在新系统上安装用户包。

  20. 在新系统上安装组包。

recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f