OSGi und Spring MVC - inovex BrownBag

Embed Size (px)

DESCRIPTION

Übersichtspräsentation zu OSGi

Citation preview

  • 1. inovex BrownBag OSGi (+ Spring MVC)
    • Pforzheim, 21. September 2009
  • Sandro Bhme
  • [email_address]
  • Eingettet von:

2. Agenda Was ist OSGi? Probleme klassischer Java Anwendungen Probleme in JEE Anwendungen Wiederverwendbare Module in JEE Anwendungen Probleme bei Portal Anwendungen Lsungen von OSGi Beispiel mit Spring DM und Spring MVC (ggf. Abgrenzungen) 25. August 2009 Copyright: inovex GmbH, 2009 3.

  • OSGi (Open Service Gateway initiative)
  • Laufzeitumgebung
  • Bundle
  • Ein normales jar, das im META-INF/MANIFEST.MF weitere Infos enthlt.
  • Ein Singleton. In einer Version kann es nur einmal existieren.
  • Service
  • Ein beliebiges Java Interface.
  • Kann instantiiert werden.
  • Gehrt zu einem Bundle
  • ...es gibt noch mehr...

Was ist OSGi? 25. August 2009 Copyright: inovex GmbH, 2009 4.

  • Deployment
  • Alles oder Nichts
  • ffentliche API
  • Alle public Klassen von allen Jars sind sichtbar
  • Gefahr ungewollter Abhngigkeiten
  • Definition der Abhngigkeiten
  • Es gibt keine explizite Definition ausser mit Maven.
  • Gefahr frClassNotFoundException, NoClassDefFoundError,...
  • Zwei Versionen des selben jar's nicht mglich

Probleme klassischer Java Anwendungen 25. August 2009 Copyright: inovex GmbH, 2009 5. Probleme in JEE Anwendungen 25. August 2009 Copyright: inovex GmbH, 2009 6. Probleme in JEE Anwendungen

  • Deployment
  • WAR's, EAR's knnen unabhngig deployed werden
  • ffentliche API
  • Sichtbarkeit entsprechend der Ebene im Baum
  • Sichtbarkeit entsprechend Descriptor
  • Definition der Abhngigkeiten
  • Nicht komplett explizit.
  • Teilweise in Deployment Descriptoren.
  • Man kann die Abhngigkeiten zwischen Jars zur Entwicklungszeit nicht eindeutig auflsen.
  • Doku und testen
  • Gefahr fr ClassNotFoundException, NoClassDefFoundError,...

25. August 2009 Copyright: inovex GmbH, 2009 7. Wiederverwendbare Module in JEE Anwendungen

  • Lsung 1
  • Jars in den Server ClassPath legen
  • ->Probleme:
    • Nicht mehr unabhngig deploybar
    • Scope kann zu gro sein
    • Versionskonflikte mit anderen jars
  • Lsung 2
  • Jars tiefer in die Hierarchie legen
  • -->Problem:
    • Verbraucht mehr PermGen Space

25. August 2009 Copyright: inovex GmbH, 2009 8. Probleme bei Portal Anwendungen

  • Ziel
  • Austauschbare Schnipsel einer Webseite
  • Portlet wird oft als WAR deployed
  • Problem
  • Unabhngige Frameworks pro WAR erzeugen redundante jars und damit zu viel PermGen Space
  • Lsungen
  • Pures JSTL verwenden
  • Ein Framework fr alle Portlets
  • Bei Zeitgeist: meistens Struts Portlets
  • Fhrt aber eigentlich die Portlet-Idee ad absurdum

25. August 2009 Copyright: inovex GmbH, 2009 9.

  • Keine redundanten jars ntig
  • Abhngigkeiten sind graphbasiert
  • Abhngigkeiten bercksichtigen Versionen der jars/bundles
  • Explizite Definition der ffentlichen API
  • Ein Bundle (jar) gibt im manifest File die exportierten Packages an
  • Andere Packages sind nicht sichtbar
  • Explizite Definition der Abhngigkeiten
  • Im Manifest File werden die importierten Packages inkl. Version angegeben
  • Zur Entwicklungszeit gibt es Fehlermeldungen, wenn andere Packages verwendet werden
  • Austauschbarkeit zur Laufzeit
  • Bundles (und dessen Services) knnen zur Laufzeit hinzugefgt, entfernt, oder aktualisiert werden. (das macht das System aber auch komplexer)

Lsungen mit OSGi 25. August 2009 Copyright: inovex GmbH, 2009 10. Beispielanwendung: Trinkgeldkasse 25. August 2009 Copyright: inovex GmbH, 2009 11. Beispielanwendung: Trinkgeldkasse 25. August 2009 Copyright: inovex GmbH, 2009 12. 25. August 2009 Copyright: inovex GmbH, 2009 Vielen Dank fr eure Aufmerksamkeit!