解决由自定义OSGi组件错误导致的AEM Cloud Manager部署故障

本文介绍了在自定义OSGi组件实例化失败,导致环境不稳定和日志消息不清时,如何在Adobe Experience Manager (AEM) Cloud Manager中排除和解决部署管道故障。

描述 description

环境

Adobe Experience Manager (AEM) as a Cloud Service,通过Cloud Manager管道部署

症状

  • 部署管道失败,新部署未达到稳定状态。

  • 应用程序实例频繁重新启动,并且未准备就绪。

  • 运行状况检查失败,包括必需的路径检查(例如: /libs/granite/security/currentuser.json返回​HTTP 503)和 必需的组件(自定义) 检查报告不满意的组件。

  • 日志显示无法实例化的自定义OSGi组件,错误如下:

    • javax.jcr.nodetype.NoSuchNodeTypeException:节点类型客户端不存在
    • 自定义身份验证或存储库初始值设定项组件找不到0参数的构造函数

原因

由于组件描述符不匹配、缺少JCR节点类型或工厂配置不正确,自定义OSGi组件无法实例化。 这会导致基本服务失败并阻止成功部署。

解决方法 resolution

请按照以下步骤解决问题:

  1. 查看自定义OSGi组件(如存储库初始值设定器和身份验证捆绑包)的代码。

  2. 在自定义代码中执行任何文件夹创建逻辑之前,请确保所有引用的JCR节点类型(例如: client)都存在。

  3. 检查OSGi组件描述符以验证它们是否与编译类中的构造函数签名匹配。

  4. 确认自定义身份验证组件(如ProviderConfigImplProviderConfigServiceManagerImplOAuthManagerImpl)的工厂配置正确,且未在最新部署中新引入或修改这些配置。

  5. 验证运行状况检查配置:

    • 找到 必需组件(自定义) 运行状况检查的OSGi配置(通常是org.apache.felix.hc.generalchecks.ComponentsCheck的工厂配置,标记为​自定义)。

    • 确认所需的组件列表包含受影响的自定义组件。

    • 使用AEM 触控UI (工具 > 操作 > 运行状况检查)以查看自定义运行状况检查的当前状态和消息。

  6. 更正识别的问题后,重新部署受影响的包,并验证环境是否达到稳定就绪状态,以及是否通过了所有运行状况检查。

recommendation-more-help
experience-cloud-kcs-help-kbarticles