AEM 5.6.1 im Clusterbetrieb – Notwendige Sourcecodeanpassungen

Ausgangslage

In einem unserer Kundenprojekte, das mit AEM 5.6.1 umgesetzt wurde, kam ein Cluster von AEM-Autoreninstanzen zum Einsatz. Dadurch sollte vor allen Dingen eine hohe Ausfallsicherheit erreicht werden.

Wir haben geprüft, welche Anpassungen wir an unseren Sourcecode vornehmen mussten, um ein fehlerfreies Funktionieren im Cluster zu garantieren. Wir wollten auf jeden Fall vermeiden, dass zur selben Zeit die gleichen Schreibzugriffe auf die Contentrepositories der einzelnen Clusterknoten erfolgen, z.B. durch einen zeitgesteuerten Service. Durch die anschliessende Replikation der Änderungen käme es zu redundanten Schreiboperationen und somit zu einem unnötigen Resourcenverbrauch.
(mehr …)

Ein Kerberos-Authentifizierungsmodul für AEM

Wozu ein Kerberos Authentifizierungsmodul?

Unsere Kunden fordern immer häufiger, dass sich ihre Mitarbeiter per Single Sign-On an die AEM-Plattform anmelden können. Das betrifft vor allen Dingen die Anmeldung an die Autorenumgebung, aber auch das Login für ein Intranet, welches mit AEM umgesetzt wurde. Die Daten aller Mitarbeiter liegen dabei auf einem LDAP-Server, häufig einem Active Directory (AD), vor. Die Mitarbeiter sollen sich nur einmal im Firmennetz einloggen müssen. Rufen Sie in ihrem Browser die AEM-Umgebung auf, so sollen sie automatisch mit ihrem LDAP-Useraccount angemeldet werden. Damit diese automatische Anmeldung mit hoher Sicherheit erfolgen kann, wird in vielen Firmennetzwerken der Authentifizierungsdienst Kerberos genutzt.

Um dem Kundenwunsch nach einem Single Sign-On über Kerberos nachzukommen, haben wir bisher eine Kerberos-Authentifizierung über ein entsprechendes Apache Webserver-Modul umgesetzt. Dieser Umweg war erforderlich, da AEM keine eigene Möglichkeit zur Kerberos-Authentifizierung mitbringt. (mehr …)

Adobe Experience Manager SP1 bringt den Tree-View zurück

Adobe hat mit Version 6 ihres Adobe Experience Managers (AEM) ein neues User Interface für das Backend und die Content-Pflege eingeführt, das CoralUI. Mit CoralUI verschwindet das bisher aus CQ5 bekannte ExtJS Interface. Hauptgrund für den Wechsel sind die grösseren Möglichkeiten, die CoralUI hinsichtlich Touch-Bedienung bietet.

CQ5_Start AEM6_Start

Deutlich wird das bereits bei einem ersten Vergleich der beiden Start-Seiten, AEM6 wartet mit grossen Kacheln und Navigationselementen auf.

Auch der Vergleich der Bearbeitungsdialoge zeigt den Unterschied zwischen altem und neuem UI.

CQ5_Edit AEM6_Edit

Leider ist in AEM6 der Tree-View, der einen hierarchischen Überblick über die Struktur erlaubt hat, auf der Strecke geblieben.

Mit Service Pack 1 für AEM6 kommt wieder ein Tree-View zurück. Nur werden nicht mehr Anleihen beim Windows Explorer genommen, sondern bei Apple’s Finder. Nicht ganz die selbe Experience wie zuvor, aber es funktioniert zumindest wie erwartet.

AEM_Treeview

Die Manipulationsfunktionen wie Move oder das Verändern der Reihenfolge fehlt leider noch, aber vielleicht liefert Adobe das mit AEM6.1 dann noch nach.

AEM in der Google Cloud

logo

Seit etwas über einem Jahr enthält die Cloud Plattform von Google auch eine IaaS Komponente mit dem Namen Google Compute Engine. In diesem Blogpost möchte ich kurz aufzeigen, was die Plattform bietet und anhand eines kleinen Beispieles aufzeigen, wie man mit wenigen … Weiterlesen

Fundstück des Tages: AEM für die Ohren… (aka Experience Manager Podcast)

Podcast

Bei den Amerikanischen Kollegen von axis41 aus Salt Lake City gibt es einen Adobe Experience Manager Podcast.

