In Adobe Experience Manager (AEM) wird die Externalizer ist ein OSGi-Dienst, mit dem Sie einen Ressourcenpfad programmgesteuert umwandeln können (z. B. /path/to/my/page
) in eine externe und absolute URL (zum Beispiel https://www.mycompany.com/path/to/my/page
), indem dem Pfad ein vorkonfiguriertes DNS vorangestellt wird.
Dieser Dienst bietet einen zentralen Ort für die Konfiguration und Erstellung von externen URLs, weil eine Instanz ihre extern sichtbare URL nicht kennen kann, wenn sie hinter einer Web-Layer läuft, und weil manchmal ein Link außerhalb des Anfrageumfangs erstellt werden muss.
Auf dieser Seite wird beschrieben, wie Sie die Externalizer und wie Sie ihn verwenden. Weitere Informationen finden Sie im Abschnitt Javadocs.
Die Externalizer Mit dem -Dienst können Sie zentral mehrere Domänen definieren, mit denen Ressourcenpfade programmgesteuert vorangestellt werden können. Alle Domains werden anhand eines eindeutigen Namens zum programmgesteuerten Verweisen auf die Domain identifiziert.
Definieren Sie eine Domain-Zuordnung für den Externalizer-Service wie folgt:
Wechseln Sie zum Konfigurations-Manager über Tools > Web-Konsole oder geben Sie Folgendes ein:
https://<host>:<port>/system/console/configMgr
Klicken Sie auf Day CQ Link Externalizer, um das Konfigurationsdialogfeld zu öffnen.
Der Direkt-Link zur Konfiguration lautet https://<host>:<port>/system/console/configMgr/com.day.cq.commons.impl.ExternalizerImpl
Definieren Sie eine Domänen mapping: 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]
Dabei gilt:
schema ist http oder https, kann aber auch ftp sein usw.
Server ist der Host-Name (kann ein Domain-Name oder eine IP-Adresse sein).
Port (optional) ist die Portnummer.
Kontextpfad (optional) wird nur festgelegt, wenn AEM als Web-App unter einem anderen Kontextpfad installiert wird.
Beispiel: production https://my.production.instance
Die folgenden Zuordnungsnamen sind vordefiniert und müssen festgelegt werden, da AEM von ihnen abhängt:
local
– die lokale Instanzauthor
– das DNS des Bearbeitungssystemspublish
– das DNS der öffentlichen WebsiteMit einer benutzerdefinierten Konfiguration können Sie eine Kategorie hinzufügen, z. B. production
, staging
, oder sogar externe AEM, wie z. B. my-internal-webservice
. Es ist nützlich, die Hartkodierung solcher URLs an verschiedenen Stellen in der Code-Basis eines Projekts zu vermeiden.
Klicken Sie auf Speichern, um Ihre Änderungen zu speichern.
Adobe empfiehlt, dass Sie die Konfiguration dem Repository hinzufü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-Domain externalisieren Sie wie folgt:
String myExternalizedUrl = externalizer.publishLink(resolver, "/my/page") + ".html";
Angenommen, die Domain-Zuordnung:
publish https://www.website.com
myExternalizedUrl
endet mit dem Wert:
https://www.website.com/contextpath/my/page.html
So externalisieren Sie einen Pfad mit der Domain „author“:
String myExternalizedUrl = externalizer.authorLink(resolver, "/my/page") + ".html";
Angenommen, die Domain-Zuordnung:
author https://author.website.com
myExternalizedUrl
endet mit dem Wert:
https://author.website.com/contextpath/my/page.html
So externalisieren Sie einen Pfad mit der Domain „local“:
String myExternalizedUrl = externalizer.externalLink(resolver, Externalizer.LOCAL, "/my/page") + ".html";
Angenommen, die Domain-Zuordnung:
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.