Sonntag, 20. August 2006

Eine günstige und flexible J2EE-Architektur

Ich wollte schon seit langem einmal eine J2EE-Anwendungs- architektur austesten, die die Frameworks Java Server Faces (JSF), Spring und Hibernate in sinnvoller Weise kombiniert und damit in allen Schichten deren Vorteile ausschöpft. (Echte serverseitige Komponenten für die Darstellungsschicht, deklarative Definition der Serviceschicht und objektrelationales Mapping für die Datenbankzugriffschicht.)

Der Vorteil: Es handelt sich um kostenlose Opensource- Technologien, die zusammen ein flexibles, sauberes und dabei gut skalierendes Anwendungsdesign bis hin zu deklarativem Transaktionsmanagement gestatten (dank Spring). Java Server Faces hatten leider noch so ihre Macken, und das obwohl Sun sie schon vor Jahren als Konkurrenz zu Microsofts ".net" (Sprich: "dot-nett") in's Rennen geschickt hatte. Insbesondere die Verwendung von JSPs als Rendering-Technologie wollte so überhaupt nicht zu dem Lifecycle von JSF passen. (Darauf hatte Hans Bergsten schon frühzeitig in einem Artikel hingewiesen.) Inzwischen sind aber Facelets hinzugekommen, die diese Probleme weitestgehend beheben und mit denen Java Server Faces vor allen Dingen dank der einfachen Templating-Möglichkeiten erst so richtig Spaß machen.

Nun kann ich endlich einen Erfolg vermelden: Unter http://www.melista.de ist eine kleine Anwendung zu bestaunen, die die genannten Frameworks verwendet. Da sie nur zur Bestätigung des Konzeptes dienen sollte, enthält sie zur Zeit noch keine weiteren Funktionen außer denen zur Registrierung, zum An- und zum Abmelden.

Ein mittelgroßes Problem stellte das Hosting im Internet dar, aber auch hier haben sich dank der neu aufgekommenen virtuellen privaten Server (VPS) neue Möglichkeiten ergeben.

Ich habe einen VPS bei webperoni gemietet, der mit Suse Linux 10.x, Virtuozzo und Plesk daherkommt. (Zum günstigen Preis von € 10,- pro Monat.) Er stellt sich wie ein echter eigener Server dar und erlaubt über ssh vollen root-Zugriff, so dass man sowohl in einer Konsole sämtliche Befehle ausführen als auch z.B. über das vom Konqueror unterstützte fish:-Protokoll das komplette Dateisystem browsen kann. Im Konsolenfenster kann man dann z.B. das Suse-Konfigurationstool yast aufrufen und darüber bequem Pakete nachinstallieren, Runlevel editieren, sysconfig-Dateien anpassen usf.

Zwar bieten auch die großen Provider wie 1&1 mittlerweile virtuelle private Server an, jedoch ist es mir dort noch nicht gelungen, einen nachinstallierten Tomcat-Server auch an's Laufen zu bekommen. (Offenbar aufgrund einer mangelhaften Speicherkonfiguration.)

Um nun noch meine Webanwendung unter dem Port 80 (statt des Tomcat-üblichen Ports 8080) verfügbar zu machen, musste ich noch das Apache-Modul mod_jk nachinstallieren und konfigurieren. (Zwar hätte ich auch Apache deaktivieren und den Tomcat-Server selbst unter dem Port 80 starten lassen können. Dazu hätte er jedoch aufgrund einer Beschränkung des 80er-Ports beim Linux-Betriebsystem unter einem Benutzer mit root-Rechten laufen müssen und das wiederum hätte weniger Sicherheit bedeutet.) Die Konfiguration von mod_jk stellte sich als eine eigene Wissenschaft heraus, doch auch hierbei kam mir die wundervolle Suse-Distribution wieder zu Hilfe, indem sie in einer README-Datei zu diesem Modul eine funktionierende Schritt-für-Schritt-Anleitung bereitstellte.

Das Design der Anwendung selbst berücksichtigt außer Model-View-Controller (MVC) noch andere sinnvolle Entwurfsmuster wie z.B. das Fassadenmuster für eine Serviceschicht und das Datenzugriffsobjekt-Muster (DAO) beim Zugriff auf persistente Objekte mittels Hibernate. Sowohl in der Darstellungs- als auch in der Controller-, der Service- und der Datenbankzugriffschicht werden Plain Old Java Objects (POJOs) verwendet, die die Geschäftsobjekte abbilden. Für die Darstellungs- und die Controllerschicht können diese POJOs einfach als Managed Beans mit dem jeweils passenden Scope (Request, Session oder Application) in Java Server Faces deklariert werden.

Die gesamte derzeitige Controller-Funktionalität der Anwendung ist in folgendem Listing dargestellt:
AccountManagerBean-java (java, 4 KB)

Wie man sieht, sollte die Anwendung sehr einfach um neue Funktionalitäten ergänzt werden können, ohne jemals unübersichtlich zu werden. Damit ermöglicht auch J2EE durchaus Rapid Application Development für Webanwendungen und kann noch lange nicht von neueren Frameworks wie "Ruby on Rails" vom Thron gestoßen werden. Zugegebenermaßen erfordert die Einarbeitung in die J2EE-Welt sehr langes und ausdauerndes Lernen, jedoch steht dem als Plus eine Flexibilität und eine Auswahl an fertigen Problemlösungen bereit, die ihresgleichen suchen.
logo

Natürlicher Verstand

Dem Hauke seine Gedankenschnipselverwertung

Status

Online seit 7256 Tagen
Zuletzt aktualisiert: 8. Sep, 14:04

Suche

 

Aktuelle Beiträge

"Neoliberale sind Anarchisten,...
Das Originalzitat zu der Überschrift ("Libertarians...
hdressel - 8. Sep, 14:04
Eine günstige und flexible...
Ich wollte schon seit langem einmal eine J2EE-Anwendungs-...
hdressel - 20. Aug, 15:19
Wenn aber Linke eine...
Wenn aber Linke eine rechte Demo verhindern wollen,...
Nakry - 4. Jun, 18:19
Wieder im Angebot: Zwangsarbeit
Man muss sich schon fragen, ob die verantwortlichen...
hdressel - 4. Jun, 12:37
Warum Links besser als...
Gerade während der Regierungszeit von Rot-Grün ist...
hdressel - 24. Mai, 17:08

Archiv

August 2006
Mo
Di
Mi
Do
Fr
Sa
So
 
 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
10
11
12
13
14
15
16
17
18
19
21
22
23
24
25
26
27
28
29
30
31
 
 
 
 

Mein Lesestoff


Christoph Butterwegge, Bettina Lösch, Ralf Ptak, Tim Engartner
Kritik des Neoliberalismus



Albrecht Müller
Die Reformlüge



Raymond M. Smullyan
Das Tao ist Stille


Stefan Klein
Die Glücksformel


Arthur Schopenhauer, Rüdiger Safranski
Schopenhauer

Musikliste

Gesehene Filme



Muxmäuschenstill

Muriels Hochzeit

Alles über meine Mutter

Serial Mom

Credits

User Status

Du bist nicht angemeldet.

Allgemeines
J2EE
Medien
Philosophie
Politik & Soziales
Wirtschaft
Profil
Abmelden
Weblog abonnieren