"JBoss at Work" wirft einen Blick auf die komplette J2EE. Normalerweise mag ich diese Art von Büchern überhaupt nicht. Zu allen Themen wird ein bißchen was erlärt, aber nichts richtig. Dieses Konzept geht bei Fachliteratur selten auf. "JBoss at Work" ist diesbezüglich aber eine echte Ausnahme. Hier wird jede J2EE-Technologie zwar auch nur grob angerissen, aber die Stärke des Buches liegt darin, daß eine vollständige Applikation Kapitel für Kapitel aufgebaut und erweitert wird. Aus diesem Grund sollte man das Buch auch von der ersten bis zur letzten Seite lesen. Theoretisch kann man zwar einzelne Kapitel herausgreifen, aber empfehlenswert ist das nicht, da jedes Kapitel die Grundlage für das darauf folgende Kapitel bildet. Gestartet wird mit der Presentation-Tier, in der eine kleine MVC-Architektur mittels Servlets & JSPs erstellt wird, allerdings ohne Struts oder JSF. Wer von der Servlet- & JSP-Programmierung überhaupt keine Ahnung hat, der hat zu diesem Zeitpunkt eigentlich schon verloren und kann mit dem Lesen gleich wieder aufhören. Als Grundlage für das Verständnis von "JBoss at Work" muß man bereits Basiswissen für Session-Beans, MDBs, Security, Ant, XDoclet, JDBC, JNDI und vor allem für Servlets & JSPs mitbringen, denn dies ist KEINE Einführung in die J2EE, sondern eine Einführung in die JBoss-Programmierung. Des weiteren ist eine langjährige Erfahrung mit der J2SE unabdingbar.
Nachdem die Presentation-Tier steht, wird mit JDBC auf die Datenbank zugegriffen. Anschließend werden die JDBC-Zugriffe durch Hibernate wieder ersetzt, wobei man hier keine Vorkenntnisse für Hibernate benötigt, denn der Code ist auch für Anfänger sehr einfach zu verstehen. Die Autoren haben sich absichtlich für Hibernate als ORM entschieden und von Entity-Beans als Persistenz-Strategie definitiv abgeraten. Dennoch ist man EJBs nicht gänzlich abgeneigt, denn die Autoren erklären dem Leser in einem hervorragenden Abschnitt die Pro und Cons von EJBs bzw. geben Beispiele, wann man EJBs einsetzen sollte und wann nicht. Gerade diesen Abschnitt empfand ich als äußerst essentiell. Nach der Einführung von Hibernate erweitern die Autoren ihre Applikation um Stateless Session-Facades für den Zugriff auf die Business-Tier und um Message-Driven-Beans für die asynchrone Verarbeitung einer Kreditkartenprüfung. Nach erfolgter Prüfung der Kreditkarte wird der Kunde via JavaMail benachrichtigt, ob seine Karte gültig ist oder nicht. Anschließend wird mittels deklarativer Security und JAAS sichergestellt, daß auf die Web-Applikation auch wirklich nur die User zugreifen können, die eine Berechtigung dafür haben. Dieses Kapitel war das am schwierigsten zu verstehende, denn Authentication und Authorization innerhalb von J2EE zu erlangen ist kompliziert und aufwendig. Abgerundet wird die Applikation mit der Bereitstellung eines Web-Services, wobei dieses Kapitel auch für WS-Anfänger zu verstehen ist, sofern man nicht versucht, die langen Descriptoren zu lesen. Außerdem gibt es noch drei Anhänge, jeweils einen für Class-Loading, Logging und JAAS. Insgesamt war ich von dem Buch sehr positiv überrascht und konnte einige neue Dinge dazulernen, auch wenn die Kapitel nicht allzu sehr in die Tiefe gingen. Ein jeweiliges Referenzwerk für die Kernthemen der J2EE wie EJBs, Servlets, Security oder Web-Services kann "JBoss at Work" auf keinen Fall ersetzen, und dazu wurde es auch gar nicht konzipiert. "JBoss at Work" ist vielmehr für Entwickler gedacht, die die Grundlagen der J2EE bereits beherrschen, und die eine vollständig interagierende J2EE-Applikation im Einsatz erleben möchten. Aus diesem Grund findet man im Buch auch alle relevanten DD-Elemente, die XDoclet-Befehle, um den DD zu generieren, und die nötigen Ant-Scripts, um die Applikation zu deployen. Das ist nicht immer besonders spannend zu lesen, aber für den Praxiseinsatz unverzichtbar. Wer sich mit JBoss noch überhaupt nicht auskennt, der sollte zuerst das ebenfalls hervorragende O'Reilly-Buch "JBoss - A Developer's Notebook" lesen, und im Anschluß daran "JBoss at Work". Anschließend ist man bestens gerüstet, um eigene Programme im JBoss-Application-Server laufen zu lassen.