Was tun, wenn man keinen "richtigen" Application Server zur Verfügung hat, aber trotzdem CDI testen möchte? Richtig, man greift auf den Tomcat 7 im Zusammenspiel mit einer JBoss-Erweiterung zurück.
Nach dem letzten Vortrag der JUG über den Einsatz von CDI in No-Tier-Enterprise Applications (Folien auch auf Slideshare verfügbar) wollte ich mal testen, ob das ganze auch mit dem Tomcat 7 realisierbar ist.
Die schlechte Nachricht ist, dass von Haus aus der Tomcat keine Unterstützung bietet, sondern erst mit einer weiteren Bibliothek gepimpt werden muss. Die gute Nachricht ist allerdings, dass durch den Einsatz der Bibliothek keine Konflikte entstehen und dem Einsatz von CDI nichts im Wege steht.
Für die Nutzung von CDI sind drei Schritte notwendig. Zum einen ist es notwendig, dass die Dependency dem bestehenden Projekt hinzugefügt wird. Danach wird ein Listener innerhalb der web.xml definiert und schlussendlich wird noch die beans.xml angelegt.
1) Hinzufügen der Dependency
2) Erweitern der web.xml mit einem zusätzlichen Listener
3) Hinzufügen der leeren beans.xml
Das war schon die halbe Miete, mehr muss für das einfache Beispiel nicht konfiguriert werden.
Die Struktur der Anwendung ist ebenfalls bewusst einfach gehalten und besteht im wesentlichen aus zwei Klassen, der Service-Klasse HelloWorld und dem Servlet HelloWorldServlet.
HelloWorld ist ein einfacher Service, der auf Anfrage den Text "HELLO WORLD!" zurück gibt.
HelloWorldServlet ist mittels @javax.servlet.annotation.WebServlet als Servlet definiert worden und steht somit als Endpoint der Anwendung zur Verfügung. Gleichzeitig wird eine Instanz von HelloWorld in das Servlet injected und dort zur Ausgabe "HELLO WORLD!" genutzt.
Ein Aufruf des Servlets liefert dann, nach Start des Tomcats die gewünschte Ausgabe.
Ziemlich einfach und schnell zu realisieren! Da werde ich auf jeden Fall mal ein wenig testen!
Der Code ist natürlich auch im Repo verfügbar!
Posts mit dem Label CDI werden angezeigt. Alle Posts anzeigen
Posts mit dem Label CDI werden angezeigt. Alle Posts anzeigen
29.08.2012
20.07.2012
No-Tier Enterprise Applications with CDI (Lars Röwekamp)
Live gebloggt wird mein Bericht von der JUG Ostfalen nicht, aber nichts desto trotz halte ich meinen Eindruck des Abends einfach mal fest.
Insgesamt waren ca. 20-25 Teilnehmer im Haus der Wissenschaft und haben Lars Röwekamp (www.openknowledge.de) bei seinem Vortrag zum Thema CDI zugehört. Lars geht in seinem Vortrag auf die Möglichkeiten ein, die sich seit der Einführung von CDI 1.0 ergeben haben.
Ziel des Vortrags war zu demonstrieren, dass eine klassische 3-Tier Application mit Hilfe von CDI in quasi in eine No-Tier Application umgewandelt werden kann.
Ein wichtiger Punkt direkt vorab. Die eigentliche Schichtentrennung wird dabei nicht aufgehoben, sondern bleibt im wesentlich "unter der Haube" vorhanden. Wir gehen also nicht zurück in die Welt des Spaghetti-Code oder des GOD-Patterns.
Man kann aber klar erkennen, dass mit der Einführung von CDI (seit Java EE 6) deutlich weniger Overhead bei der leichtgewichtigen Erstellung von Enterprise-Anwendungen vorhanden ist. Die Entwicklung geht damit weg von einer klassischen Ausrichtung, hin zu einer vereinfachten, lose gekoppelten Architektur in der sich die Transaktionen auf eine fachliche Ebene verschieben und die Services als eine Wolke von Businessobjekten zur Verfügung stehen. Damit stehen nicht mehr die infrastrukturellen Themen im Vordergrund, sondern die wesentlich wichtigeren fachlichen Aufgaben.
Nach einer kurzen Einführung in das Thema CDI:
Insgesamt waren ca. 20-25 Teilnehmer im Haus der Wissenschaft und haben Lars Röwekamp (www.openknowledge.de) bei seinem Vortrag zum Thema CDI zugehört. Lars geht in seinem Vortrag auf die Möglichkeiten ein, die sich seit der Einführung von CDI 1.0 ergeben haben.
Ziel des Vortrags war zu demonstrieren, dass eine klassische 3-Tier Application mit Hilfe von CDI in quasi in eine No-Tier Application umgewandelt werden kann.
Ein wichtiger Punkt direkt vorab. Die eigentliche Schichtentrennung wird dabei nicht aufgehoben, sondern bleibt im wesentlich "unter der Haube" vorhanden. Wir gehen also nicht zurück in die Welt des Spaghetti-Code oder des GOD-Patterns.
Man kann aber klar erkennen, dass mit der Einführung von CDI (seit Java EE 6) deutlich weniger Overhead bei der leichtgewichtigen Erstellung von Enterprise-Anwendungen vorhanden ist. Die Entwicklung geht damit weg von einer klassischen Ausrichtung, hin zu einer vereinfachten, lose gekoppelten Architektur in der sich die Transaktionen auf eine fachliche Ebene verschieben und die Services als eine Wolke von Businessobjekten zur Verfügung stehen. Damit stehen nicht mehr die infrastrukturellen Themen im Vordergrund, sondern die wesentlich wichtigeren fachlichen Aufgaben.
Nach einer kurzen Einführung in das Thema CDI:
- IoC / DI lite (Java EE ohne EJB)
- IoC / DI advanced (Lifecycle Management und Scoping)
- IoC / DI extreme (Typsicherheit und lose Kopplung)
- IoC / DI open (leichtes Customizing)
ging es auch direkt in ein praktisches Beispiel anhand eines einfachen Use-Case. In dem Beispiel wurde sowohl die Leichtgewichtigkeit während der Entwicklung, als auch die zahlreichen Vorteile klar. Der für mich persönlich größte Benefit liegt definitiv in der fachlichen Konzentration anstelle der Infrastruktur-Themen. Die Arbeit mit fachlichen Objekten und das Loslassen von infrastrukturellen Themen ist definitiv ein Punkt der mir gefallen hat.
Was mir persönlich allerdings gefehlt hat, ist eine deklarative Transaktionssteuerung, diese musste, wie im Beispiel klar geworden ist, selber erstellt werden. Es soll allerdings mit Erscheinen der Version 1.1 eine Möglichkeit geschaffen werden.
Ebenfalls etwas unschön fand ich die Steuerung der Conversations, da diese innerhalb der Methoden gestartet und auch beendet werden müssen. Auch da würde ich mir eine deklarative Steuerung über Annotationen wünschen. Im aktuellen Stand muss dieses Feature, beispielsweise über Interceptors, selber entwickelt werden.
Alles in allem ein sehr gelungener Abend, der sicherlich von der Qualität des Vortrags, wie auch von der Länge des Vortrags herausragend war.
Danke JUG!
Abonnieren
Posts (Atom)



