GeronimoGeronimo ist das Apache Projekt, in dem ein J2EE kompatibler Application Server entstehen soll. Diese Session sollte die Architektur darstellen.
Natürlich ist die erste Herausforderung, andere Projekte zu integrieren. Dann ist ein weiteres Problem, dass man unterschiedliche Szenarien für das Deployment eines Application Servers hat:
- Desktop für einen Entwickler
- Unmanaged Server, d.h. ein kleiner Server, um den sich sonst niemand kümmert
- Managed Server (clustered, in einer Enterprise Umgebung)
Aus diesen Anforderungen ergibt sich der Wunsch nach einem leicht-gewichtigen Kernel als eine non-intrusive Integrations Plattform. Features sind:
- Component Registry
- Repository
- Component Management
Soweit alles Standard. Eine interessante Sache ist der Begriff eines Services als eine Ansammlung von Komponenten, die kollaborativ einen bestimmten Dienst anbieten. Diese soll es auch mehrfach parallel geben können z.B. für Versionierung. Außerdem muss man die Dependencies verwalten.
Dann wurde der Technologiestack vorgestellt. Wie gesagt: Geronimo ist eine Ansammlung von mehreren Services, um einen J2EE Container zusammenzustellen. Hier einige der Technologien (vor allem jene, die nicht aus dem Apache Projekt kommen):
- Jetty als Web Container (Tomcat geht aber auch) Coole Entscheidung, die anscheinend darauf basiert, dass von Tomcat niemand Interesse gezeigt hat.
- OpenEJB, der wohl auch hohe nebenläufige Belastungen ausgelegt ist
- TranOL für JCA
- ActiveMQ für JMS
- Axis für Web Services
GBeanBasis der ganzen Geschichte sind GBeans und ein Dependency Injection Container. Allerdings hat dieser Container einige andere Probleme zu lösen als z.B. Spring: Er muss langlebige Komponenten mit System Failures, Reboot, parallelen Version und schneller Recovery unterstützen.
Eine interessante Geschichte ist auch der Configuration Builder, mit dem man z.B. aus einem EAR und einem Deployment Plan eine Gesamtkonfiguration bauen kann, die man dann nur noch auf alle Server im Cluster kopieren muss. Das Vorgehen erleichtert natürlich den Umgang mit sehr großen Konfigurationen.
FazitDas ganze hört sich danach an, als hätte es Hand und Fuß. Aus dem Vortrag konnte ich keine echten großen Vorteile von Geronimo entnehmen. Insbesondere gibt es das alte Problem, dass ein Java EE Container keine durchgängige Architektur hat. Servlets und EJBs sind beide Komponenten, die eigentlich gleich verwaltet werden sollten. Wenn ich aber einen externen Web Container einbinde, wird das kaum gehen. Was bedeutet das? Den technisch perfekten Application Server gibt es auch hier nicht, aber das ist nichts wirklich neues...