SlideShare ist ein Scribd-Unternehmen logo
1 von 3
Downloaden Sie, um offline zu lesen
Enterprise
Equinox-Erweiterung




Equinox erweitern und modifizieren


Getting Hooked on Equinox
                                                                     Speaker
                                                                       @                                                    Quellcode
>> MARTIN LIPPERT UND HEIKO SEEBERGER                                                                                        auf CD


                                                                                            stallieren, zu deinstallieren oder zu aktu-
  Viele verwenden Equinox als fertige OSGi Runtime, auf deren Basis                         alisieren. Zusätzlich dazu realisiert dieser
                                                                                            Layer auch einen Event-Mechanismus,
  vorhandene Anwendungen erweitert oder neu implementiert werden.                           über den OSGi das System über Zu-
  Dazu kann Equinox in der Regel out-of-the-box verwendet werden. Was                       standsänderungen benachrichtigt. Der
                                                                                            dritte Layer ist der Service Layer. Dieser
  passiert aber, wenn diese Box nicht das leistet, was benötigt wird? Equi-
                                                                                            implementiert das OSGi-Servicekon-
  nox bietet einen eleganten und wertvollen Mechanismus, um in solchen                      zept, mit dem Bundles innerhalb einer
                                                                                            Java Virtual Machine serviceorientiert
  Situationen die Runtime selbst zu erweitern und zu modifizieren.
                                                                                            zusammenarbeiten können.
                                                                                                Die Anbindung dieser Layer an eine
                                                                                            konkret zugrunde liegende Plattform

E                                                                                           wird durch das Framework Adaptor API
    quinox ist nicht nur Lieferant einer      soll der konzeptionelle Aufbau von
                                                                                            hergestellt. Der FrameworkAdaptor de-
    OSGi-Implementierung und erlaubt          Equinox betrachtet werden.
                                                                                              niert das Format der Bundles, realisiert
es damit, Anwendungen auf Basis von                Equinox realisiert einerseits die drei
                                                                                            den Zugriff auf Ressourcen der Bundles
OSGi zu entwickeln. Die Equinox Run-          OSGi Framework Layer: Der Module Lay-
                                                                                            über den Classloading-Mechanismus
time selbst ist mit dem Blick auf Erwei-      er ist dafür zuständig, das OSGi-Modul-
                                                                                            und verwaltet die Speicherung der persis-
terbarkeit realisiert und bietet einen sehr   Konzept in Form von Bundles umzuset-
                                                                                            tenten Daten der OSGi Runtime.
mächtigen Mechanismus, um die OSGi            zen sowie die Abhängigkeiten zwischen
                                                                                                Natürlich bringt Equinox eine Stan-
Runtime zu erweitern oder zu modi zie-        Bundles zu verwalten und aufzulösen.
                                                                                            dardimplementierung des Framework-
ren [1]. Zunächst soll ein Blick auf den      Dazu gehört auch das umfangreiche De-
                                                                                            Adaptors mit. Dieser BaseAdaptor er-
Aufbau geworfen werden.                       legationsmodell, mit dem die im Bundle-
                                                                                            laubt es, durch so genannte Framework
                                              Manifest de nierten Sichtbarkeiten von
Aufbau der Equinox-OSGi-                                                                    Extensions alle drei Bereiche (Bundle-
                                              Packages zwischen Bundles realisiert
Implementierung                                                                             Formate, Classloading und Persistent
                                              werden. Der Life Cycle Layer kontrol-
                                                                                            Storage) zu erweitern. Dazu bietet die-
                                              liert den Lebenszyklus von Bundles und
Bevor der Erweiterungsmechanismus
                                                                                            ser BaseAdaptor einen umfangreichen
                                              gestattet es, Bundles zur Laufzeit zu in-
von Equinox im Detail vorgestellt wird,



                                                                                                                                        89
www.eclipse-magazin.de                                                                                        eclipse magazin Vol. 14
Enterprise                                                                                         Equinox-Erweiterung



                                Abb. 1:           AdaptorHook klinkt sich direkt
                                Konzep-
                                             in verschiedene Methoden des Frame-
                                tioneller
                                             workAdaptors bzw. des BaseAdap-
                                Aufbau
                                der          tors ein. So kann z.B. beim Starten und
                                Equinox-
                                             Stoppen der OSGi Runtime eingegrif-
                                OSGi-Im-
                                             fen oder die Behandlung von Laufzeit-
                                plemen-
                                             fehlern erweitert werden.
                                tierung
                                [2]
                                                       BundleFileFactoryHook ist es
                                                                                          Abb. 2: Der Aufbau des Base Framework Adaptors [2]
                                             möglich, spezielle Formate für Bundles
                                             zu verwenden, die über den Equinox-
                                                                                             Das führt zur nächsten Frage: Wie
                                             Standard (JARs und Verzeichnisse) hi-
                                                                                          werden HookCon gurators von Equi-
                                             nausgehen.
                                                                                          nox erkannt? Der eleganteste Weg führt
                                                  BundleFileWrapperFactoryHook
                                                                                          über die Datei hookcon gurators.pro-
                                             ermöglicht es, den Zugriff auf die Res-
                                                                                          perties, die von Equinox im Root von
                                             sourcen eines Bundles zu wrappen,
                                                                                          Framework Extensions erwartet wird,
                                             z.B. um Security zu implementieren,
                                                                                          und dort die Property hook.con gura-
                                             oder den Inhalt von einzelnen Res-
Hook-Mechanismus, der es sehr einfach
                                                                                          tors. So kann eine Fragment Extension
                                             sourcen beim Laden gezielt zu mani-
erlaubt, an vordefinierten Stellen die
                                                                                          selbst angeben, welche HookConfi-
                                             pulieren.
Standardfunktionalität zu erweitern.
                                                                                          gurators sie liefert. Über die System
                                                         BundleWatcher kann der
Hookable Adaptor                                                                          Properties osgi.hook.configurators.
                                             Lifecycle von Bundles verfolgt werden,
                                                                                          include bzw. osgi.hook.con gurators.
                                             wobei für jeden Statusübergang Start-
Vor Eclipse 3.2 war es nötig, für jegli-
                                                                                          exclude können weitere bekannt gege-
                                             und End-Events propagiert werden.
che Anpassungen oder Erweiterungen
                                                                                          ben bzw. vorhandene ausgeschlossen
                                             Die Funktionalität ist jedoch ähnlich
einen eigenen FrameworkAdaptor zu
                                                                                          werden.
                                             wie bei den OSGi BundleListenern.
implementieren, entweder komplett
                                                 ClassLoadingHook dient dazu, das
oder durch Erweiterung der gegebenen
                                                                                          Ein Beispiel
                                             Classloading-Verhalten zu modi zie-