Neben Talks ihrer eigenen Experten zu AEM wurden in der Vergangenheit auch Interviews mit Adobe Experten und unseren Freunden David Nuescheler und Gabriel Walt geführt. Möglicherweise ist der Podcast für den einen oder anderen Pendler ein netter und lehrreicher Zeitvertreib.

Apache Sling Models – Teil 2 – Hands-On

Mit der neuen Erweiterung Apache Sling Models bietet Apache Sling unter anderem die Möglichkeit über Annotations Objekte mit Inhalten des Repositories zu befüllen. In diesem Hands-On wird erklärt, wie Apache Sling Models anhand konkreter Beispiele in der aktuellen Version Adobe AEM 5.6.1 eingesetzt werden kann und was dabei zu beachten ist. Eine Einführung in das Thema gibt es im ersten Teil dieser Blog-Serie.

Apache Sling Models ist neu
Apache Sling Models ist ganz frisch und daher noch nicht praxiserprobt. Dieses Hands-On ist eine Aufforderung diese Erweiterung zu testen. Wie gut sich diese in der Praxis bewährt, wird sich noch zeigen.

Benötigte OSGI-Bundles
AEM 5.6.1 bringt die OSGI-Bundles für Apache Sling Models nicht mit. Die entsprechenden Bundles müssen daher installiert werden. Apache Sling Models selbst besteht aus den folgenden beiden Bundles:

org.apache.sling:org.apache.sling.models.impl:1.0.0
org.apache.sling:org.apache.sling.models.api:1.0.0

Damit die Models direkt in JSPs verwendet werden können, gibt es eine Erweiterung der Sling JSP Scripting Taglib um den Tag sling:adaptTo. Damit dieser Tag verwendet werden kann, muss das entsprechende Bundle in AEM 5.6.1 mit der aktuellsten Version aktualisiert werden:

org.apache.sling:org.apache.sling.scripting.jsp.taglib:2.2.0

Die URI der neuen Version der Taglib unterscheidet sich von der älteren und enthält neu keine Versionsnummer mehr. Die neue Taglib muss wie folgt registriert werden kann (beispielsweise über ein global.jsp).

<%@taglib prefix="sling" uri="http://sling.apache.org/taglibs/sling" %>

Eigenes OSGI Bundle anpassen
Damit die Models durch die neue Erweiterung in einem eigenen OSGI-Bundle verarbeitet werden können, müssen im Manifest des Bundles die Models respektive Packages angegeben werden:

<Sling-Model-Packages>
 com.namics.example.sling.models
</Sling-Model-Packages>

Code-Beispiel
Im OSGI-Bundle kann nun ein POJO erzeugt werden, welches mit den entsprechenden Annotations zum Sling Model wird.

@Model(adaptables = Resource.class)
public class Example {

    @Inject
    private String title;

    public String getTitle() {
        return title;
    }

}

Dieses Beispiel lässt sich nochmals vereinfachen. Es wird keine konkrete Implementierung des Models benötigt, ein Interface genügt:

@Model(adaptables = Resource.class)
public interface Example {

    @Inject
    public String getTitle();

}

In einem entsprechenden JSP kann dann auf dieses Objekt zugegriffen werden:

<%@include file="/apps/sling-models-example/global.jsp" %>
<sling:adaptTo adaptable="${resource}" adaptTo="com.namics.example.sling.models.Example" var="model"/>

<h2>${model.title}</h2>

In einer entsprechenden AEM-Komponente mit einem Dialog, welcher eine Property title schreiben kann, kann Apache Sling Models dann konkret getestet werden. Der Titel wird automatisch anhand des Namens der Methode oder Attributes geladen, soweit dieser über @Inject annotiert ist.

Dokumentation
Der folgende Link zu Apache Sling bietet weitere Details zu Apache Sling Models.

Erstes Fazit
Apache Sling Models ist eine interessante Erweiterung von Apache Sling. Sie bietet gute Möglichkeiten, um Adobe AEM/CQ Code besser zu strukturieren und die Qualität in Projekten zu erhöhen. Zudem lässt sich Apache Sling Models über ein Service Provider Interface (SPI) auch für projektspezifische Belange erweitern.

Apache Sling Models – Teil 1 – Vorstellung

