Apache Geronimo Der jüngste Java-Anwendungsserver stellt sich vor... August 2009, UNI Düsseldorf Frank Pientka Senior Software Architect Telefon: +49 (231) 55 99-8854 E-Mail: Frank.Pientka@materna.de © MATERNA GmbH 2009 www.materna.de 1 MATERNA Gruppe Gegründet 1980 durch: Espoo Stockholm Kopenhagen Dr. Winfried Materna London Amsterdam Dortmund Brüssel Köln Heidelberg Paris Göppingen Erlangen München Bern Wien Bremen Hamburg Berlin Dresden Prag Hrádec Králové Bratislava Warschau Helmut an de Meulen 160 Mio. Umsatz in 2008 Paderborn Frankfurt Mailand Bukarest 1.300 Mitarbeiter Sofia 15. Platz Lünendonk-Liste 2009 erster Authorized Java Center in Deutschland 2 © MATERNA GmbH 2009 www.materna.de Vorstellung des Referenten: Frank Pientka Dipl.-Informatiker (TH Karlsruhe), Senior Architekt in Dortmund Über 10 Jahre Erfahrung mit Java und Middleware Veröffentlichungen und Vorträge zu: Datenbanken, Applikations- und Portalservern © MATERNA GmbH 2009 www.materna.de 3 JavaEE Generationen 13 (5 OS) Anzahl zertifizierte Server 24 (3 OS) Web Services Ease of Development Java EE 5 Ease of Development Annotations EJB 3.0 Persistence API New and Updated Web Services 29 Robustness J2 EE 1.4 Webservices, Management, Deployment, Async. Connector 20 Enterprise Java Platform J2 EE 1.3 CMP, Connector, Architektur J2 EE 1.2 JPE Project Servlet, JSP, EJB, JMS, RMI/IIOP May 1998 Dec 1999 Sept 2001 Nov 2003 March 2005 Quelle: SUN © MATERNA GmbH 2009 www.materna.de 5 JavaEE Geschichte: Standard vs Innovation JCP am Ende? Die Anforderungen steigen. Komplexität auch? © MATERNA GmbH 2009 www.materna.de 6 JavaEE 6.0 Java EE 6 Web Profile Specification Quelle: SUN © MATERNA GmbH 2009 www.materna.de 7 JavaEE 6.0 steht vor der Tür...Q4/2009 JSR-316 15 Monate Verzug im Zeitplan! Ziele: Erweiterbarkeit, Modularität/ Profile, einfachere Entwicklung, SCA Neue JSRs: JSR-196 Java Authentication SPI for Containers JSR-236 Timer for Application Servers JSR-237 Work Manager for Application Servers JSR-330 Dependency injection for Java JSR-299 Web Beans JSR-311 JAX-RS: Java API for RESTful Web Services Aktualisierte Technologien: Java SE 6-Unterstützung Enterprise JavaBeans 3.1 Java Persistence API 2.0 Servlets 3.0 JavaServer Faces 2.0 JAX-WS 2.2 Java EE Connector API 1.6 10 Jahre JavaEE "The next wave of innovation in platform middleware will likely emerge from the convergence of Spring, OSGi, SCA and other initiatives, rather than from the Java EE community. " Gartner "Java EE 6 will be the most important release of the platform since it was released nearly 10 years ago" Rod Johnson © MATERNA GmbH 2009 www.materna.de 8 Java-Applikationsserver sind bedroht Traditioneller Java-Applikationsserver Rezession Virtualisierung Cloud/SaaS schlanke SW © MATERNA GmbH 2009 www.materna.de 10 Das Ende des traditionellen Java-Applikationsservers?! © MATERNA GmbH 2009 www.materna.de 11 OpenSource-Applikationsserver: Downloadzahlen 2.1 2.1.1 2.1.2 2.1.3 2.1.4 Geronimo Version JBoss: 30.000 und 127.000 Downloads/ Monat Geronimo: 230.000 und 800.000 Downloads/ Monat Glassfish: 300.000 und 760.000 Downloads/ Monat (inkl. JavaEE SDK) © MATERNA GmbH 2009 www.materna.de 12 OpenSource-Applikationsserver: Codezeilen, Größen im Ohloh.net-Vergleich GlassFish (80-105 MB) JBoss Application Server (106 MB) Apache Geronimo (16, 55, 74 MB) © MATERNA GmbH 2009 www.materna.de 13 Geronimo Ohloh-Analyse "Very large, active development team Over the past twelve months, 26 developers contributed new code to Apache Geronimo. This is one of the largest open-source teams in the world, and is in the top 2% of all project teams on Ohloh." Mehr als 53 Committer von über 10 Firmen Software-Gesamtwert: $ 4,832,919 http://www.ohloh.net/projects/geronimo © MATERNA GmbH 2009 www.materna.de 15 Users' Choice AppServer Ranking 2008 Apache Geronimo "One surprise in this year's report was Geronimo, from Apache. Geronimo is relatively new, but users rated many of its featuresvery highly..." © MATERNA GmbH 2009 www.materna.de 16 Agenda 1 2 3 4 5 Noch ein Applikationsserver? Apache Geronimo: Überblick Erster Eindruck Migrationsvorgehen, Tools Ausblick © MATERNA GmbH 2009 www.materna.de 17 "I was born on the prairies where the wind blew free and there was nothing to break the light of the sun. I was born where there were no enclosures." Häuptling Geronimo (1829 ­1909) © MATERNA GmbH 2009 www.materna.de 18 Geronimo Ziele Einfache Benutzung Apache Software License Geeignet für Entwickler, Administratoren und Integratoren Eclipse-Unterstützung Regelmäßige Releases mit neuen Funktionen und Fehlerkorrekturen lebendige Community Alternative zur JavaEE-Spec-Implementierung von SUN © MATERNA GmbH 2009 www.materna.de 19 Was ist Apache Geronimo? Ein leichtgewichtiger JavaEE-Anwendungsserver unter Apache Lizenz Schmalfuß (~75 MB download) JavaEE zertifiziert Geringe Kosten Professioneller Support möglich sehr freie Lizenz © MATERNA GmbH 2009 www.materna.de 20 Apache Geronimo Versionen Kurzüberblick Projekt im August 2003 gestartet J2EE 1.4 Zertifizierung JEE 5.0 Zertifizierung Geronimo 1.0 Geronimo 1.1 Geronimo 2.0 Geronimo 2.1 Geronimo 2.2 Branch 2006 © MATERNA GmbH 2009 2007 2008 www.materna.de 2009 21 Apache Geronimo Komponenten OpenJPA Tomcat Möglichkeiten pro Produkt n und Version k ! © MATERNA GmbH 2009 www.materna.de 23 Apache Geronimo integriert OpenJPA Tomcat © MATERNA GmbH 2009 www.materna.de 24 OpenSource SOA-Stack Apache Axis/ CXF (Webservice) Tomcat/Geronimo (Applikationsserver) Pluto/ Jetspeed (Portal) ActiveMQ/ ServiceMix (ESB/JBI) Synapse-Axis (WS-ESB)/ Camel-CXF ODE (Orchestration Director Engine) Tuscany (SCA/SDO/DAS) jUDDI (Service Registry) © MATERNA GmbH 2009 www.materna.de 25 Apache SOA-Stack eigene Anwendung SOAP/Web Services (Axis) JMS Messaging Security / Authentication Web Tier Clustering andere Dienste EntwicklungsWartungs aufwand Apache Tomcat eigene Anwendung eigene Integration Apache Tomcat Security / Authentication Web Tier Clustering weitere Plug-ins für EJBs, Transaktion, etc. © MATERNA GmbH 2009 Geronimo Plug-In Kernel SOAP/Web Services (Axis) JMS Messaging Integriert getestet erweiterbar www.materna.de 26 SOA-Anwendungen innerhalb Geronimo jUDDI Repository für Web Services http://localhost:8080/juddi/ ActiveMQ Konsolen-Portlet Pluto Portlet-Container: JSR-168 Portlets Axis/ CXF (Webservice + Tools) © MATERNA GmbH 2009 www.materna.de 27 Dreischichten-Architektur HTTP/S Browser Geronimo-Server Webschicht Jetty/ Tomcat XHTML, JSON RMI Webserviceschicht Axis/ CXF Client SOAP/REST Portlet AJAX Pluto, DWR, Dojo Persistenzschicht RMI OpenEJB/OpenJPA Monitoring JMX JDBC MQ ActiveMQ Topic Queue Datenbank Derby 28 © MATERNA GmbH 2009 www.materna.de Geronimo Architektur: erweiterbar mit Plugins Etc. Jetty Tomcat Commons ActiveMQ Liferay Derby StAX OpenJPA OpenEJB Etc. CXF Axis 2 Etc. Etc. Etc. Optional Plugins LifeCycle Service Naming Service Kernel Services Security Service Transaction Service GBean Kernel Geronimo © MATERNA GmbH 2009 www.materna.de 29 Geronimo Bean (GBean) und Mikro-Kernel Modularer Mikro-Kernel (GBean-Manager) Jedes Modul ist eine GBean GBean haben Lebenszyklus und können zur Laufzeit gestoppt/ gestartet werden (~OSGI) GBeans sind Voraussetzung für Plug-ins GBeans über JMX-Adapter verwaltbar "Microkernels have won. The only real argument for monolithic systems was performance." (Andrew Tanenbaum, 1992) © MATERNA GmbH 2009 www.materna.de 30 Geronimo Bean (GBean) Abhängigkeiten GBean GBean GBean Konfiguration Geronimo Kern Konfiguration Abhängigkeiten werden in Deploymentplan beschrieben © MATERNA GmbH 2009 www.materna.de 31 Geronimo Module/ Konfiguration Eindeutiger Modul-Namen, wie in Maven2: moduleId=groupId/artifactId/version/type groupId artifactId version type Zusammenstellung von konfigurierten GBeans Modul wird selbst wieder als GBean verwaltet © MATERNA GmbH 2009 www.materna.de 32 Lebenszyklus einer GBean Offline STARTING Online RUNNING FAILED OFFLINE STOPPED STOPPING GBean mit allen Abhängigkeiten wird verwaltet. Dynamische Module ohne Neustart! © MATERNA GmbH 2009 www.materna.de 33 Geronimo Module/ Konfiguration Beispiel: org.apache.geronimo.configs/welcome-tomcat/2.0.2/car Modul mit Abhängigkeiten im Implementierungsplan beschrieben gruppe datei version typ Abspeicherung im Repository unter repository/ groupId/artifactId/version/artifactIdversion.type GBean3 GBean2 GBean1 Module1 © MATERNA GmbH 2009 www.materna.de 34 Modulverwaltung- und Konfiguration Geronimo Kernel speichern Module Repository laden referenziert config.xml © MATERNA GmbH 2009 www.materna.de 35 Verzeichnis-Aufbau Repository $GERONIMO_HOME/repository | +-/... | +-/commons-logging-+ | | | +-/commons-logging-+ | | | +--/1.0.4--+ | | | +-commons-logging-1.0.4.jar +-/... Ende der JAR-Hölle Von einer Version eines Moduls existiert nur ein Exemplar Transparente Adressierung, Vermeidung von Duplikaten © MATERNA GmbH 2009 www.materna.de 36 Geronimo Systemmodule © MATERNA GmbH 2009 www.materna.de 37 Geronimo Systemmodule: Startmeldung 1/9 org.apache.geronimo.configs/rmi-naming/2.1.3/car 2/9 org.apache.geronimo.configs/j2ee-server/2.1.3/car 3/9 org.apache.geronimo.configs/transaction/2.1.3/car 4/9 org.apache.geronimo.configs/j2ee-security/2.1.3/car 5/9 org.apache.geronimo.configs/jasper/2.1.3/car 6/9 org.apache.geronimo.configs/tomcat6/2.1.3/car 7/9 org.apache.geronimo.configs/geronimo-gbean-deployer/2.1.3/car 8/9 org.apache.geronimo.configs/sharedlib/2.1.3/car 9/9 org.apache.geronimo.configs/webservices-common/2.1.3/car © MATERNA GmbH 2009 www.materna.de 38 Modul-Abhängigkeiten activemqconsole tomcat6console tomcat6deployer openejb activemq-ra openejbdeployer tomcat6 jee-server transaction jee-specs rmi-naming xmlbeans jee-system © MATERNA GmbH 2009 www.materna.de 39 Eigenes Assembly openejbdeployer MyApp activemqconsole tomcat6console tomcat6deployer tomcat6 activemqra openejb jee-server transaction jee-specs rmi-naming xmlbeans jee-system © MATERNA GmbH 2009 www.materna.de 40 Geronimo fertige Assemblies ­ schlanke Software 8 Plugingruppen ab Geronimo 2.2 Big-G WAS CE Little-G Micro-G Eigenes Paket Bsp.: SOA-Assembly gaswerk.sourceforge.net © MATERNA GmbH 2009 Nur soviel, wie nötig www.materna.de 41 Ich bau mir meinen eigenen Server Plugins-Erstellung über: Webadministrationskonsole gsh.sh deploy/assemble Maven Eclipse Plugin Abhängigkeiten mit Dependency Viewer finden Assembly artifactid + targetpath: meinServer Minimale plugins auswählen über Menü mit Abhängigkeiten install plugins/assemble server com\ibm\wasce\assemblies\wasce-boilerplate-minimal\2.1.0.1 org\apache\geronimo\configs\tomcat6-deployer\2.1.1 org\apache\geronimo\plugins\console-core\2.1.1 Meldung: [INFO] Building tar: C:\Programme\IBM\WebSphere\AppServerCommunityEdition211\var\ temp\meinServer-1.0bin.tar.gz Entpackt tar unter $GERONIMO_HOME/meinServer cd $GERONIMO_HOME/meinServer/bin geronimo.bat run Ergebnis: 24-Module statt vorher 70, schlankere Oberfläche, schneller Start, weniger Ressourcenverbrauch © MATERNA GmbH 2009 www.materna.de 43 Produktvarianten: Darf es etwas mehr sein? Apache Geronimo 2.1.4 Little-G: Webserver ohne Webkonsole Tomcat, Jetty: ausgereift vs. innovativ/schnell AXIS, CXF: ausgereift vs. flexibel/schnell IBM WebSphere Community Edition (WAS CE) 2.1.1.3 Ohne Source-Code Bessere Qualität, Dokumentation, Beispiele Mehrere Plattformen Definierte, längere Release-Zyklen Migrationsmöglichkeit zu IBM WebSphere Support © MATERNA GmbH 2009 www.materna.de 48 Installation von Anwendungen $./deploy.bat deploy YourApplication.ear $./deploy.bat undeploy YourApplication.ear © MATERNA GmbH 2009 www.materna.de 51 Deploymenteinheiten mit Deploymentplan JAR META-INF\ejb-jar.xml openejb-jar.xml WAR WEB-INF\web.xml geronimo-web.xml EAR META-INF\application.xml geronimo-application.xml RAR © MATERNA GmbH 2009 META-INF\ra.xml geronimo-ra.xml www.materna.de 52 Deployment vereinfachen: Domain spezifische Sprache D e p l o y m e n t p l a n Unterschiede: Erstell-/Laufzeit © MATERNA GmbH 2009 www.materna.de 53 Beispiel: Anwendungsaufbau WAR Servlet ... ctx.getBean(,, Datenbank") ... web.xml Datenbank javax.sql.DataSource Container applicationContext.xml java:comp/env/Datenbank geronimo-web.xml Datenbank console.dbpool MySqlDS MySqlDS Deplomenentbeschreibung = Sprache für Geronimo-Deployment © MATERNA GmbH 2009 DB 54 www.materna.de Deployment auf der Kommandozeile: Alles im Griff Anwendungsmodul Konfigurations datenbank Geronimo Server Deploymentwerkzeug Repository Deploymentplan Hot, offline, Deployment mit Plan © MATERNA GmbH 2009 www.materna.de 55 Mehrere Geronimo Instanzen, Repositories, Plugins GeronimoServer DEV http://geronimo.apache.org/plugins/geronimo-2.1/ http://localhost:8080/plugin/maven-repo/ Maven Servlet Repository Farming Hosting GeronimoServer PROD GeronimoServer Master geronimo-plugins.xml CARModul.JAR CONFIG Modul.SER deploy search-plugins http://geronimo.apache.org/plugins/geronimo-2.1/ Repository deploy/distribute --targets XXX, name=MasterConfigurationStore © MATERNA GmbH 2009 www.materna.de 56 Cluster & Lastverteiler HTTP/S 8009 80 443 AJP Geronimo-Server 8080 8443 Sitzungsdaten AJP replizieren Datenbank Master Browser Browser ApacheHTTP Server mod_jk 8009 Geronimo-Server 8080 8443 Datenbank Slave EJB-Cluster mit Wadi, Terracota IIS-Verwendung über mod_proxy Tomcatcluster-Beispiel vorhanden © MATERNA GmbH 2009 Sitzungsübernahme bei Ausfall www.materna.de 57 Geronimo Monitoringkonsole: Beispiel JVM Mehrere Sichten Mehrere Server verfügbare Statistikdaten: Statistikdaten des Transaktionsmanagers JVM-Statistikdaten Statistikdaten für AJP-/Web-/WebSSL-Konnektoren Thread-Pool-Statistikdaten Statistikdaten für Webanwendungen © MATERNA GmbH 2009 www.materna.de 58 Agenda 1 2 3 4 5 Noch ein Applikationsserver? Apache Geronimo: Überblick Erster Eindruck Migrationsvorgehen, Tools Ausblick © MATERNA GmbH 2009 www.materna.de 59 Erste Schritte: JDK 6.0 installieren und JAVA_HOME setzten Herunterladen, auspacken: http://geronimo.apache.org/downloads.html Server starten: gsh.[bat|sh] geronimo/start-server Aufrufen: http://localhost:8080/console Module anzeigen lassen: gsh>deploy/list-modules Plug-ins suchen, installieren: dsh>deploy/search-plugins http://geronimo.apache.org/plugins/samples-2.1.2/ Anwendung installieren: gsh>deploy/list-modules Server stoppen (CTRL+C): gsh>geronimo/stop-server © MATERNA GmbH 2009 www.materna.de 60 Arbeitsschritte mit Geronimo Server starten: startup Anwendung installieren: deploy/deploy sample.war Anwendung starten deploy/start ModuleID Anwendung stoppen deploy/stop ModuleID Anwendung deinstallieren deploy/undeploy ModuleID Server stoppen: shutdown © MATERNA GmbH 2009 www.materna.de 61 Geronimo Web-Console Als AJAX-Portlet innerhalb des Pluto-Portal-Containers http://localhost:8080/console © MATERNA GmbH 2009 www.materna.de 62 Agenda 1 2 3 4 5 Noch ein Applikationsserver? Apache Geronimo: Überblick Erster Eindruck Migrationsvorgehen, Tools Ausblick © MATERNA GmbH 2009 www.materna.de 63 Werkzeugunterstützung Eclipse 3.5+WTP 3, MAVEN 2.0 SUN/IBM JDK 5.0 oder 6.0 Migrationsunterstützung für: Tomcat JBoss BEA WebLogic WebSphere Alternativ: NetBeans ANT RAD Build Run Manage © MATERNA GmbH 2009 www.materna.de 64 Ausgangslage Es wird zu eng Der Support läuft aus Mehr Flexibilität im neuen zu Hause Doch wie sieht der Weg aus? © MATERNA GmbH 2009 www.materna.de 66 Das sollte man vermeiden! OSGi EAR © MATERNA GmbH 2009 www.materna.de 67 Stufen der Migration? Aufwand Infrastruktur Deployment Cluster Server Anwendung EJB Deployment Deskriptor IDE, Monitoring Wissen © MATERNA GmbH 2009 www.materna.de 68 Migrationswege, -werkzeuge WAS CE Tomcat, JBoss, BEA Eclipse, Webkonsolen-Plugins Beschreibung vorhanden WAS CE WebSphere AS ND Migration Assistant for WAS CE 2.1 WAS 6.1 (J2EE 1.4) Migration Deployment-Deskriptoren (Deploymentplan [BND/EXT].XMI) Erkennung von Abhängigkeiten Bericht über nötige Anpassungen Evtl. Source-Code, Libs, Ressource-Definitionen manuell anpassen Ausführliches Redbook Alternativ Eclipse-Plugin TPTP-Regeln © MATERNA GmbH 2009 www.materna.de 69 Migrationspfade Wie migrieren? © MATERNA GmbH 2009 www.materna.de 71 Migrationsplan Schritte Bestandsaufnahme, Architekturreview, Ziele festlegen Planung Erfahrungsaufbau Entwicklungsumgebung Code-/Deployment-Migration Laufzeitumgebung Test Produktion Ergebnisse überprüfen, Tests Tuning, Optimierung © MATERNA GmbH 2009 www.materna.de 72 Agenda 1 2 3 4 5 Noch ein Applikationsserver? Apache Geronimo: Überblick Erster Eindruck Migrationsvorgehen, Tools Ausblick © MATERNA GmbH 2009 www.materna.de 73 Fazit Geronimo erste große Kunden/ Projekte in Deutschland moderne, mandantenfähige Architektur leichtgewichtig, flexibel und anpassbar automatisierbares Deployment, Konfiguration (deklarieren statt skripten) große Wahlmöglichkeit, Assemblies nach Maß, über 30 OSGi-Bundles! Migrationsunterstützung gute Werkzeugunterstützung klarer Releaseplan Support über IBM, Partner nächste Versionen 2.2, 3.0 (JavaEE 6.0) + OSGi Blueprint Service (RFC-124) http://svn.apache.org/repos/asf/geronimo/sandbox/blueprint/ viele Apache Projekte verwenden Geronimo Komponenten (z.B. Felix Karaf) www.materna.de © MATERNA GmbH 2009 74 Ausblick Wiedergeburt des Applikationsservers!? -> Großvater bleibt fit Marktkonsolidierung & J2EE-Migration Betrieb & Monitoring wichtiger (SLA) Standard vs Innovation Ende der Einheitsgröße, mehrere Konfektionsgrößen Produktrenovierung, neue Einsatzgebiete (SaaS, Cloud, XTP) -> JavaEE 6 Anfang vom Ende? JavaEE besser als sein Ruf (Profile, Annotationen)! Einheitliches Modulkonzept + Microkernel für Java? Wie geht es mit JCP weiter? Die Zukunft von Java ist Open Source! © MATERNA GmbH 2009 www.materna.de 77 Bücher, Artikel Geronimo: Apache Geronimo: Serverhandbuch, Frank Pientka, DPunkt-Verlag Apache Geronimo: Frank Pientka, JM 08/08 Experience Java EE Using WebSphere Application Server Community Edition: Redbook, 02/09, sg247639 Building Dynamic Ajax Applications Using WebSphere Feature Pack for Web 2.0: Redbook, 11/08, sg247635 Migrating from WebSphere Application Server Community Edition to WebSphere Application Server: Redbook, 08/07, sg247433 Developing Rich Internet Applications for WebSphere Application Server Community Edition: 09/08, IBM developerworks What's new in WebSphere Application Server Community Edition 2.1, 06/08, IBM developerworks © MATERNA GmbH 2009 www.materna.de 79 Wichtige Links WASCE- Dokumentation: www.ibm.com/developerworks/spaces/wasce publib.boulder.ibm.com/wasce/Front_en.html download.boulder.ibm.com/ibmdl/pub/software/websphere/wasce Geronimo-Dokumentation: cwiki.apache.org/geronimo Geronimo PlugIn-Repository: geronimo.apache.org/plugins Downloads: Sourcen: svn.apache.org/viewvc/geronimo/server Produktion: geronimo.apache.org/downloads.html Entwicklung: people.apache.org/builds/geronimo/server/binaries Eclipse: www.apache.org/dist/geronimo/eclipse/updates Benutzergruppen, Bugs: www.nabble.com/Geronimo-f134.html issues.apache.org/jira/browse/GERONIMO © MATERNA GmbH 2009 www.materna.de 80 Vielen Dank für Ihre/Eure Aufmerksamkeit! Kontakt: MATERNA GmbH Dipl. Inform. Frank Pientka Senior Software Architect Business Division Applications Telefon: +49 (231) 55 99-8854 Telefax: +49 (231) 55 99-272 E-Mail: Frank.Pientka@materna.de © MATERNA GmbH 2009 www.materna.de 81 Love Apache? Give Back with a "MyApache" Shoutout! http://www.youtube.com/user/TheApacheWay © MATERNA GmbH 2009 www.materna.de 82