OSGi バンドルが見つからないことが原因で、AEMのデプロイ後に RDE サービスが停止する
Adobe Experience Manager as a Cloud Service(AEMaaCS) RDE 環境にコードをデプロイすると、io.jsonwebtoken などのサードパーティの OSGi バンドルが、API 地域の厳しい制約のために解決できない場合に、サービスが停止します。 この問題を修正するには、Bundle-ClassPath または -conditionalpackage を使用して必要な JAR ファイルをプロジェクトに埋め込み、aio aem:rde:install を使用して再デプロイし、すべての依存関係が正常に解決されることを検証します。
説明 description
環境
- Product:Adobe Experience Manager as a Cloud Service(AEMaaCS) – Sites
- コンテキスト :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を使用して、更新されたパッケージをデプロイします。 すべての依存関係が解決され、サービスの停止が発生しなくなったことを確認します。 -
オーサー環境とパブリッシュ環境の両方でデプロイメントをテストし、安定性を確保します。