Glassfish ist der Java EE5 kompatible Referenz-Server von Sun und in weiten Teilen identisch mit dem Sun Java Application Server.
Im Vergleich zum Tomcat hat er auch eine hübsche Verwaltungsoberfläche und glänzt mit einem professionellen Erscheinungsbild.
Auf den ersten Blick.
Denn geht es darum vernünftige Dokumentation zu liefern, geht der Punkt an Tomcat. Auch wenn der Ton teilweise etwas salopper ist, so sind die Informationen und Ausführungen wesentlich verständlicher und machen nicht den Eindruck maschinell generiert worden zu sein. Naja Sun möchte sicherlich auch durch Training und Zertifizierung Geld verdienen – lassen wir die Jungs mal.

Dann jedoch erwischte es mich eiskalt mit einem Punkt, den ich für simpel wie essentiell halte: Konfiguration von Web Applikatoinen per Umgebungsoptionen.

Die Idee dabei ist die folgende: Ich habe eine Anwendung, die auf (konfigurierbare) Ressourcen zugreift, wie z.B. eine Datenbank. (Wir lassen die Möglichkeit Datasources über den Container verfügbar zu machen einmal außen vor, damit ich das Beispiel weiter ausführen kann.)

Ich kann in der Applikation sinnvolle Standardwerte annehmen und einbauen, wie z.B. dass die Datenbank auf dem lokalen Rechner läuft und für „root“ ohne Passwort zugänglich ist.
Aber nun wird die Anwendung auf einem externen Server installiert, die Einstellungen müssen angepaßt werden. Ich möchte dazu natürlich nicht meine Applikation (das .war File) umpacken müssen um die Konfiguration zu ändern.
Praktischerweise gibt es da was von Spring. Im Prinzip wird dabei im JNDI geschaut ob ein Eintrag mit neuen Werten vorhanden ist, oder die default Werte übernommen werden sollen.
Schwupps schon ist alles fertig, ich kann auch ein Update der Software ohne Probleme vornehmen, da die deployment-spezifischen Teile beim Container konfiguriert sind.

Beim Tomcat ist das kein Problem, es ist sogar eins der ersten Beispiele aus dem Tutorial. Glassfish hingegen ist dazu schlicht und ergreifend nicht in der Lage.
Und ich habe gesucht! Anfangs dachte ich ja, es läge an mir – aber offenbar geht es auch anderen so:
Wie man hier, hier und hier sehen kann.

Vielleicht gibt es ja eine geschicktere Möglichkeit, diese Konfigurationen vorzunehmen – ich freue mich da über jedes Feedback. Aber Glassfish hat damit bei mir richtig Boden verloren. Davon mal ganz abgesehen wie viel Zeit ich investiert habe, nur um keine Lösung für dies Problem zu finden. (Und das Problem des bootstrappings von Anwendungen existiert ja nicht gerade erst seit gestern)