由于缺少OSGi捆绑包,AEM部署后RDE服务中断
将代码部署到Adobe Experience Manager as a Cloud Service (AEMaaCS) RDE环境会导致服务中断,在此情况下,由于API区域约束更严格,无法解决第三方OSGi捆绑包(如io.jsonwebtoken)。 若要修复此问题,请使用Bundle-ClassPath或-conditionalpackage将所需的JAR文件嵌入到项目中,使用aio aem:rde:install重新部署,并验证是否所有依赖项都已成功解析。
描述 description
环境
- 产品: Adobe Experience Manager as a Cloud Service (AEMaaCS) — 站点
- 上下文: RDE (快速开发环境)
- 工具:用于部署的
aio aem:rde:install命令
注意:标准云实例和本地部署不受影响。
问题/症状
-
使用
aio aem:rde:install进行部署后,RDE环境变得无响应。 -
实例显示“服务中断”消息。
-
重新启动或重置实例并不能解决此问题。
-
错误日志显示与
io.jsonwebtoken相关的未解析的第三方OSGi包依赖关系。 -
依赖关系在本地和标准云环境中得以解决,但在RDE中由于更严格的API区域约束而失败。
-
错误日志摘录:
Unable to resolve fpaec-aem-base-components.core 645: missing requirement fpaec-aem-base-components.core [ 645] osgi.wiring.package; (&(osgi.wiring.package=io.jsonwebtoken)(version>=0.11.0)(!(version>=1.0.0)))
解决方法 resolution
要解决此问题,请执行以下步骤:
-
查看RDE强制实施的API区域限制。 这些约束限制了对第三方包(如
io.jsonwebtoken)的包可见性和阻止访问。 -
将所需的第三方库嵌入到项目中。 使用
-conditionalpackage或Bundle-ClassPath包含以下JAR文件:lib/jjwt-api-0.11.2.jarlib/jjwt-impl-0.11.2.jarlib/jjwt-jackson-0.11.2.jar
-
将以下说明添加到您的
bnd.bnd文件:code language-none Bundle-ClassPath: ., lib/jjwt-api-0.11.2.jar, lib/jjwt-impl-0.11.2.jar, lib/jjwt-jackson-0.11.2.jarcode language-none -conditionalpackage: \ io.jsonwebtoken;version="0.11.2", \ io.jsonwebtoken.security;version="0.11.2" -
使用
aio aem:rde:install部署更新的包。 确认所有依赖关系均已解决,并且服务不再中断。 -
在创作和发布环境中测试部署以确保稳定性。