29.08.2012

CDI mit Tomcat 7 - Ein einfaches "Hello World!"

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!

1 Kommentar:

  1. Sascha macht uns den Rod Johnson und verzichtet zukünftig auf Spring :-)

    Bene.

    Axel

    AntwortenLöschen