解决由自定义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
请按照以下步骤解决问题:
-
查看自定义OSGi组件(如存储库初始值设定器和身份验证捆绑包)的代码。
-
在自定义代码中执行任何文件夹创建逻辑之前,请确保所有引用的JCR节点类型(例如: client)都存在。
-
检查OSGi组件描述符以验证它们是否与编译类中的构造函数签名匹配。
-
确认自定义身份验证组件(如
ProviderConfigImpl、ProviderConfigServiceManagerImpl、OAuthManagerImpl)的工厂配置正确,且未在最新部署中新引入或修改这些配置。 -
验证运行状况检查配置:
-
找到 必需组件(自定义) 运行状况检查的OSGi配置(通常是
org.apache.felix.hc.generalchecks.ComponentsCheck的工厂配置,标记为自定义)。 -
确认所需的组件列表包含受影响的自定义组件。
-
使用AEM 触控UI (工具
>操作>运行状况检查)以查看自定义运行状况检查的当前状态和消息。
-
-
更正识别的问题后,重新部署受影响的包,并验证环境是否达到稳定就绪状态,以及是否通过了所有运行状况检查。