Standardimplementierung. Existierten
                                             ren. So kann zum Beispiel der Bytecode
mehrere, voneinander unabhängige Er-                                                      Die Framework Extension de.meta-
                                             modi ziert werden, bevor eine Klasse
weiterungen (also mehrere Framework-                                                        nanz.demo.equinox.extension enthält
                                             in der Virtual Machine de niert wird.
Adaptors), konnte allerdings nur einer                                                    mit dem DemoHook einen AdaptorHook,
                                                  StorageHook wird für das Spei-
davon von Equinox verwendet werden                                                        der beim Starten und Stoppen der OSGi
                                             chern und Laden von installierten
(System Property osgi.adaptor), weil es                                                   Runtime Trace Messages auf der Konsole
                                             Bundles verwendet.
konzeptionell nur einen Framework-                                                        ausgibt. Weiterhin implementiert Demo-
Adaptor zur Laufzeit geben kann.                                                          Hook auch HookCon gurator, wobei er
                                            Da es sich bei den Hooks um Erweite-
    Seit Eclipse 3.2 sieht der Standard-                                                  sich selbst registriert und dabei ebenfalls
                                            rungen der Standardfunktionalität der
FrameworkAdaptor, der oben erwähnte                                                       eine Trace Message ausgibt. In Listing 1
                                            OSGi Runtime handelt, die zum Groß-
BaseAdaptor, explizit Erweiterungs-                                                       sehen wir, wie mit der ersten Methode
                                            teil im System Bundle org.eclipse.osgi
möglichkeiten in Form von so genannten                                                    das HookCon gurator Interface imple-
                                            implementiert ist, kommen so genannte
Hooks vor, weshalb er auch als Hook-                                                      mentiert wird, indem das eigene Objekt
                                            Framework Extensions zum Einsatz.
able Adaptor bezeichnet wird. Im Ge-                                                      bei der übergebenen HookRegistry an-
                                            Eine Framework Extension ist ein Frag-
gensatz zu selbst de nierten Framework-                                                   gemeldet wird. Die restlichen Methoden
                                            ment Bundle zum System Bundle, d.h.
Adaptors kann es zur Laufzeit nun belie-                                                  erfüllen das Interface AdaptorHook.
                                            der Fragment Host ist system.bundle
big viele dieser Hooks geben. Sie werden                                                      Um dieses Beispiel im Eclipse SDK
                                            bzw. org.eclipse.osgi. Damit Fragment
alle vom BaseAdaptor entsprechend                                                         auszuführen, ist es erforderlich, das Sys-
                                            Extensions von Equinox verwendet wer-
berücksichtigt. Es können also mehre-                                                     tem Bundle org.eclipse.osgi als Source
                                            den, müssen sie über die System Property
re Erweiterungen (in Form von Hooks)                                                      in den Workspace zu importieren (im
                                            osgi.framework.extensions bekannt ge-
gleichzeitig zum Einsatz kommen. Vom                                                      mitgelieferten Beispiel-Workspace be-
                                            geben werden, als JAR vorliegen und im
Equinox-Team wird ausdrücklich emp-                                                       reits enthalten), damit die Framework
                                            Dateisystem im gleichen Verzeichnis wie
fohlen, diesen Hook-Mechanismus zu                                                        Extension zur Laufzeit im selben Ver-
                                            das System Bundle liegen.
verwenden und keinen eigenen Frame-                                                       zeichnis liegt wie das System Bundle
                                                Um Equinox einzelne Hooks be-
workAdaptor mehr zu implementieren.                                                       (siehe oben). Zum Ausführen wird eine
                                            kannt zu machen, müssen sie über so ge-
Falls dies aufgrund von besonderen An-                                                    OSGi Framework Run Configuration
                                            nannte HookCon gurators bzw. deren
forderungen nicht möglich ist, sollte ein                                                 (im mitgelieferten Beispiel-Workspace
                                            addHooks()-Methode bei der HookRe-
entsprechender Bug gemeldet werden.                                                       bereits enthalten) verwendet, welche die
                                            gistry registriert werden. Dabei ist es ein   Workspace Bundles org.eclipse.osgi und
Hook Interfaces                             geläu ges Pattern, dass konkrete Hooks        de.metafinanz.demo.equinox.extensi-
                                            sowohl ein spezielles Hook Interface als      on enthält und die System Property osgi.
Welche verschiedenen Möglichkeiten
                                            auch HookCon gurator implementie-             framework.extensions mit dem Wert
bietet Equinox nun, um die Standard-
                                            ren und sich somit selbst registrieren.
funktionalität zu erweitern?                                                              de.meta nanz.demo.equinox.extension



90    eclipse magazin Vol. 14                                                                                        www.eclipse-magazin.de
Enterprise
Equinox-Erweiterung



                                                                 sparen. Andererseits müssen die Klas-
belegt. Die passende hookcon gurators.
                                                                 sen nicht aufwändig geladen werden,
properties-Datei ist ebenfalls schon fertig
                                                                 wenn sie bereits im Cache liegen, was
in der Framework Extension enthalten:
                                                                 Performance-Vorteile bringt. Das nor-
hook.configurators=de.metafinanz.demo.equinox.
                                                                 URLClassLoader ein und wirkt sich
                                   extension.DemoHook
                                                                 damit nicht auf eine Equinox-basierte
Existierende Erweiterungen                                       OSGi-Anwendung aus, da dort spe-                      Abb. 3: Ausgabe des Beispiels
                                                                 zielle ClassLoader zum Einsatz kom-
Wofür man diesen Mechanismus bei-
                                                                 men. Mit passenden Hooks lässt sich
spielsweise einsetzen kann, zeigen einige
                                                                 aber das Classloading von Equinox so
