AEMでは、ExternalizerはOSGIサービスで、リソースパス(例えば、/path/to/my/page
)を外部URLや絶対URL(例えばhttps://www.mycompany.com/path/to/my/page
)に埋め込みます。
インスタンスが Web レイヤーの背後で実行されている場合、自身の外部向け URL がわかりません。また、リンクをリクエストスコープの範囲外で作成する必要がある場合があります。これらの理由で、このサービスは、そのような外部 URL を設定して組み立てるための一元化された場所を提供します。
このページでは、Externalizer サービスの設定方法と使用方法について説明します。詳しくは、関連する Javadoc を参照してください。
Externalizerサービスを使用すると、プログラム的にリソースパスをプレフィックスするために使用できる複数のドメインを一元的に定義できます。各ドメインは、そのドメインをプログラムで参照する際に使用される一意の名前で識別されます。
Externalizer サービスのドメインマッピングを定義するには:
ツールからWebコンソールに移動するか、https://<host>:<port>/system/console/configMgr.
と入力します。
「Day CQ Link Externalizer」をクリックして、設定ダイアログボックスを開きます。
構成への直接リンクはhttps://<host>:<port>/system/console/configMgr/com.day.cq.commons.impl.ExternalizerImpl
です
ドメインマッピングの定義:マッピングは、ドメイン、スペース、ドメインを参照するコードで使用できる一意の名前で構成されます。
<unique-name> [scheme://]server[:port][/contextpath]
, 条件:
例:production https://my.production.instance
次のマッピング名は事前に定義されており、AEMがそれらに依存しているため、常に設定する必要があります。
カスタム設定によって、「production」、「staging」などの新しいカテゴリや、「my-internal-webservice」などの AEM 以外の外部システムでも追加できます。このような設定は、プロジェクトのコードベースの様々な場所でそのような URL をハードコーディングするのを避けるために有効です。
「Save」をクリックして変更を保存します。
Adobeでは、リポジトリに設定を追加することを推奨します。
ここでは、Externalizer サービスの使用方法に関するいくつかの例を紹介します。
JSP で Externalizer サービスを取得する:
Externalizer externalizer = resourceResolver.adaptTo(Externalizer.class);
「publish」ドメインを付与してパスを外部化する:
String myExternalizedUrl = externalizer.publishLink(resolver, "/my/page") + ".html";
ドメインマッピング「 publish https://www.website.com
」を想定すると、myExternalizedUrlは値「 https://www.website.com/contextpath/my/page.html
」になります。
「author」ドメインを付与してパスを外部化するには:
String myExternalizedUrl = externalizer.authorLink(resolver, "/my/page") + ".html";
ドメインマッピング「 author https://author.website.com
」を想定すると、myExternalizedUrlは値「 https://author.website.com/contextpath/my/page.html
」になります。
「local」ドメインを付与してパスを外部化するには:
String myExternalizedUrl = externalizer.externalLink(resolver, Externalizer.LOCAL, "/my/page") + ".html";
ドメインマッピング「 local https://publish-3.internal
」を想定すると、myExternalizedUrlは値「 https://publish-3.internal/contextpath/my/page.html
」になります。
他の例については、関連する Javadoc を参照してください。