Gerd W�therich Martin Lippert Mit OSGi Webanwendungen entwickeln Agenda � Warum Webanwendungen mit OSGi? � Architekturmodelle � Web-Container innerhalb von OSGi � OSGi innerhalb eines Web-Containers � Ausblick � Gerd W�therich, Martin Lippert; Licensed under Creative Commons Attribution-Noncommercial-Share Alike 3.0 Germany License Modularisierung und Webanwendungen � Modularisierung in Java kommt! � OSGi � Java Module System � Was ganz anderes? � Webanwendungen sind ein wesentliches Einsatzgebiet von Java � Wir brauchen eine Antwort, wie das zusammenpasst! � Gerd W�therich, Martin Lippert; Licensed under Creative Commons Attribution-Noncommercial-Share Alike 3.0 Germany License Typische Einsatzgebiete von OSGi � � � � Eclipse-SDK RCP-Anwendungen Standalone-Anwendungen Embedded-Systeme � Und Webanwendungen? � Gerd W�therich, Martin Lippert; Licensed under Creative Commons Attribution-Noncommercial-Share Alike 3.0 Germany License Warum OSGi? � Aus Entwicklersicht: � � � � Modularisierung f�r Webanwendungen Klares Abh�ngigkeitsmanagement JAR-Hell endlich hinter sich lassen Dynamik erm�glichen � Gerd W�therich, Martin Lippert; Licensed under Creative Commons Attribution-Noncommercial-Share Alike 3.0 Germany License Warum OSGi? � Aus Betriebssicht: � � � � � Updates in Produktion ohne Herunterfahren einer App Granularit�t von Updates (Bundles statt ganze App) Dynamik erm�glichen Flexibles Management Verschiedene Versionen gleichzeitig betreiben � Gerd W�therich, Martin Lippert; Licensed under Creative Commons Attribution-Noncommercial-Share Alike 3.0 Germany License Was bedeutet das? � Webanwendungen bestehen aus OSGi-Bundles � � � � � � Keine klassischen WAR-Files mehr Stattdessen Standard-OSGi-Bundles Libraries in eigenen Bundles Web-UIs in getrennten Bundles Nutzung von OSGi-Services etc. � Umdenken im Bau von Anwendungen! � Eine gute Struktur entsteht nicht von alleine � Gerd W�therich, Martin Lippert; Licensed under Creative Commons Attribution-Noncommercial-Share Alike 3.0 Germany License Web-Container und OSGi � Die OSGi-Welt besteht aus OSGi-Bundles, die in einer OSGi-Runtime laufen � Wo bleibt der klassische Web- und ServletContainer? � Gerd W�therich, Martin Lippert; Licensed under Creative Commons Attribution-Noncommercial-Share Alike 3.0 Germany License Architekturmodell 1 � Web Container l�uft innerhalb des OSGi Frameworks � Web Container wird als Bundle innerhalb des OSGi Frameworks installiert und gestartet � Anwendungs-Bundles k�nnen Webapplikationen (oder Teile davon) in den Web Container deployen � Gerd W�therich, Martin Lippert; Licensed under Creative Commons Attribution-Noncommercial-Share Alike 3.0 Germany License �bersicht ,,Embedded Web Container" � Fragen: � Wie werden Webanwendungen (oder Teile davon) in den eingebetteten Container deployed? � Welche Elemente der Servlet-Spezifikation werden unterst�tzt? � Gerd W�therich, Martin Lippert; Licensed under Creative Commons Attribution-Noncommercial-Share Alike 3.0 Germany License OSGi HTTP Service I � OSGi Standard Service seit R1 � Zugriff auf den Servlet Container �ber das Interface ,,org.osgi.service.http.HttpService" � Servlets und Ressourcen k�nnen dynamisch registriert und deregistriert werden � Gerd W�therich, Martin Lippert; Licensed under Creative Commons Attribution-Noncommercial-Share Alike 3.0 Germany License OSGi HTTP Service II � Rudiment�re Unterst�tzung der Servlet-Spezifikation � Servlets � Resourcen � Unterst�tzte Web-Elemente: Element Servlets Servlet init params Servlet mappings Mime mappings Element in web.xml � Gerd W�therich, Martin Lippert; Licensed under Creative Commons Attribution-Noncommercial-Share Alike 3.0 Germany License Equinox-Jetty-Integration � Alternative Implementierung des OSGi HTTP Service auf Jetty-Basis � JSP-Support (Jasper-Engine) � Anmelden von Servlets, JSPs und Ressourcen �ber Extension Points � Ansonsten gleiche Beschr�nkungen wie beim OSGi HTTP Service � Gerd W�therich, Martin Lippert; Licensed under Creative Commons Attribution-Noncommercial-Share Alike 3.0 Germany License PAX Web I � http://wiki.ops4j.org/display/paxweb/Pax+Web � Basiert auf Jetty � Erweitert den OSGi HTTP Service � Dynamisches An- und Abmeldung von Web Elementen �ber das Interface ,,org.ops4j.pax.web.service.WebContainer" � JSP-Support � Gerd W�therich, Martin Lippert; Licensed under Creative Commons Attribution-Noncommercial-Share Alike 3.0 Germany License PAX Web II Element Context params Element in web.xml Session timeout Servlets Servlet init params Servlet mappings Filter Filter init params Filter mappings Listeners Error pages Welcome files Mime mappings � Gerd W�therich, Martin Lippert; Licensed under Creative Commons Attribution-Noncommercial-Share Alike 3.0 Germany License PAX Web � Alternative Deployment-Modelle � Pax Web Extender � Whiteboard Implementierung des Whiteboard Patterns Servlets, Ressourcen etc. werden selber als OSGi Services an der OSGi Service Registry implementiert � Pax Web Extender � War Implementierung des Extender Patterns Erm�glicht das Deployment von ,,bundle-fizierten" WARs Spezifikation der Webelemente �ber ,,WEB-INF/web.xml" � Gerd W�therich, Martin Lippert; Licensed under Creative Commons Attribution-Noncommercial-Share Alike 3.0 Germany License Spring Dynamic Modules - Web Support I Spring Dynamic Modules: Formerly known as ,,Spring-OSGi" Mitglied der Spring-Familie http://www.springframework.org/osgi Keine eigene OSGi-Framework-Implementierung, sondern eine Br�cke zwischen Spring und OSGi-Framework Spring DM Web Support: Fokus in Spring DM 1.1 Integration von Spring DM mit Web-Applikationen � Gerd W�therich, Martin Lippert; Licensed under Creative Commons Attribution-Noncommercial-Share Alike 3.0 Germany License Spring Dynamic Modules - Web Support II � ,,Natives" Deployment von Webapplikationen � Tomcat-Support � Jetty-Support � Volle Unterst�tzung der Servlet-Spezifikation 2.5 � Gerd W�therich, Martin Lippert; Licensed under Creative Commons Attribution-Noncommercial-Share Alike 3.0 Germany License OSGi RFC 66 � OSGi and Web Applications � Spezifikation � Derzeit als Draft verf�gbar � Beschreibt, wie Webanwendungen in OSGi unterst�tzt werden (Servlet Spec. 2.5, JSP Spec. 2.1) � Referenzimplementierung: � Spring DM / Spring DM Server � Gerd W�therich, Martin Lippert; Licensed under Creative Commons Attribution-Noncommercial-Share Alike 3.0 Germany License Ich habe aber einen App-Server! � Und ich darf nur EARs, WARs, etc. deployen � Was nun? � Gerd W�therich, Martin Lippert; Licensed under Creative Commons Attribution-Noncommercial-Share Alike 3.0 Germany License Architekturmodell 2 � OSGi Framework eingebettet in Webanwendung � OSGi Framework wird innerhalb einer Webanwendung ausgef�hrt � Anwendungs-Bundles werden innerhalb des eingebetteten OSGi Frameworks installiert und gestartet � Gerd W�therich, Martin Lippert; Licensed under Creative Commons Attribution-Noncommercial-Share Alike 3.0 Germany License �bersicht ,,Embedded OSGi Framework" � Fragen: � Wie werden Webanwendungen (oder Teile davon) in den umgebenden Container deployed? � Welche Elemente der Servlet-Spezifikation werden unterst�tzt? � Gerd W�therich, Martin Lippert; Licensed under Creative Commons Attribution-Noncommercial-Share Alike 3.0 Germany License Eclipse Equinox Servlet-Bridge � Bestandteil der Equinox-Distribution � Erm�glicht das Ausf�hren eines OSGi Frameworks innerhalb einer Webanwendung � Gerd W�therich, Martin Lippert; Licensed under Creative Commons Attribution-Noncommercial-Share Alike 3.0 Germany License Eclipse Equinox Servlet-Bridge � Gerd W�therich, Martin Lippert; Licensed under Creative Commons Attribution-Noncommercial-Share Alike 3.0 Germany License Servlet-Bridge � Was geht? Was nicht? � Alles �ber OSGi-Http-Service � Vorteile: � Funktioniert �berall � WAR-File wird deployed � Wenn gew�nscht, Management �ber normalen Management-Agent von OSGi � Nachteile: � Deployment erfolgt �ber das Interface ,,org.osgi.service.http.HttpService" Gleiche Einschr�nkungen wie beim OSGi HTTP Service � Gerd W�therich, Martin Lippert; Licensed under Creative Commons Attribution-Noncommercial-Share Alike 3.0 Germany License Wo stehen wir gerade? � Es gibt eine OSGi Plattform, aber nur wenige nutzen diese Software zur Implementierung ihrer Webanwendungen � M�glichkeiten der Modularisierung und Versionierung nutzen � Verbesserung des Schnitts unserer Anwendungen � Statt einem WAR entstehen mehrere Module � Betrieb verschiedener Versionen � Laufzeitdynamik f�r Zero Down Time nutzen � Servlet API 3.0 Early Draft liegt vor � Gerd W�therich, Martin Lippert; Licensed under Creative Commons Attribution-Noncommercial-Share Alike 3.0 Germany License Thank you! � Gerd W�therich, Martin Lippert; Licensed under Creative Commons Attribution-Noncommercial-Share Alike 3.0 Germany License