Apache Sling ist ein Web-Framework und Basis von Adobe CQ/AEM. Es bietet eine nahtlose Integration zum JCR-Repository Apache Jackrabbit über die eigene Resource-API. Mit der neuen Erweiterung Apache Sling Models bietet Apache Sling nun die Möglichkeit über Annotations Objekte mit Inhalten eines Repositories zu befüllen oder auch OSGI-Services zu injizieren. Über einen JSP-Tag lässt sich ein solches Objekt erzeugen und in einem JSP-Template darauf zugreifen.

Welche Probleme löst Apache Sling Models?
Apache Sling Models basiert auf dem Adapter-Interface von Sling. Damit lassen sich beliebige Objekte in andere transformieren (adaptTo), soweit die entsprechende Transformation unterstützt wird. Dies wird auch durch Apache Sling Models verwendet. Ein Sling Resource-Objekt, welches beispielsweise Properties eines Blog-Eintrages enthält, kann mit resource.adaptTo(Example.class) über Sling Models direkt in ein entsprechendes POJO transformiert werden. Das POJO selbst hat abgesehen von Annotations keine Abhängigkeiten zum Sling Framework. Es lässt sich so beispielsweise besser mit JUnit testen und wird insgesamt einfacher.

Aktuelle Praxis
In unseren aktuellen Adobe AEM/CQ-Projekten werden ähnliche Ansätze, wie Apache Sling Models bietet, bereits verwendet. So verwendet Namics seit einigen Jahren eine eigene, auf Annotations basierendes Bibliothek. Ein wichtiger Vorteil für uns ist da die Trennung von Code und Templating. Die JSPs können ausschliesslich als Templates verwendet werden und die Logik ist in Java-Code enthalten. Dies erhöht die Code-Qualität einerseits durch das Design, andererseits auch durch bessere Testing-Möglichkeiten.

Beispiel
Das folgende Beispiel zeigt, wie ein einfaches Sling Model aussehen und verwendet werden kann.

@Model(adaptables=Resource.class)
public class Example {

@Inject
private String title;
}

Example example = resource.adaptTo(Example.class);

Im zweiten Teil dieser Blog-Serie wird das Beispiel näher erklärt und gezeigt, wie die ersten Schritte mit Apache Sling Models in AEM 5.6.1 durchgeführt werden können.

Welcome to Sidekick

Adobe Sidekick

Adobe Sidekick

Adobe stellt in seinem aktuellen Partner Newsletter Sidekick vor, das „erste interaktive und digitale Magazin für Adobe Experience Manager Entwickler und Architekten“.

The title of the magazine refers to the toolbox authors use to build rich and engaging content. The same toolbox that developers are building, enhancing and/or modifying components for as part of the overall delivery of an Adobe Experience Manager implementation.
But Sidekick actually refers as well to the more literal meaning of the word, being yet another, community driven, ‚assistant‘ to our developers and architectects on top of the communication and information that Adobe offers around Adobe Experience Manager.

Adobe Sidekick (Ausgabe 0) gibt es als interaktives Magazin für Apple und Android Tablets, sowie als statisches PDF für den Desktop.

Sidekick Apple iTunes
Sidekick Google Play
Sidekick PDF

Schnelles Deployment in CQ mit den Sling IDE Tools

An der AdaptTo() 2013 wurde das erste Mal über die neuen Sling IDE Tools berichtet. Der Vortrag von Robert Munteanu gab einen guten Einblick über den aktuellen Stand und die Vision dahinter. In diesen Blogbeitrag berichte ich von den ersten Erfahrungen bei der CQ Entwicklung mit den Sling IDE Tools.

Die Sling IDE Tools sollen die Entwicklungsprozesse verbessern und im ersten Schritt das inkrementelle Deployment während der Entwicklung beschleunigen. Die Sling IDE Tools sind im Moment nur für Eclipse verfügbar, aber weitere Entwicklungsumgebungen sind später denkbar.

(mehr …)

Varnish Präsentation an adaptTo() 2013

An der adaptTo() 2013 habe ich für Namics einen Vortrag über das Thema Caching mit Varnish im Umfeld von CQ5 gehalten.

Die Inhalte:

  • Einleitung zu Varnish
  • Anwendungsfälle und mögliche Architekturen
  • Einschränkungen und Stolperfallen

Bei den Anwendungsfällen wurden drei Beispiele beschrieben, welche nachfolgend kurz erläutert werden.

(mehr …)

Seite 1 von 212