
Javid Jamae, Peter Johnson
Deutsche Übersetzung von Dorothea Heymann Reder
JBoss im Einsatz
Den JBoss Application Server konfigurieren
517 Seiten. FlexCover
€ 49,90
ISBN 978-3-446-41574-4
Vor nicht allzu langer Zeit waren Begriffe wie „Enterprise-Java-Beans“ oder „Application-Server“ noch von einer mystischen Aura umgeben. Nur tapfere Software-Architekten nahmen den Kampf mit dieser Technologie auf und sangen noch Jahre später von ihren Heldentaten. Mit der Java Enterprise Edition 5 hat sich die Sache wesentlich zum Besseren gewendet. Das Erstellen von Session-Beans und das Mappen von Modell-Objekten ist schnell erklärt und gehört heute zum Rüstzeug der meisten Java-Entwickler. Auch das Betreiben eines Application-Servers ist – von wenigen Ausnahmen abgesehen – geradliniger geworden.
Frei nach dem Motto: „Man kann nur konfigurieren, was man auch versteht“, treten die Autoren Javid Jamae und Peter Johnson an, den Betrieb eines JBoss AS 5 dem geneigten Entwickler näher zu bringen. Die Autoren nutzen ihre langjährige Erfahrung, um genau das in den Fokus zu rücken, was für eine erfolgreiche Produktivstellung von Anwendungen ausschlaggebend ist. Das Buch richtet sich dabei an Leser, die mit den Java-EE-Spezifikationen (EJB, JMS, JPA, JCA, JAXWS, …) bereits bestens vertraut sind; es wird deshalb nur überblicksartig erläutert, wie man Java-EE-Anwendungen erstellt. Das Augenmerk wird vielmehr auf die Frage gerichtet, wie man Anwendungen bereitstellt, absichert, auf Performance trimmt und ihre Verfügbarkeit in der Produktion sicherstellt. Neben den klassischen Java-EE-Anwendungen gehen die Autoren auch detailliert auf das Produkt JBoss Portal ein.
‘Buchrezension: JBoss im Einsatz’ weiterlesen
Zwischen der Flexibilität reinen SQLs und der Mächtigkeit ausgewachsener O/R-Mapper existiert eine kleine Bibliothek, die es beinahe in das JDK 6 geschafft hätte: EoD SQL (Ease of Development SQL). Die Idee hinter EoD SQL ist so genial wie einfach: Der Nutzer annotiert ein Java-Interface mit SQL-Statements und die Bibliothek liefert mittels eines Java-Reflection-Proxys eine Implementierung dieses Interfaces zur Benutzung:
public interface NutzerMgmt extends BaseQuery {
@Select("SELECT COUNT(*) FROM USER")
long ermittleNutzerAnzahl();
}
Folglich die Benutzung :
Connection c = … ;
NutzerMgmt nutzerMgmt = QueryTool.getQuery(c, NutzerMgmt.class);
try {
long anzahl = nutzerMgmt.ermittleNutzerAnzahl();
} finally {
nutzerMgmt.close(); // schließt ebenfalls die Connection
}
Möchte man das Gleiche mit reinem SQL erreichen, so ist der Code ungleich komplizierter:
‘O/R-Mapping ohne Schnickschnack’ weiterlesen
Allgemein bekannt ist die Tatsache, dass Managed-Beans in der Faces-Config-XML-Datei nicht nur deklariert, sondern auch initialisiert werden können. Schon weniger bekannt ist die Tatsache, dass bei der Initialisierung der Beans auch Verknüpfungen zu anderen Managed-Beans hergestellt werden können. Zur Verdeutlichung soll der folgende Code-Schnipsel dienen:
<faces-config version="1.2" ...>
<managed-bean>
<managed-bean-name>user</managed-bean-name>
<managed-bean-class>
my.app.model.Person</managed-bean-class>
<managed-bean-scope>application</managed-bean-scope>
<managed-property>
<property-name>homeAddress</property-name>
<value>#{address}</value>
</managed-property>
</managed-bean>
<managed-bean>
<managed-bean-name>address</managed-bean-name>
<managed-bean-class>
my.app.model.Address</managed-bean-class>
<managed-bean-scope>application</managed-bean-scope>
<managed-property>
<property-name>city</property-name>
<value>Dresden</value>
</managed-property>
<managed-property>
<property-name>street</property-name>
<value>Leipziger Str. 93</value>
</managed-property>
</managed-bean>
</faces-config>
WEB-INF/faces-config.xml: Initialisierung einer Managed-Bean
In Zeile 9 wird die Verbingung zwischen der Bean “user” und der Bean “address” über die Eigenschaft “homeAddress” hergestellt.
Wie lässt sich allerdings die Sache angehen, wenn man für das Address-Objekt keine eigenständige Bean deklarieren möchte?
‘Initialisierung von JSF-Managed-Beans’ weiterlesen
Möchte man ein Nicht-Maven-Artefakt samt Quellen und Javadoc in ein privates Maven-Repository einbringen, so scheint sich das Maven-Kommando maven deploy:deploy-file bei den Prüfsummen gründlich zu verrechnen:
[WARNING] *** CHECKSUM FAILED - Checksum failed on download:
local = ‘ce32ed2aacb0fc64e82…’; remote = ‘8d52454bff41a149f4b…’
- RETRYING
Ein kleines Shell-Skript - auf Seiten des Repositorys - verschafft Abhilfe:
#! /bin/bash
find . -type f \
\( -name '*.jar' -or -name '*.pom' -or -name '*.xml' \) \
-print0 | while read -rd $'\0' file; do
sha1sum $file | cut -d ' ' -f 1 > $file.sha1
md5sum $file | cut -d ' ' -f 1 > $file.md5
done
Maven ist genial, solange es funktioniert.

Im Zuge einer Migration des Persistenz-Frameworks kann es sinnvoll sein, sein bestehendes Domänenmodell in einer Programmiersprache-neutralen Modellierungssprache neu zu erfassen. Dieser Weg bietet sich insbesondere dann an, wenn die bestehenden Klassen des Datenmodells keine Geschäftslogik besitzen oder wenn die enthaltene Geschäftslogik so regelmäßig ist, dass sie abstrakt beschrieben werden kann. Der Aufwand, der durch die Nachmodellierung entsteht, amortisiert sich schnell durch die zusätzlich gewonnene Flexibilität und Code-Qualität.
Für die Modellierung von Domänenmodellen ist meist die UML mit ihren Klassenstrukturdiagrammen die erste Wahl. Doch dieser Weg soll hier nicht beschritten werden. Anstelle der umfangreichen UML soll eine eigene domänenspezifische Sprache entwickelt werden, die für den beschriebenen Anwendungsfall optimiert ist. Als technische Grundlage wird das Framework Xtext aus dem openArchitectureWare-Werkzeugkasten genutzt.
‘Textuelle Beschreibung von Domänenmodellen’ weiterlesen