existierende Hook-Implementierungen:                                                                                   blem aussehen, durch die normalen OS-
                                                                                                                       Gi- oder Equinox-Mechanismen lösen.
                                                                 angesprochen wird und so das Class
                                           -                                                                           Der Hook-Mechanismus sollte wirklich
                                                                 Sharing auch für OSGi-Anwendungen
  reits Hook-Implementierungen, die un-                                                                                ausschließlich für Spezial-Lösungen
                                                                 nutzbar wird.
  ter der Haube verwendet werden. Der                                                                                  herangezogen werden, die sich mit den
  Eclipse LazyStart Header im Bundle-                                                                                  OSGi- und Equinox-Bordmitteln nicht
                                                                 Equinox-Aspects-Incubator-Projekt
  Manifest wird beispielsweise durch                                                                                   lösen lassen und gleichzeitig eine echte
                                                                 nutzt den Hook-Mechanismus von
  den EclipseLazyStarter realisiert, der                                                                               und vor allem OSGi-konforme Erwei-
                                                                 Equinox, um Aspect Weaving beim
  einen ClassLoadingStatsHook sowie                                                                                    terung der Runtime darstellen. Dann
                                                                 Laden der Klassen durchzuführen
  einen AdaptorHook registriert und ein                                                                                aber bietet der Hook-Mechanismus von
                                                                 (Load-Time Weaving). Dort wird u.a.
  Bundle beim Zugriff auf dessen Klas-                                                                                 Equinox einen beeindruckenden Reich-
                                                                 der ClassLoadingHook verwendet, um
  sen aktiviert. Weitere intern genutzte                                                                               tum an Möglichkeiten, der nicht zuletzt
                                                                 den Bytecode der geladenen Klassen
  Hooks sind unter [3] beschrieben.                                                                                    auch Spaß beim Ausschöpfen macht.
                                                                 per Aspect Weaving zu modi zieren.
                                           -
                                                                 Zusätzlich wird der BundleFileWrap-
  bator-Projekt aus dem Equinox-Um-
                                                                 perFactoryHook genutzt, um durch
  feld erlaubt es, mittels unterschiedlicher                                                                                         Heiko Seeberger leitet die Market
                                                                                                                                     Unit Enterprise Architecture der
                                                                 das Weaving entstehende zusätzliche
  Techniken Ressourcen eines Bundles zu
                                                                                                                                     metafinanz GmbH (www.metafinanz.
                                                                 Abhängigkeiten zwischen Bundles
  modi zieren, bevor auf sie zugegriffen
                                                                                                                                     de). Er erstellt seit etwa zehn
                                                                 mittels Modifikationen am Bundle-
  wird. Die Modi zierungen können mit
                                                                                                                                     Jahren Enterprise-Anwendungen
                                                                 Manifest zu ermöglichen.
  unterschiedlichen Techniken vorge-                                                                                    mit Java, wobei sein aktueller Fokus auf Eclipse
  nommen werden. Ein besonders attrak-                                                                                  und AspectJ liegt. Kontakt: heiko.seeberger@
                                                                 Situationen, in denen Class-Dateien
  tives Beispiel ist, die plugin.xml-Dateien                                                                            metafinanz.de.
                                                                 nicht im üblichen Class-File-Format
  mittels XSLT zu transformieren, um
                                                                 ausgeliefert werden. Stattdessen kom-
  beispielsweise de nierte Extensions je
                                                                                                                                    Martin Lippert ist Senior-IT-Berater
                                                                 men spezialisierte Formate zum Ein-
  nach eingeloggtem Benutzer auszublen-
                                                                                                                                    bei der akquinet it-agile GmbH. Er ar-
                                                                 satz.
  den. Damit könnte man elegant den Ex-
                                                                                                                                    beitet dort als Coach und Berater für
  tension-Point-Mechanismus mit einem                                                                                               agile Softwareentwicklung, Refacto-
                                                            Fazit
  Autorisierungskonzept verbinden.                                                                                                  ring und Eclipse-Technologie und ist
                                                            Zunächst sei noch einmal darauf hinge-                      Committer im Eclipse-Equinox-Incubator-Projekt.
  [6] für Java bietet einen Mechanismus                     wiesen, dass dieser Hook-Mechanismus                        Kontakt: martin.lippert@akquinet.de.
  an, bereits geladene Klassen in einem                     nicht zum Standard für jede Anwen-
  Cache abzulegen, um damit einerseits                      dung werden sollte. In der Regel lassen
  zwischen parallel laufenden VM-                           sich die meisten Herausforderungen,
                                                                                                                       >> Links & Literatur
  Instanzen die geladenen Klassen ge-                       auch wenn sie vielleicht auf den ersten
  meinsam zu benutzen, um Speicher zu                       Blick nach einem Classloading-Pro-                         [ 1] Informationen zum Aufbau der Equinox-
                                                                                                                            Runtime: www.eclipsecon.org/2007/
                                                                                                                            index.php?page=sub/&id=3762
  Listing 1                                                                                                            [2] Chris Laffra, Thomas Watson, Matthew
                                                                                                                           Webster: Getting Hooked on the Equinox
  Die Hook-Implementierung
                                                                                                                           Framework, IBM, EclipseCon 2007, Crea-
  public class DemoHook implements HookConfigurator,                                 (“- DemoHook.frameworkStart()”);       tive Commons Att. Nc Nd 2.5 license
                                        AdaptorHook {           }                                                      [3] Beschreibung der Technik: wiki.eclipse.org/
                                                                public void frameworkStop(final BundleContext               Adaptor_Hooks
   public void addHooks(final HookRegistry hookRegistry) {                                                context) {
                                                                                                                       [4] Equinox Transforms: wiki.eclipse.org/
     hookRegistry.addAdaptorHook(this);                           System.out.println(“- DemoHook.frameworkStop()”);
                                                                                                                           Equinox_Transforms
     System.out.println(“- DemoHook.addHooks()”);               }
                                                                                                                       [5] J9 Class Sharing: www.ibm.com/
   }
                                                                                                                           developerworks/java/library/j-ibmjava4
                                                                // Other AdaptorHook methods are implemented empty
    public void frameworkStart(final BundleContext               // and not shown here!                                 [6] IBM J9 VM: wiki.eclipse.org/J9
                                              context) {    }
                                                                                                                       [7] Equinox-Aspects-Incubator: www.eclipse.
     System.out.println
                                                                                                                           org/equinox/incubator/aspects/index.php




                                                                                                                                                                       91
www.eclipse-magazin.de                                                                                                                       eclipse magazin Vol. 14

Weitere ähnliche Inhalte

Andere mochten auch

III Convención de Agronegocios - UPC
III Convención de Agronegocios - UPCIII Convención de Agronegocios - UPC
III Convención de Agronegocios - UPCFertilMundo
 
Presentación1
Presentación1Presentación1
Presentación1ever1999
 
Red de Comunicadores de Calama
Red de Comunicadores de Calama Red de Comunicadores de Calama
Red de Comunicadores de Calama ARSChile
 
Taller de usabilidad análisis web male y maika pazos
Taller de usabilidad   análisis web male y maika pazosTaller de usabilidad   análisis web male y maika pazos
Taller de usabilidad análisis web male y maika pazosLucho Saavedra
 
Actividad parque chicaque sara
Actividad parque chicaque saraActividad parque chicaque sara
Actividad parque chicaque saratauritho
 
Strukturen und Funktionen von Weblog-Öffentlichkeiten
Strukturen und Funktionen von Weblog-ÖffentlichkeitenStrukturen und Funktionen von Weblog-Öffentlichkeiten
Strukturen und Funktionen von Weblog-ÖffentlichkeitenChristian Katzenbach
 
Que proponen los candidatos a alcalde x santiago
Que proponen los candidatos a alcalde x santiagoQue proponen los candidatos a alcalde x santiago
Que proponen los candidatos a alcalde x santiagoCIPDEL
 
