Zum ersten Mal schreibe ich gleich mal mit. :-) Wir sitzen im großen Raum im Haus der Wissenschaft und bei über 60 Anmeldungen hätte ich noch ein paar mehr Teilnehmer erwartet.

Das Thema ist auf jeden Fall brandaktuell: CDI

Mit Lars Röwekamp ist ein Top-Experte hier vor Ort.

Ein wenig Hintergrund zu den existierenden Architekturen, dem Mehrschichtenmodell. CDI wurde 2009 bereits in die Spec aufgenommen. Trotz einer kleinen Specification (JSR299) ist es inhaltlich sehr umfangreich. Ist ein leichtgewichtiges Komponentenmodell im Gegensatz zum EJB-Fullstack. Verfügt abgebraucht über Lifecycle, Scoping und es kann erweitert werden (z.B. Apache Codi).

Jetzt geht es um Scopes und den Einsatz von Proxys. Dadurch kann aus einem größeren Scope in einen kleineren Scope injected werden. Weiter geht es mit 'loosly-coupled' durch Events, Observer und Interceptors. CDI ist typesafe! Stichworte hier:

  • Qualifier
  • Stereotypes
  • Alternatives (Einsatz von Mocks)

Um CDI zu aktivieren muss nur ein Marker-XML-File (beans.xml) deklariert werden. Dann wird gewährleistet, dass mit dem Start des Servers alle DIs aufgelöst werden können. Einsatz ganz klar die Ablösung der Managed Beans von JSF!

Jetzt ein Beispiel - (eCustomer) mit einem CDI- Refactoring.

Das Beispiel wirft jetzt doch eine Menge Fragen auf, gerade wenn es auch um die @Produces Annotation im Zusamenhang mit einem @Qualifier geht.

Was kann injiziert werden? Einfache Java Klassen, Beans und Ressourcen. Eigentlich fast alles... Allerdings verlieren CDI -Beans ihre Transaktionen. Da gibt es jetzt wieder Interceptoren, um den Job zu erledigen (ist mit Extension realisiert -> CODI). Transaktionen können nun in die Schicht verschoben werden, in der sie auch benötigt werden (fachliche Transaktion im Gegensatz zu einer technischen Transaktion).

Beim Thema CDI Style UI schlägt das Thema Conversation zu Buche, die über mehrere Requests existiert (Timeout Support , Browser Tabs unterstützt). Auch hier wird wieder auf Apache CODI verwiesen. Das sollte man doch einen Blick werfen.

Abschließend nun die CDI-Events. Sie sind schichtenneutral, ggf. Transaktionsgebunden und mit synchroner Interaktion. Realisierung durch das Observer-Pattern.

Gefühlt entsteht mit CDI eine 'Wolke' (keine Cloud! :-) , aus der man sich die Funktionen herausgreift. Effekt ist, dass sich ein verstärkter Fokus auf die Fachlichkeit ergibt und die Produktivität steigt!