最終更新日 :
2021年4月27日
問題点
次の例のように、リソースを CommerceService オブジェクトに適合させようとすると、例えば次のコードのように null または「undefined」が返されます。
var commerceService = resource. getResourceResolver(). adaptTo( com. adobe. cq. commerce. api.CommerceService);
この場合、クラス com.adobe.cq.commerce.api.CommerceService は OSGi Class Loader で使用できます。これを検証するには、http://aem-host:port/system/console/depfinder のツールを使用して OSGi コンソールを参照してください。
原因
この問題はデザイン時に発生します。
解決策
AEM Commerce APls を使用してアプリケーションを実装するときは、/apps/geometrixx-commons で提供される cq-geometrixx-commons-core バンドルで提供される独自のバージョンを実装します。
Geometrixx のものは単なるサンプルであり、セキュリティ上の理由から Geometrixx を製品にインストールすることはお勧めしません。CommerceServiceFactory の独自のバージョンを実装しない場合は、Geometrixx がインストールされていないと、上記の問題が生じます。
次のパスの AEM に付属のサンプルソースコードを参照してください。
/apps/geometrixx- commons/src/core/src/main/java/info/geometrixx/commons/impl/GeoCommerceServicelmpl.java /apps/geometrixx- commons/src/core/src/main/java/info/geometrixx/commons/impl/GeoCommerceServiceFactory.java /apps/geometrixx- commons/src/core/src/main/java/info/geometrixx/commons/impl/GeoCommerceSessionlmpl.java /apps/geometrixx-commons/src/core/src/main/java/info/geometrixx/commons/impl/productrelationships