将URL外置

在AEM中,Externalizer​是一个OSGI服务,它允许您以编程方式转换资源路径(例如,/path/to/my/page)通过预先配置DNS来预装路径,从而将该路径插入外部和绝对URL(例如https://www.mycompany.com/path/to/my/page)。

由于实例在Web层后面运行时无法知道其外部可见URL,并且由于有时必须在请求范围之外创建链接,因此此服务提供了一个中心位置来配置这些外部URL并构建它们。

本页介绍如何配置​Externalizer​服务以及如何使用它。 有关详细信息,请参阅Javadocs

配置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外部化时不覆盖方案,则将使用它。
    • 务器是主机名(可以是域名或ip地址)。
    • port (可选)是端口号。
    • contextpath (可选)仅在AEM安装为位于其他上下文路径下的web应用程序时设置。

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

    以下映射名称是预定义的,必须始终设置为AEM依赖它们:

    • local —— 本地实例
    • 作者 -创作系统DNS
    • 发布 -面向公众的网站DNS
    注意

    自定义配置允许您添加新类别,如“生产”、“暂存”,甚至外部非AEM系统,如“my-internal-webservice”,并且有助于避免在项目代码库的不同位置对此类URL进行硬编码。

  4. 单击​保存​以保存更改。

注意

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”。

要将路径外置为“本地”域,请执行以下操作:

String myExternalizedUrl = externalizer.externalLink(resolver, Externalizer.LOCAL, "/my/page") + ".html";

假定域映射“ local https://publish-3.internal”, myExternalizedUrl的结尾值为“ https://publish-3.internal/contextpath/my/page.html”。

您可以在Javadocs中找到更多示例。

在此页面上

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