URL の外部化

AEMでは、Externalizer​はOSGIサービスで、リソースパス(例えば、/path/to/my/page)を外部URLや絶対URL(例えばhttps://www.mycompany.com/path/to/my/page)に埋め込みます。

インスタンスが Web レイヤーの背後で実行されている場合、自身の外部向け URL がわかりません。また、リンクをリクエストスコープの範囲外で作成する必要がある場合があります。これらの理由で、このサービスは、そのような外部 URL を設定して組み立てるための一元化された場所を提供します。

このページでは、Externalizer サービスの設定方法と使用方法について説明します。詳しくは、関連する Javadoc を参照してください。

Externalizer サービスの設定

Externalizer​サービスを使用すると、プログラム的にリソースパスをプレフィックスするために使用できる複数のドメインを一元的に定義できます。各ドメインは、そのドメインをプログラムで参照する際に使用される一意の名前で識別されます。

Externalizer サービスのドメインマッピングを定義するには:

  1. ツール​から​Webコンソール​に移動するか、https://<host>:<port>/system/console/configMgr.と入力します。

  2. Day CQ Link Externalizer」をクリックして、設定ダイアログボックスを開きます。

    メモ

    構成への直接リンクはhttps://<host>:<port>/system/console/configMgr/com.day.cq.commons.impl.ExternalizerImplです

    chlimage_1-44

  3. ドメインマッピングの定義:マッピングは、ドメイン、スペース、ドメインを参照するコードで使用できる一意の名前で構成されます。

    <unique-name> [scheme://]server[:port][/contextpath], 条件:

    • ​schemeは、通常、httpまたはhttpsですが、ftpなどを指定することもできます。必要に応じてhttpsを使用し、httpsリンクを強制します。URLの外部化を要求する際に、クライアントコードがスキームを上書きしない場合に使用されます。
    • ​serverはホスト名です(ドメイン名またはipアドレスを指定できます)。
    • port (オプション)はポート番号です。
    • contextpath (オプション)は、AEMがwebアプリとして別のコンテキストパスの下にインストールされている場合にのみ設定されます。

    例:production https://my.production.instance

    次のマッピング名は事前に定義されており、AEMがそれらに依存しているため、常に設定する必要があります。

    • local — ローカルインスタンス
    • author — オーサリングシステムのDNS
    • publish — 公開されるWebサイトのDNS
    メモ

    カスタム設定によって、「production」、「staging」などの新しいカテゴリや、「my-internal-webservice」などの AEM 以外の外部システムでも追加できます。このような設定は、プロジェクトのコードベースの様々な場所でそのような URL をハードコーディングするのを避けるために有効です。

  4. Save」をクリックして変更を保存します。

メモ

Adobeでは、リポジトリに設定を追加することを推奨します。

Externalizer サービスの使用

ここでは、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 を参照してください。

このページ

Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now