Boletín agro junio 2011
Boletín agro junio 2011Boletín agro junio 2011
Boletín agro junio 2011FertilMundo
 
Presentación Proyecto Red de Comunicadores
Presentación Proyecto Red de Comunicadores  Presentación Proyecto Red de Comunicadores
Presentación Proyecto Red de Comunicadores ARSChile
 
Crash Porsche Vs Vogel
Crash Porsche Vs VogelCrash Porsche Vs Vogel
Crash Porsche Vs Vogelres stillhart
 

Andere mochten auch (20)

III Convención de Agronegocios - UPC
III Convención de Agronegocios - UPCIII Convención de Agronegocios - UPC
III Convención de Agronegocios - UPC
 
Presentación1
Presentación1Presentación1
Presentación1
 
Red de Comunicadores de Calama
Red de Comunicadores de Calama Red de Comunicadores de Calama
Red de Comunicadores de Calama
 
LJR Nds: Jugendverbandsarbeit und Partizipation 2.0
LJR Nds: Jugendverbandsarbeit und Partizipation 2.0 LJR Nds: Jugendverbandsarbeit und Partizipation 2.0
LJR Nds: Jugendverbandsarbeit und Partizipation 2.0
 
Practica 3
Practica 3Practica 3
Practica 3
 
Taller de usabilidad análisis web male y maika pazos
Taller de usabilidad   análisis web male y maika pazosTaller de usabilidad   análisis web male y maika pazos
Taller de usabilidad análisis web male y maika pazos
 
Actividad parque chicaque sara
Actividad parque chicaque saraActividad parque chicaque sara
Actividad parque chicaque sara
 
Strukturen und Funktionen von Weblog-Öffentlichkeiten
Strukturen und Funktionen von Weblog-ÖffentlichkeitenStrukturen und Funktionen von Weblog-Öffentlichkeiten
Strukturen und Funktionen von Weblog-Öffentlichkeiten
 
Naren correa
Naren correaNaren correa
Naren correa
 
Que proponen los candidatos a alcalde x santiago
Que proponen los candidatos a alcalde x santiagoQue proponen los candidatos a alcalde x santiago
Que proponen los candidatos a alcalde x santiago
 
Practica 6
Practica 6Practica 6
Practica 6
 
Swproxy(2)
Swproxy(2)Swproxy(2)
Swproxy(2)
 
Boletín agro junio 2011
Boletín agro junio 2011Boletín agro junio 2011
Boletín agro junio 2011
 
Juleica Statistik 2015 für Niedersachsen
Juleica Statistik 2015 für NiedersachsenJuleica Statistik 2015 für Niedersachsen
Juleica Statistik 2015 für Niedersachsen
 
Animated Series
Animated SeriesAnimated Series
Animated Series
 
Presentación Proyecto Red de Comunicadores
Presentación Proyecto Red de Comunicadores  Presentación Proyecto Red de Comunicadores
Presentación Proyecto Red de Comunicadores
 
neXTkonferenz 2.0 – Jugendarbeit in Niedersachsen
neXTkonferenz 2.0 – Jugendarbeit in NiedersachsenneXTkonferenz 2.0 – Jugendarbeit in Niedersachsen
neXTkonferenz 2.0 – Jugendarbeit in Niedersachsen
 
Crash Porsche Vs Vogel
Crash Porsche Vs VogelCrash Porsche Vs Vogel
Crash Porsche Vs Vogel
 
Práctica 14
Práctica 14Práctica 14
Práctica 14
 
William shakespeare
William shakespeareWilliam shakespeare
William shakespeare
 

Ähnlich wie Eclipse Magazin 14 - Getting hooked on Equinox

Eclipse Magazin 16 - Die Stärke der Drei
Eclipse Magazin 16 - Die Stärke der DreiEclipse Magazin 16 - Die Stärke der Drei
Eclipse Magazin 16 - Die Stärke der DreiHeiko Seeberger
 
Eclipse Magazin 12 - Security does matter
Eclipse Magazin 12 - Security does matterEclipse Magazin 12 - Security does matter
Eclipse Magazin 12 - Security does matterHeiko Seeberger
 
Eclipse Magazin15 - Performance Logging
Eclipse Magazin15 - Performance LoggingEclipse Magazin15 - Performance Logging
Eclipse Magazin15 - Performance LoggingHeiko Seeberger
 
DHI-WASY Aktuell 04/2011
DHI-WASY Aktuell 04/2011DHI-WASY Aktuell 04/2011
DHI-WASY Aktuell 04/2011DHI-WASY GmbH
 
freiesMagazin 10-2011
freiesMagazin 10-2011freiesMagazin 10-2011
freiesMagazin 10-2011storminator
 
JSUG - OSGi by Michael Greifeneder
JSUG - OSGi by Michael GreifenederJSUG - OSGi by Michael Greifeneder
JSUG - OSGi by Michael GreifenederChristoph Pickl
 
Artikel eHealthcare Kompendium: Service Orientierte Architekturen für Healthcare
Artikel eHealthcare Kompendium: Service Orientierte Architekturen für HealthcareArtikel eHealthcare Kompendium: Service Orientierte Architekturen für Healthcare
Artikel eHealthcare Kompendium: Service Orientierte Architekturen für HealthcarePeter Affolter
 
Java Aktuell Bernd Zuther Canary Releases mit der Very Awesome Microservices ...
Java Aktuell Bernd Zuther Canary Releases mit der Very Awesome Microservices ...Java Aktuell Bernd Zuther Canary Releases mit der Very Awesome Microservices ...
Java Aktuell Bernd Zuther Canary Releases mit der Very Awesome Microservices ...Bernd Zuther
 
Jm 10.13 weigend_lagergren_nashorn
Jm 10.13 weigend_lagergren_nashornJm 10.13 weigend_lagergren_nashorn
Jm 10.13 weigend_lagergren_nashornWolfgang Weigend
 
Amazon Web Services: Flaggschiff des Cloud Computings
Amazon Web Services: Flaggschiff des Cloud ComputingsAmazon Web Services: Flaggschiff des Cloud Computings
Amazon Web Services: Flaggschiff des Cloud ComputingsLothar Wieske
 
Kollaboratives Schreiben mit LaTeX
Kollaboratives Schreiben mit LaTeX Kollaboratives Schreiben mit LaTeX
Kollaboratives Schreiben mit LaTeX storminator
 
06 Software Development Guidelines der COMLINE Cloud Service Platform - CSP
06 Software Development Guidelines der COMLINE Cloud Service Platform - CSP06 Software Development Guidelines der COMLINE Cloud Service Platform - CSP
06 Software Development Guidelines der COMLINE Cloud Service Platform - CSPChristian Guenther
 
