URL の外部化

AEMの​Externalizer​は、リソースパス(例えば、/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], 条件:

    • ​スキーマは通常、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 を参照してください。

このページ