In AEM ist der Externalizer ein OSGi-Dienst, mit dem Sie einen Ressourcenpfad (z. B. /path/to/my/page
) in eine externe und absolute URL (z. B. https://www.mycompany.com/path/to/my/page
) hinein, indem dem Pfad ein vorkonfiguriertes DNS vorangestellt wird.
Da eine Instanz ihre extern sichtbare URL nicht kennen kann, wenn sie hinter einer Web-Ebene ausgeführt wird, und weil manchmal ein Link außerhalb des Anforderungsbereichs erstellt werden muss, bietet dieser Dienst einen zentralen Ort, um diese externen URLs zu konfigurieren und zu erstellen.
Auf dieser Seite wird beschrieben, wie Sie den Externalizer-Dienst konfigurieren und verwenden. Weitere Informationen finden Sie in den Javadocs.
Mit dem Dienst Externalizer können Sie zentral mehrere Domänen definieren, die zum programmatischen Präfix von Ressourcenpfaden verwendet werden können. Alle Domänen werden anhand eines eindeutigen Namens zum programmgesteuerten Verweisen auf die Domäne identifiziert.
Definieren Sie eine Domänenzuordnung für den Externalizer-Service wie folgt:
Navigieren Sie zum Konfigurationsmanager über Tools, dann Web Console oder geben Sie Folgendes ein:
https://<host>:<port>/system/console/configMgr
Klicken Sie auf Day CQ Link Externalizer , um das Konfigurationsdialogfeld zu öffnen.
Der direkte Link zur Konfiguration ist https://<host>:<port>/system/console/configMgr/com.day.cq.commons.impl.ExternalizerImpl
Definieren Sie eine Domänen-Zuordnung: Eine Zuordnung besteht aus einem eindeutigen Namen, der im Code verwendet werden kann, um auf die Domäne, ein Leerzeichen und die Domäne zu verweisen:
<unique-name> [scheme://]server[:port][/contextpath]
wobei:
-Schemata sind normalerweise http oder https, können aber auch ftp usw. sein.
server ist der Hostname (kann ein Domänenname oder eine IP-Adresse sein).
port (optional) ist die Portnummer.
contextpath (optional) wird nur festgelegt, wenn AEM als Web-App unter einem anderen Kontextpfad installiert ist.
Beispiel: production https://my.production.instance
Die folgenden Zuordnungsnamen sind vordefiniert und müssen immer festgelegt werden, da sie von AEM abhängen:
local
- die lokale Instanzauthor
- DNS des Authoring-Systemspublish
- das DNS der öffentlichen WebsiteMit einer benutzerdefinierten Konfiguration können Sie eine neue Kategorie hinzufügen, z. B. production
, staging
oder sogar externe Nicht-AEM-Systeme wie my-internal-webservice
. Es ist nützlich, die Hartkodierung solcher URLs an verschiedenen Stellen in der Codebasis eines Projekts zu vermeiden.
Klicken Sie auf Speichern, um Ihre Änderungen zu speichern.
Adobe empfiehlt, die Konfiguration zum Repository hinzuzufügen.
Dieser Abschnitt zeigt einige Beispiele dafür, wie der Externalizer-Dienst verwendet werden kann:
Den Externalizer-Dienst rufen Sie in JSP wie folgt ab:
Externalizer externalizer = resourceResolver.adaptTo(Externalizer.class);
Einen Pfad mit der publish-Domäne externalisieren Sie wie folgt:
String myExternalizedUrl = externalizer.publishLink(resolver, "/my/page") + ".html";
Angenommen, die Domänenzuordnung:
publish https://www.website.com
myExternalizedUrl
endet mit dem Wert:
https://www.website.com/contextpath/my/page.html
Einen Pfad mit der author-Domäne externalisieren Sie wie folgt:
String myExternalizedUrl = externalizer.authorLink(resolver, "/my/page") + ".html";
Angenommen, die Domänenzuordnung:
author https://author.website.com
myExternalizedUrl
endet mit dem Wert:
https://author.website.com/contextpath/my/page.html
Einen Pfad mit der local-Domäne externalisieren Sie wie folgt:
String myExternalizedUrl = externalizer.externalLink(resolver, Externalizer.LOCAL, "/my/page") + ".html";
Angenommen, die Domänenzuordnung:
local https://publish-3.internal
myExternalizedUrl
endet mit dem Wert:
https://publish-3.internal/contextpath/my/page.html
Weitere Beispiele finden Sie in den Javadocs.