Apex on the Rocks - Hochverfügbarkeit
Apex on the Rocks - HochverfügbarkeitApex on the Rocks - Hochverfügbarkeit
Apex on the Rocks - HochverfügbarkeitStefan Witwicki
 

Ähnlich wie Eclipse Magazin 14 - Getting hooked on Equinox (20)

Eclipse Magazin 16 - Die Stärke der Drei
Eclipse Magazin 16 - Die Stärke der DreiEclipse Magazin 16 - Die Stärke der Drei
Eclipse Magazin 16 - Die Stärke der Drei
 
Eclipse Magazin 12 - Security does matter
Eclipse Magazin 12 - Security does matterEclipse Magazin 12 - Security does matter
Eclipse Magazin 12 - Security does matter
 
Eclipse Magazin15 - Performance Logging
Eclipse Magazin15 - Performance LoggingEclipse Magazin15 - Performance Logging
Eclipse Magazin15 - Performance Logging
 
DHI-WASY Aktuell 04/2011
DHI-WASY Aktuell 04/2011DHI-WASY Aktuell 04/2011
DHI-WASY Aktuell 04/2011
 
"RCP-Hilfe-System" - Ein Artikel im Eclipse Magazin 6/2010
"RCP-Hilfe-System" - Ein Artikel im Eclipse Magazin 6/2010"RCP-Hilfe-System" - Ein Artikel im Eclipse Magazin 6/2010
"RCP-Hilfe-System" - Ein Artikel im Eclipse Magazin 6/2010
 
freiesMagazin 10-2011
freiesMagazin 10-2011freiesMagazin 10-2011
freiesMagazin 10-2011
 
JSUG - OSGi by Michael Greifeneder
JSUG - OSGi by Michael GreifenederJSUG - OSGi by Michael Greifeneder
JSUG - OSGi by Michael Greifeneder
 
Iks Sonderdruck Eclipse Magazin Mai 2010: Automatisierte SWTBot-Tests
Iks Sonderdruck Eclipse Magazin Mai 2010: Automatisierte SWTBot-TestsIks Sonderdruck Eclipse Magazin Mai 2010: Automatisierte SWTBot-Tests
Iks Sonderdruck Eclipse Magazin Mai 2010: Automatisierte SWTBot-Tests
 
Vagrant
VagrantVagrant
Vagrant
 
Artikel eHealthcare Kompendium: Service Orientierte Architekturen für Healthcare
Artikel eHealthcare Kompendium: Service Orientierte Architekturen für HealthcareArtikel eHealthcare Kompendium: Service Orientierte Architekturen für Healthcare
Artikel eHealthcare Kompendium: Service Orientierte Architekturen für Healthcare
 
Java Aktuell Bernd Zuther Canary Releases mit der Very Awesome Microservices ...
Java Aktuell Bernd Zuther Canary Releases mit der Very Awesome Microservices ...Java Aktuell Bernd Zuther Canary Releases mit der Very Awesome Microservices ...
Java Aktuell Bernd Zuther Canary Releases mit der Very Awesome Microservices ...
 
iks auf der Jax 2010: Provisioning unter OSGi für Test und Betrieb
iks auf der Jax 2010: Provisioning unter OSGi für Test und Betrieb iks auf der Jax 2010: Provisioning unter OSGi für Test und Betrieb
iks auf der Jax 2010: Provisioning unter OSGi für Test und Betrieb
 
JM 08/09 - ScalaModules
JM 08/09 - ScalaModulesJM 08/09 - ScalaModules
JM 08/09 - ScalaModules
 
Jm 10.13 weigend_lagergren_nashorn
Jm 10.13 weigend_lagergren_nashornJm 10.13 weigend_lagergren_nashorn
Jm 10.13 weigend_lagergren_nashorn
 
Amazon Web Services: Flaggschiff des Cloud Computings
Amazon Web Services: Flaggschiff des Cloud ComputingsAmazon Web Services: Flaggschiff des Cloud Computings
Amazon Web Services: Flaggschiff des Cloud Computings
 
Kollaboratives Schreiben mit LaTeX
Kollaboratives Schreiben mit LaTeX Kollaboratives Schreiben mit LaTeX
Kollaboratives Schreiben mit LaTeX
 
Elsholz stoll js_03_10
Elsholz stoll js_03_10Elsholz stoll js_03_10
Elsholz stoll js_03_10
 
06 Software Development Guidelines der COMLINE Cloud Service Platform - CSP
06 Software Development Guidelines der COMLINE Cloud Service Platform - CSP06 Software Development Guidelines der COMLINE Cloud Service Platform - CSP
06 Software Development Guidelines der COMLINE Cloud Service Platform - CSP
 
Openshift
OpenshiftOpenshift
Openshift
 
Apex on the Rocks - Hochverfügbarkeit
Apex on the Rocks - HochverfügbarkeitApex on the Rocks - Hochverfügbarkeit
Apex on the Rocks - Hochverfügbarkeit
 

Mehr von Heiko Seeberger

Scaladays 2011 - The Ease of Scalaz
Scaladays 2011 - The Ease of ScalazScaladays 2011 - The Ease of Scalaz
Scaladays 2011 - The Ease of ScalazHeiko Seeberger
 
RheinJUG 2010 - Sprechen Sie Scala?
RheinJUG 2010 - Sprechen Sie Scala?RheinJUG 2010 - Sprechen Sie Scala?
RheinJUG 2010 - Sprechen Sie Scala?Heiko Seeberger
 
Objektforum 2010 - Sprechen Sie Scala?
Objektforum 2010 - Sprechen Sie Scala?Objektforum 2010 - Sprechen Sie Scala?
Objektforum 2010 - Sprechen Sie Scala?Heiko Seeberger
 
JM 08/09 - Beginning Scala Review
JM 08/09 - Beginning Scala ReviewJM 08/09 - Beginning Scala Review
JM 08/09 - Beginning Scala ReviewHeiko Seeberger
 
OSGi DevCon Europe 09 - OSGi on Scala
OSGi DevCon Europe 09 - OSGi on ScalaOSGi DevCon Europe 09 - OSGi on Scala
OSGi DevCon Europe 09 - OSGi on ScalaHeiko Seeberger
 
JAX 09 - OSGi Service Components Models
JAX 09 - OSGi Service Components ModelsJAX 09 - OSGi Service Components Models
JAX 09 - OSGi Service Components ModelsHeiko Seeberger
 
Eclipse Magazin 12 - Design by Contract
Eclipse Magazin 12 - Design by ContractEclipse Magazin 12 - Design by Contract
Eclipse Magazin 12 - Design by ContractHeiko Seeberger
 
EclipseCon 08 - Agile RCP
EclipseCon 08 - Agile RCPEclipseCon 08 - Agile RCP
EclipseCon 08 - Agile RCPHeiko Seeberger
 
W-JAX 07 - AOP im Einsatz mit OSGi und RCP
W-JAX 07 - AOP im Einsatz mit OSGi und RCPW-JAX 07 - AOP im Einsatz mit OSGi und RCP
W-JAX 07 - AOP im Einsatz mit OSGi und RCPHeiko Seeberger
 
W-JAX 08 - Declarative Services versus Spring Dynamic Modules
W-JAX 08 - Declarative Services versus Spring Dynamic ModulesW-JAX 08 - Declarative Services versus Spring Dynamic Modules
W-JAX 08 - Declarative Services versus Spring Dynamic ModulesHeiko Seeberger
 
JAX 08 - Experiences using Equinox Aspects in a real-world Project
JAX 08 - Experiences using Equinox Aspects in a real-world ProjectJAX 08 - Experiences using Equinox Aspects in a real-world Project
JAX 08 - Experiences using Equinox Aspects in a real-world ProjectHeiko Seeberger
 

Mehr von Heiko Seeberger (20)

Scaladays 2011 - The Ease of Scalaz
Scaladays 2011 - The Ease of ScalazScaladays 2011 - The Ease of Scalaz
Scaladays 2011 - The Ease of Scalaz
 
Java Magazin - Lift
Java Magazin - LiftJava Magazin - Lift
Java Magazin - Lift
 
JavaSPEKTRUM - Scala 3
JavaSPEKTRUM - Scala 3JavaSPEKTRUM - Scala 3
JavaSPEKTRUM - Scala 3
 
JavaSPEKTRUM - Scala 2
JavaSPEKTRUM - Scala 2JavaSPEKTRUM - Scala 2
JavaSPEKTRUM - Scala 2
 
JavaSPEKTRUM - Scala 1
JavaSPEKTRUM - Scala 1JavaSPEKTRUM - Scala 1
JavaSPEKTRUM - Scala 1
 
RheinJUG 2010 - Sprechen Sie Scala?
RheinJUG 2010 - Sprechen Sie Scala?RheinJUG 2010 - Sprechen Sie Scala?
RheinJUG 2010 - Sprechen Sie Scala?
 
Objektforum 2010 - Sprechen Sie Scala?
Objektforum 2010 - Sprechen Sie Scala?Objektforum 2010 - Sprechen Sie Scala?
Objektforum 2010 - Sprechen Sie Scala?
 
W-JAX 09 - ScalaModules
W-JAX 09 - ScalaModulesW-JAX 09 - ScalaModules
W-JAX 09 - ScalaModules
 
W-JAX 09 - Lift
W-JAX 09 - LiftW-JAX 09 - Lift
W-JAX 09 - Lift
 
JM 08/09 - Beginning Scala Review
JM 08/09 - Beginning Scala ReviewJM 08/09 - Beginning Scala Review
JM 08/09 - Beginning Scala Review
 
OSGi DevCon Europe 09 - OSGi on Scala
OSGi DevCon Europe 09 - OSGi on ScalaOSGi DevCon Europe 09 - OSGi on Scala
OSGi DevCon Europe 09 - OSGi on Scala
 
JAX 09 - OSGi on Scala
JAX 09 - OSGi on ScalaJAX 09 - OSGi on Scala
JAX 09 - OSGi on Scala
 
JAX 09 - OSGi Service Components Models
JAX 09 - OSGi Service Components ModelsJAX 09 - OSGi Service Components Models
JAX 09 - OSGi Service Components Models
 
JAX 08 - Agile RCP
JAX 08 - Agile RCPJAX 08 - Agile RCP
JAX 08 - Agile RCP
 
Eclipse Magazin 12 - Design by Contract
Eclipse Magazin 12 - Design by ContractEclipse Magazin 12 - Design by Contract
Eclipse Magazin 12 - Design by Contract
 
JUGM 07 - AspectJ
JUGM 07 - AspectJJUGM 07 - AspectJ
JUGM 07 - AspectJ
 
EclipseCon 08 - Agile RCP
EclipseCon 08 - Agile RCPEclipseCon 08 - Agile RCP
EclipseCon 08 - Agile RCP
 
W-JAX 07 - AOP im Einsatz mit OSGi und RCP
W-JAX 07 - AOP im Einsatz mit OSGi und RCPW-JAX 07 - AOP im Einsatz mit OSGi und RCP
W-JAX 07 - AOP im Einsatz mit OSGi und RCP
 
W-JAX 08 - Declarative Services versus Spring Dynamic Modules
W-JAX 08 - Declarative Services versus Spring Dynamic ModulesW-JAX 08 - Declarative Services versus Spring Dynamic Modules
W-JAX 08 - Declarative Services versus Spring Dynamic Modules
 
JAX 08 - Experiences using Equinox Aspects in a real-world Project
JAX 08 - Experiences using Equinox Aspects in a real-world ProjectJAX 08 - Experiences using Equinox Aspects in a real-world Project
JAX 08 - Experiences using Equinox Aspects in a real-world Project
 

Eclipse Magazin 14 - Getting hooked on Equinox

  • 1. Enterprise Equinox-Erweiterung Equinox erweitern und modifizieren Getting Hooked on Equinox Speaker @ Quellcode >> MARTIN LIPPERT UND HEIKO SEEBERGER auf CD stallieren, zu deinstallieren oder zu aktu- Viele verwenden Equinox als fertige OSGi Runtime, auf deren Basis alisieren. Zusätzlich dazu realisiert dieser Layer auch einen Event-Mechanismus, vorhandene Anwendungen erweitert oder neu implementiert werden. über den OSGi das System über Zu- Dazu kann Equinox in der Regel out-of-the-box verwendet werden. Was standsänderungen benachrichtigt. Der dritte Layer ist der Service Layer. Dieser passiert aber, wenn diese Box nicht das leistet, was benötigt wird? Equi- implementiert das OSGi-Servicekon- nox bietet einen eleganten und wertvollen Mechanismus, um in solchen zept, mit dem Bundles innerhalb einer Java Virtual Machine serviceorientiert Situationen die Runtime selbst zu erweitern und zu modifizieren. zusammenarbeiten können. Die Anbindung dieser Layer an eine konkret zugrunde liegende Plattform E wird durch das Framework Adaptor API quinox ist nicht nur Lieferant einer soll der konzeptionelle Aufbau von hergestellt. Der FrameworkAdaptor de- OSGi-Implementierung und erlaubt Equinox betrachtet werden. niert das Format der Bundles, realisiert es damit, Anwendungen auf Basis von Equinox realisiert einerseits die drei den Zugriff auf Ressourcen der Bundles OSGi zu entwickeln. Die Equinox Run- OSGi Framework Layer: Der Module Lay- über den Classloading-Mechanismus time selbst ist mit dem Blick auf Erwei- er ist dafür zuständig, das OSGi-Modul- und verwaltet die Speicherung der persis- terbarkeit realisiert und bietet einen sehr Konzept in Form von Bundles umzuset- tenten Daten der OSGi Runtime. mächtigen Mechanismus, um die OSGi zen sowie die Abhängigkeiten zwischen Natürlich bringt Equinox eine Stan- Runtime zu erweitern oder zu modi zie- Bundles zu verwalten und aufzulösen. dardimplementierung des Framework- ren [1]. Zunächst soll ein Blick auf den Dazu gehört auch das umfangreiche De- Adaptors mit. Dieser BaseAdaptor er- Aufbau geworfen werden. legationsmodell, mit dem die im Bundle- laubt es, durch so genannte Framework Manifest de nierten Sichtbarkeiten von Aufbau der Equinox-OSGi- Extensions alle drei Bereiche (Bundle- Packages zwischen Bundles realisiert Implementierung Formate, Classloading und Persistent werden. Der Life Cycle Layer kontrol- Storage) zu erweitern. Dazu bietet die- liert den Lebenszyklus von Bundles und Bevor der Erweiterungsmechanismus ser BaseAdaptor einen umfangreichen gestattet es, Bundles zur Laufzeit zu in- von Equinox im Detail vorgestellt wird, 89 www.eclipse-magazin.de eclipse magazin Vol. 14
  • 2. Enterprise Equinox-Erweiterung Abb. 1: AdaptorHook klinkt sich direkt Konzep- in verschiedene Methoden des Frame- tioneller workAdaptors bzw. des BaseAdap- Aufbau der tors ein. So kann z.B. beim Starten und Equinox- Stoppen der OSGi Runtime eingegrif- OSGi-Im- fen oder die Behandlung von Laufzeit- plemen- fehlern erweitert werden. tierung [2] BundleFileFactoryHook ist es Abb. 2: Der Aufbau des Base Framework Adaptors [2] möglich, spezielle Formate für Bundles zu verwenden, die über den Equinox- Das führt zur nächsten Frage: Wie Standard (JARs und Verzeichnisse) hi- werden HookCon gurators von Equi- nausgehen. nox erkannt? Der eleganteste Weg führt BundleFileWrapperFactoryHook über die Datei hookcon gurators.pro- ermöglicht es, den Zugriff auf die Res- perties, die von Equinox im Root von sourcen eines Bundles zu wrappen, Framework Extensions erwartet wird, z.B. um Security zu implementieren, und dort die Property hook.con gura- oder den Inhalt von einzelnen Res- Hook-Mechanismus, der es sehr einfach tors. So kann eine Fragment Extension sourcen beim Laden gezielt zu mani- erlaubt, an vordefinierten Stellen die selbst angeben, welche HookConfi- pulieren. Standardfunktionalität zu erweitern. gurators sie liefert. Über die System BundleWatcher kann der Hookable Adaptor Properties osgi.hook.configurators. Lifecycle von Bundles verfolgt werden, include bzw. osgi.hook.con gurators. wobei für jeden Statusübergang Start- Vor Eclipse 3.2 war es nötig, für jegli- exclude können weitere bekannt gege- und End-Events propagiert werden. che Anpassungen oder Erweiterungen ben bzw. vorhandene ausgeschlossen Die Funktionalität ist jedoch ähnlich einen eigenen FrameworkAdaptor zu werden. wie bei den OSGi BundleListenern. implementieren, entweder komplett ClassLoadingHook dient dazu, das oder durch Erweiterung der gegebenen Ein Beispiel Classloading-Verhalten zu modi zie- Standardimplementierung. Existierten ren. So kann zum Beispiel der Bytecode mehrere, voneinander unabhängige Er- Die Framework Extension de.meta- modi ziert werden, bevor eine Klasse weiterungen (also mehrere Framework- nanz.demo.equinox.extension enthält in der Virtual Machine de niert wird. Adaptors), konnte allerdings nur einer mit dem DemoHook einen AdaptorHook, StorageHook wird für das Spei- davon von Equinox verwendet werden der beim Starten und Stoppen der OSGi chern und Laden von installierten (System Property osgi.adaptor), weil es Runtime Trace Messages auf der Konsole Bundles verwendet. konzeptionell nur einen Framework- ausgibt. Weiterhin implementiert Demo- Adaptor zur Laufzeit geben kann. Hook auch HookCon gurator, wobei er Da es sich bei den Hooks um Erweite- Seit Eclipse 3.2 sieht der Standard- sich selbst registriert und dabei ebenfalls rungen der Standardfunktionalität der FrameworkAdaptor, der oben erwähnte eine Trace Message ausgibt. In Listing 1 OSGi Runtime handelt, die zum Groß- BaseAdaptor, explizit Erweiterungs- sehen wir, wie mit der ersten Methode teil im System Bundle org.eclipse.osgi möglichkeiten in Form von so genannten das HookCon gurator Interface imple- implementiert ist, kommen so genannte Hooks vor, weshalb er auch als Hook- mentiert wird, indem das eigene Objekt Framework Extensions zum Einsatz. able Adaptor bezeichnet wird. Im Ge- bei der übergebenen HookRegistry an- Eine Framework Extension ist ein Frag- gensatz zu selbst de nierten Framework- gemeldet wird. Die restlichen Methoden ment Bundle zum System Bundle, d.h. Adaptors kann es zur Laufzeit nun belie- erfüllen das Interface AdaptorHook. der Fragment Host ist system.bundle big viele dieser Hooks geben. Sie werden Um dieses Beispiel im Eclipse SDK bzw. org.eclipse.osgi. Damit Fragment alle vom BaseAdaptor entsprechend auszuführen, ist es erforderlich, das Sys- Extensions von Equinox verwendet wer- berücksichtigt. Es können also mehre- tem Bundle org.eclipse.osgi als Source den, müssen sie über die System Property re Erweiterungen (in Form von Hooks) in den Workspace zu importieren (im osgi.framework.extensions bekannt ge- gleichzeitig zum Einsatz kommen. Vom mitgelieferten Beispiel-Workspace be- geben werden, als JAR vorliegen und im Equinox-Team wird ausdrücklich emp- reits enthalten), damit die Framework Dateisystem im gleichen Verzeichnis wie fohlen, diesen Hook-Mechanismus zu Extension zur Laufzeit im selben Ver- das System Bundle liegen. verwenden und keinen eigenen Frame- zeichnis liegt wie das System Bundle Um Equinox einzelne Hooks be- workAdaptor mehr zu implementieren. (siehe oben). Zum Ausführen wird eine kannt zu machen, müssen sie über so ge- Falls dies aufgrund von besonderen An- OSGi Framework Run Configuration nannte HookCon gurators bzw. deren forderungen nicht möglich ist, sollte ein (im mitgelieferten Beispiel-Workspace addHooks()-Methode bei der HookRe- entsprechender Bug gemeldet werden. bereits enthalten) verwendet, welche die gistry registriert werden. Dabei ist es ein Workspace Bundles org.eclipse.osgi und Hook Interfaces geläu ges Pattern, dass konkrete Hooks de.metafinanz.demo.equinox.extensi- sowohl ein spezielles Hook Interface als on enthält und die System Property osgi. Welche verschiedenen Möglichkeiten auch HookCon gurator implementie- framework.extensions mit dem Wert bietet Equinox nun, um die Standard- ren und sich somit selbst registrieren. funktionalität zu erweitern? de.meta nanz.demo.equinox.extension 90 eclipse magazin Vol. 14 www.eclipse-magazin.de
  • 3. Enterprise Equinox-Erweiterung sparen. Andererseits müssen die Klas- belegt. Die passende hookcon gurators. sen nicht aufwändig geladen werden, properties-Datei ist ebenfalls schon fertig wenn sie bereits im Cache liegen, was in der Framework Extension enthalten: Performance-Vorteile bringt. Das nor- hook.configurators=de.metafinanz.demo.equinox. URLClassLoader ein und wirkt sich extension.DemoHook damit nicht auf eine Equinox-basierte Existierende Erweiterungen OSGi-Anwendung aus, da dort spe- Abb. 3: Ausgabe des Beispiels zielle ClassLoader zum Einsatz kom- Wofür man diesen Mechanismus bei- men. Mit passenden Hooks lässt sich spielsweise einsetzen kann, zeigen einige aber das Classloading von Equinox so existierende Hook-Implementierungen: blem aussehen, durch die normalen OS- Gi- oder Equinox-Mechanismen lösen. angesprochen wird und so das Class - Der Hook-Mechanismus sollte wirklich Sharing auch für OSGi-Anwendungen reits Hook-Implementierungen, die un- ausschließlich für Spezial-Lösungen nutzbar wird. ter der Haube verwendet werden. Der herangezogen werden, die sich mit den Eclipse LazyStart Header im Bundle- OSGi- und Equinox-Bordmitteln nicht Equinox-Aspects-Incubator-Projekt Manifest wird beispielsweise durch lösen lassen und gleichzeitig eine echte nutzt den Hook-Mechanismus von den EclipseLazyStarter realisiert, der und vor allem OSGi-konforme Erwei- Equinox, um Aspect Weaving beim einen ClassLoadingStatsHook sowie terung der Runtime darstellen. Dann Laden der Klassen durchzuführen einen AdaptorHook registriert und ein aber bietet der Hook-Mechanismus von (Load-Time Weaving). Dort wird u.a. Bundle beim Zugriff auf dessen Klas- Equinox einen beeindruckenden Reich- der ClassLoadingHook verwendet, um sen aktiviert. Weitere intern genutzte tum an Möglichkeiten, der nicht zuletzt den Bytecode der geladenen Klassen Hooks sind unter [3] beschrieben. auch Spaß beim Ausschöpfen macht. per Aspect Weaving zu modi zieren. - Zusätzlich wird der BundleFileWrap- bator-Projekt aus dem Equinox-Um- perFactoryHook genutzt, um durch feld erlaubt es, mittels unterschiedlicher Heiko Seeberger leitet die Market Unit Enterprise Architecture der das Weaving entstehende zusätzliche Techniken Ressourcen eines Bundles zu metafinanz GmbH (www.metafinanz. Abhängigkeiten zwischen Bundles modi zieren, bevor auf sie zugegriffen de). Er erstellt seit etwa zehn mittels Modifikationen am Bundle- wird. Die Modi zierungen können mit Jahren Enterprise-Anwendungen Manifest zu ermöglichen. unterschiedlichen Techniken vorge- mit Java, wobei sein aktueller Fokus auf Eclipse nommen werden. Ein besonders attrak- und AspectJ liegt. Kontakt: heiko.seeberger@ Situationen, in denen Class-Dateien tives Beispiel ist, die plugin.xml-Dateien metafinanz.de. nicht im üblichen Class-File-Format mittels XSLT zu transformieren, um ausgeliefert werden. Stattdessen kom- beispielsweise de nierte Extensions je Martin Lippert ist Senior-IT-Berater men spezialisierte Formate zum Ein- nach eingeloggtem Benutzer auszublen- bei der akquinet it-agile GmbH. Er ar- satz. den. Damit könnte man elegant den Ex- beitet dort als Coach und Berater für tension-Point-Mechanismus mit einem agile Softwareentwicklung, Refacto- Fazit Autorisierungskonzept verbinden. ring und Eclipse-Technologie und ist Zunächst sei noch einmal darauf hinge- Committer im Eclipse-Equinox-Incubator-Projekt. [6] für Java bietet einen Mechanismus wiesen, dass dieser Hook-Mechanismus Kontakt: martin.lippert@akquinet.de. an, bereits geladene Klassen in einem nicht zum Standard für jede Anwen- Cache abzulegen, um damit einerseits dung werden sollte. In der Regel lassen zwischen parallel laufenden VM- sich die meisten Herausforderungen, >> Links & Literatur Instanzen die geladenen Klassen ge- auch wenn sie vielleicht auf den ersten meinsam zu benutzen, um Speicher zu Blick nach einem Classloading-Pro- [ 1] Informationen zum Aufbau der Equinox- Runtime: www.eclipsecon.org/2007/ index.php?page=sub/&id=3762 Listing 1 [2] Chris Laffra, Thomas Watson, Matthew Webster: Getting Hooked on the Equinox Die Hook-Implementierung Framework, IBM, EclipseCon 2007, Crea- public class DemoHook implements HookConfigurator, (“- DemoHook.frameworkStart()”); tive Commons Att. Nc Nd 2.5 license AdaptorHook { } [3] Beschreibung der Technik: wiki.eclipse.org/ public void frameworkStop(final BundleContext Adaptor_Hooks public void addHooks(final HookRegistry hookRegistry) { context) { [4] Equinox Transforms: wiki.eclipse.org/ hookRegistry.addAdaptorHook(this); System.out.println(“- DemoHook.frameworkStop()”); Equinox_Transforms System.out.println(“- DemoHook.addHooks()”); } [5] J9 Class Sharing: www.ibm.com/ } developerworks/java/library/j-ibmjava4 // Other AdaptorHook methods are implemented empty public void frameworkStart(final BundleContext // and not shown here! [6] IBM J9 VM: wiki.eclipse.org/J9 context) { } [7] Equinox-Aspects-Incubator: www.eclipse. System.out.println org/equinox/incubator/aspects/index.php 91 www.eclipse-magazin.de eclipse magazin Vol. 14