W-JAX 08 - Declarative Services versus Spring Dynamic Modules
Eclipse Magazin15 - Performance Logging
1. Architektur AspectJ und Equinox
Performance Logging mit AspectJ und der Eclipse-Plug-in-Architektur
Säuberlich getrennt
>> heiko seeberger und harald griesbeck
bedingungen, z.B. für den Build-Prozess
Performance-Kennzahlen einer Software durch Logging im produktiven und den Einsatz von AspectJ, worauf wir
noch detailliert eingehen werden.
Betrieb zu ermitteln, ist geradezu eine Paradedisziplin für aspekt- Eine wichtige Forderung an die ABS-
orientierte Programmierung. Die Theorie ist simpel, in der Praxis sieht Anwendung ist die Einhaltung der in Form
von Service Level Agreements zugesicher-
es etwas anders aus. In einer umfassenden Geschäftsanwendung
ten Antwortzeiten. Schließlich sind für ei-
kommen AspectJ und die Eclipse-Plug-in-Architektur bei der Lösung ne unternehmenskritische Anwendung die
Verfügbarkeit und Performance noch vor
dieses Cross-Cutting Concerns zum Einsatz.
der Funktionalität die wichtigsten Anfor-
derungen, so Dr. Ralf Schneider, CIO der
Allianz Deutschland AG. Zur Sicherstel-
D lung der Performance ist ein verlässliches
Geschäftslogik und zukünftig auch das
ie Allianz Deutschland AG führt der-
Reporting der Performance-Kennzahlen
User Interface auf der Programmierspra-
zeit in einem strategischen Großpro-
im produktiven Betrieb erforderlich, um
che Java und der Eclipse-Plattform [3]
jekt ein neues Softwaresystem für alle Be-
beispielsweise die Frage „Wie lange muss
basieren. Die Komponentenarchitektur
lange des Versicherungs-Kerngeschäfts
ein Sachbearbeiter warten, bis das Er-
und Erweiterungsmöglichkeiten von
ein [1], [2]. Die neue Software, das Allianz
gebnis der Personensuche, sortiert nach
Equinox [4] (ehemals Eclipse Runtime
Business System (ABS), stellt den Kunden
Name und Postleitzahl, angezeigt wird?“
Core) stellen wesentliche Merkmale der
in den Mittelpunkt und ermöglicht dem
beantworten zu können. Anders als beim
ABS-Architektur dar und erfüllen die für
Sachbearbeiter eine umfassende Bearbei-
Profiling während der Entwicklungspha-
ein strategisches Anwendungssystem
tung der Kundenanliegen, die sich durch
se geht es hierbei um die kontinuierliche
wichtigen Anforderungen an Modula-
die täglichen Telefonate, den Brief- und
Performance-Ermittlung „in Produkti-
rität, Flexibilität und Erweiterbarkeit.
E-Mail-Verkehr ergeben. Die ABS-An-
on“ mit dem Ziel, rasch Gegenmaßnah-
Gleichzeitig definiert die Verwendung der
wendung beruht auf einer modernen,
men einleiten zu können, wenn eine signi-
Eclipse-Plattform verschiedene Rahmen-
mehrschichtigen Architektur, bei der die
20 eclipse magazin Vol. 15 www.eclipse-magazin.de
2. Architektur
AspectJ und Equinox
gang nennt man Weaving. AspectJ bietet
fikante Verschlechterung der Performance komplexe Problemstellungen leichter
zum einen die Möglichkeit, das Weaving
erkannt wird. In der ABS-Anwendung lösen lassen, wenn sie in überschaubare
beim Kompilieren durchzuführen (Com-
werden hierfür im Prinzip Start- und End- und disjunkte „Häppchen“ zerlegt sind.
pile-time Weaving), zum anderen erlaubt
Zeitpunkte von definierten Messstrecken Software sollte somit aus Modulen be-
AspectJ, das Weaving zur Laufzeit – ge-
in Logfiles ausgegeben, zentral gesammelt stehen, die möglichst wenig überlappen-
nauer gesagt, beim Laden der betroffenen
und dann ausgewertet. de Funktionalität aufweisen. Java bietet
Klassen durch die Java Virtual Machine –
Dieses Performance Logging ist ein als objektorientierte Sprache bereits
durchzuführen (Load-time Weaving). Bei-
typischer Cross-Cutting Concern [5], hat strukturelle Konzepte zur Modularisie-
de Varianten ermöglichen das Einweben
also nichts mit der grundlegenden bzw. rung, z.B. Packages, Klassen, Methoden
von Aspekten in fremden Libraries. Im
primären Funktionalität zu tun, wie etwa etc. Mit dieser Strukturierung werden
konkreten ABS-Projekt besteht die Not-
der Suche von Personen anhand von Na- die Primary Concerns abgebildet, z.B.
wendigkeit, Performance-Messpunkte
me und Postleitzahl. Vielmehr durchsetzt eine Klasse Person mit den Properties
im sogenannten ABS-Kern, der als fertige
der Code zum Ausgeben der Messpunkte Vor- und Nachname. In der Praxis gibt
Plattform zur Verfügung steht, einzubau-
vielerorts den primären Code. Diese Ver- es jedoch so gut wie immer Belange, die
en. Mithilfe der Weaving-Technik kann
mischung verschiedener Belange verletzt sich mithilfe der objektorientierten Pro-
diese Anforderung elegant gelöst werden.
das bewährte Prinzip der Separation of grammierung nicht modularisieren las-
Concerns [6] und es entsteht dadurch sen. Typische Beispiele für Cross-Cutting
Modularisierung par excellence
unverständlicher und schlecht wartbarer Concerns sind Querschnittsfunktionen
Programm-Code. Die aspektorientierte wie Logging, Tracing, Security usw., also
Das bereits erwähnte Prinzip der Se-
Programmierung [7] adressiert dieses Prob- nichtfunktionale Anforderungen. Mit
paration of Concerns besagt, dass sich
lem und bietet die Möglichkeit, auch die
Cross-Cutting Concerns zu modularisie-
ren, wodurch wiederum eine verbesserte
Softwarequalität erreicht wird. Da die
ABS-Anwendung mit der Programmier-
sprache Java und mit der Entwicklungs-
umgebung Eclipse SDK entwickelt wird,
bietet sich die Verwendung von AspectJ
[8] an. AspectJ stellt den Quasi-Standard
für Aspektorientierung mit Java dar und
verfügt mit AJDT [9] über eine hervorra-
gende Integration in das Eclipse SDK. As-
pectJ ergänzt die objektorientierte Spra-
Anzeige
che Java um aspektorientierte Konzepte.
Dabei werden die so genannten Primary
Concerns, d.h., die grundlegenden An-
forderungen an ein Software-System, mit
objektorientierten Mitteln entwickelt,
z.B. mit Java-Konstrukten wie Packages,
Klassen, Methoden etc. Die Cross-Cutting
Concerns werden dann mit den erweiter-
ten Sprachmitteln von AspectJ, z.B. mit As-
pekten, Advices und Pointcuts, umgesetzt.
Für Details sei auf die Dokumentation auf
der AspectJ-Website verwiesen.
Ein weiterer und entscheidender
Punkt, der im konkreten Fall zum Einsatz
von aspektorientierter Programmierung
führte, ist die Fähigkeit von AspectJ, nicht
nur auf Quellcode-Ebene arbeiten zu kön-
nen, sondern auch mit vorhandenen Lib-
raries. Das bedeutet, dass auch in vorkom-
piliertem Code Aspekte eingebaut werden
können. Die getrennten Belange, also der
primäre Code und die Cross-Cutting Con-
cerns, werden in der aspektorientierten
Programmierung getrennt erstellt und
müssen in einem späteren Schritt wieder
zusammengeführt werden. Diesen Vor-
21
www.eclipse-magazin.de eclipse magazin Vol. 15
3. Architektur AspectJ und Equinox
den Cross-Cutting Concerns durch As- gab es Bedenken hinsichtlich der Ver-
pekte modularisiert und diese wiederum wendung des Patches. Diese wurden in
in Aspekt-Bundles. einem Smoke-Test bestätigt: einerseits
Die separierten Belange müssen durch Warnmeldungen, die ohne Patch
letztendlich wieder zusammengeführt nicht auftraten, andererseits durch Ab-
Abb. 1: Cross-Cutting Concerns
werden. Dieser Vorgang wird, wie be- brüche beim Kompilieren von reinen
werden in Aspekten modularisiert
reits erwähnt, als Weaving bezeichnet. Ressource-Plug-ins, d.h. Plug-ins ohne
Bei AspectJ gibt es dafür zwei Methoden: Klassen. Letztendlich erschien dadurch
Compile-time Weaving und Load-time der Einsatz von AspectJ Compile-time
Weaving. Beim Compile-time Weaving Weaving als zu riskant und die hohen
werden Klassen und Aspekte bereits Abhängigkeiten der einzelnen Versions-
durch den AspectJ Compiler während stände als zu unflexibel, sodass Compile-
Abb. 2: Marker zeigen die Stellen, an denen Aspekte
verwoben werden
des Build-Prozesses zusammengeführt time Weaving für die ABS-Anwendung
und der vollständige Byte-Code erzeugt. nicht zum Einsatz kommt.
Somit ist der AOP-Ansatz für die Lauf- Bei Load-time Weaving findet die
zeitumgebung völlig transparent. Ein Zusammenführung von Klassen und
weiterer Vorteil von AspectJ Compile- Aspekten erst zur Laufzeit – genauer ge-
time Weaving ist die gute Unterstützung sagt beim Classloading – statt. Dazu ist
Abb. 3: Weaving erzeugt eine Abhängigkeit zum
in der Entwicklungsumgebung durch die es nötig, das Classloading entsprechend
Aspekt
AJDT Plug-ins. So werden zum Beispiel zu modifizieren. AspectJ bietet dafür eine
durch Marker diejenigen Stellen hervor- Unterstützung in Form von JVM Agents
gehoben, an denen Aspekte verwoben oder speziellen ClassLoaders [15] an.
aspektorientierter Programmierung las-
werden (Abb. 2). Auch das Debugging Load-time Weaving bietet den Vorteil,
sen sich auch diese Cross-Cutting Con-
funktioniert völlig transparent. die Auswahl der Klassen, die mit Aspek-
cerns modularisieren, sodass Klassen
ten verwoben werden, nicht von Anfang
und Aspekte bzw. deren Methoden und
In der Praxis zu riskant an zu begrenzen. Während beim Com-
Advices keine überlappenden Belange
pile-time Weaving nur die beim Build-
mehr enthalten (Abb. 1). Allerdings verlässt Compile-time Wea-
Prozess vorliegenden Klassen verwoben
Neben dieser Form von Modularisie- ving die Modularisierung bereits beim
werden, können später hinzukommen-
rung auf „Mikroebene“ dient das Kon- Build-Prozess. Der oben aufgeführte
de nicht mehr berücksichtigt werden.
zept von Komponenten [10] ebenfalls zur Vorteil der Kombination von AspectJ
Für Security-Aspekte kann dies ein sehr
Separation of Concerns, jedoch auf grö- mit den dynamischen Eigenschaften von
wichtiges Kriterium sein, z.B. wenn vor
berer Ebene. Equinox implementiert mit OSGi geht dadurch verloren. Abgesehen
jeglicher Ausführung einer execute()-
OSGi [11] eine dynamische Komponen- von diesen prinzipiellen Gesichtspunk-
Methode eines IAction-Interfaces zuvor
tenarchitektur, welche die Zusammen- ten spielt natürlich die Praxistauglichkeit
die Authentifizierung und Autorisierung
führung bzw. Installation von Kompo- eine entscheidende Rolle. Umfangreiche
überprüft werden sollen.
nenten (Bundles im OSGi-Jargon) zum Anwendungen werden in der Regel nicht
Der große Vorteil von Load-time
spätestmöglichen Zeitpunkt erlaubt, auf einem Entwicklerrechner „gebaut“,
Weaving ist der Erhalt der Modulari-
nämlich zur Laufzeit. Somit lassen sich sondern es kommt ein zentraler Build-
sierung über den Build-Prozess hinweg
Bundles von zusammengehörigen Klas- Prozess zum Einsatz. Eclipse stellt hierfür
bis zum Zeitpunkt der Ausführung.
sen oder Aspekten bilden, z.B. ein Bundle den PDE Build [12] zur Verfügung, der
Die Builds von Primary Concerns und
Person für die Fachlichkeit rund um das auf Apache Ant [13] basiert. Dieser kann
Querschnittsfunktionen können sepa-
Domain Object Person und ein Bundle zum heutigen Stand (Eclipse 3.3.1) nicht
rat erfolgen. Natürlich müssen die As-
Security mit Aspekten für Authentifizie- konfiguriert werden, um einen anderen
pekte, auch wenn das Weaving erst beim
rung und Autorisierung. Diese Bundles Compiler als den Standard-Compiler zu
Classloading erfolgt, übersetzt werden.
sind in sich selbst konsistent und können verwenden [14]. Daher liefert AJDT ei-
Allerdings reicht es nun aus, nur dieje-
unter Berücksichtigung ihrer Abhängig- nen Patch für den PDE Build: Die Datei
nigen Bundles, die Aspekte enthalten,
keiten isoliert entwickelt und getestet pdebuild.jar im Plug-in org.eclipse.pde.
mit dem AspectJ Compiler zu überset-
werden. Wenn die Abhängigkeiten, die build muss durch eine modifizierte Datei
zen. Dafür kann entweder ein separater
jedes Bundle explizit deklarieren muss, ersetzt werden. Dadurch werden in der
PDE Build mit Patch aufgesetzt werden
minimal gehalten und geschickt entwor- Folge alle Plug-ins nicht mehr mit dem
oder es wird einfach der Export aus der
fen werden, z.B. in Form von Interfaces, originalen PDE Compiler übersetzt, son-
Entwicklungsumgebung verwendet. In
dann ergibt sich automatisch ein hoher dern mit dem AspectJ Compiler. Bei die-
beiden Fällen kann der ursprüngliche
Grad an Separierung. In großen Projek- sem Vorgehen ist schon alleine aufgrund
PDE Build für alle primären Bundles
ten hat man hierdurch die Möglichkeit, möglicher Versions-Inkompatibilitäten
unverändert bleiben. Im konkreten Fall
die separierten Teile in unterschiedlichen allerhöchste Vorsicht geboten. Der ge-
der ABS-Anwendung wird als pragmati-
Teams entwickeln zu lassen. Wie man nannte Patch wird von AJDT erst seit
sche Zwischenlösung der Export aus der
sieht, ergänzen sich OSGi und AspectJ Version 1.4.1 geliefert, die kompatibel
Entwicklungsumgebung verwendet, da
hervorragend, um eine durchgehende zu Eclipse 3.2.1 ist. Da die ABS-Anwen-
AspectJ derzeit nur für das Performance
Modularisierung zu erzielen. Dabei wer- dung auf Eclipse 3.2.0 entwickelt wird,
22 eclipse magazin Vol. 15 www.eclipse-magazin.de
4. Architektur AspectJ und Equinox
det werden, sondern das Load-time Wea- Darüber hinaus besteht Equinox As-
ving muss in das Equinox Classloading pects aus dem obligatorischen Bundle
integriert werden. org.aspectj.osgi.service.weaving, das
Weiter müssen Bundles unter OSGi den Weaving Service anbietet. Für die J9-
ihre Abhängigkeiten explizit deklarie- JVM von IBM stellt das optionale Bundle
ren. Zur Entwicklungszeit geschieht org.aspectj.osgi.service.caching.j9 einen
dies durch Einträge im so genannten Caching-Mechanismus zur Verfügung,
Bundle-Manifest. Zur Laufzeit sind für wobei die Realisierung eines allgemeinen
Abb. 4: Eclipse-SupplementBundle
ein Bundle dann nur diejenigen Abhän- Caching Services für beliebige JVMs eine
erzeugt zur Laufzeit die nötigen Abhängigkeiten
gigkeiten sichtbar, die explizit importiert noch offene Aufgabe der Community ist.
werden. Wenn eine Klasse mit einem As-
Installieren und Konfigurieren von
pekt verwoben wird, entsteht dabei eine
Equinox Aspects
neue Abhängigkeit von der verwobenen
Klasse zum Aspekt (Abb. 3). Equinox Aspects kann entweder aus dem
Zur Entwicklungszeit sind diese Eclipse SDK über eine Update Site [18]
Abhängigkeiten natürlich noch nicht installiert oder als ZIP-Archiv von der
vorhanden, denn schließlich werden „Getting Started“-Seite [19] herunterge-
die Cross-Cutting Concerns durch die laden werden. Da es sich hierbei um reine
Abb. 5: Beispiel in Aktion: Der Aspekt gibt die Aus-
aspektorientierte Programmierung Runtime Plug-ins ohne Tooling oder an-
führungsdauer aus
separiert, d.h. der „eigentliche“ Code dere Integration in das SDK handelt, ist
kennt die Aspekte gar nicht. Die Bundles es empfehlenswert, sie nicht in das SDK
können somit diese Abhängigkeiten, die zu installieren, sondern die Plug-ins in
durch das Load-time Weaving entstehen, die jeweilige Target Platform aufzuneh-
nicht a priori im Bundle-Manifest de- men. Auf alle Fälle muss berücksichtigt
klarieren. Daher harmoniert Load-time werden, dass Equinox Aspects wie jedes
Weaving nicht out-of-the-box mit OSGi, Framework Extension Fragment un-
sondern bedarf besonderer Unterstüt- bedingt im selben Verzeichnis wie das
zung: Die neuen Abhängigkeiten müssen System Bundle org.eclipse.osgi abgelegt
den Bundles beim Laden dynamisch hin- werden muss, da die Framework Exten-
zugefügt werden. sion sonst nicht gefunden und infolge-
Equinox bietet seit Version 3.2 mit dessen ignoriert wird.
Abb. 6: Launcher für das Beispiel:
dem so genannten Hookable Adaptor Damit die Bundles, auf denen die
Bundles und Start-Level
[16] eine sehr flexible Implementierung Aspekte eines Aspekt-Bundles wirken
von OSGi, die es ermöglicht, zahlreiche sollen, zur Laufzeit mit den nötigen Ab-
Funktionalitäten des Frameworks an- hängigkeiten versehen werden können,
Logging verwendet wird und nur ein
zupassen oder zu erweitern. Über einen führt Equinox Aspects neue Manifest-
Bundle mit Aspekten existiert.
HookConfigurator können verschiede- Header ein, die in den Aspekt-Bundles
AspectJ Load-time ne Hooks mit unterschiedlichen Funk- verwendet werden:
Weaving unter Equinox tionalitäten registriert werden, die vom
Hookable Adaptor während der Aus- • Eclipse-SupplementBundle
Viele der herausragenden Eigenschaf-
führung der jeweiligen Funktionalität • Eclipse-SupplementImporter
ten, die OSGi bietet, werden in Equinox
aufgerufen werden. Diese Klassen und • Eclipse-SupplementExporter
durch eine ausgefeilte Classloading-Stra-
Ressourcen werden in einem so genann-
tegie umgesetzt. Daher kann für AspectJ
ten Framework Extension Fragment ge- Den unter Eclipse-SupplementBundle
Load-time Weaving unter Equinox nicht
bündelt, dessen Host Bundle das System aufgeführten Bundles wird beim Laden
die oben erwähnte Standardunterstüt-
Bundle org.eclipse.osgi ist. dynamisch die Abhängigkeit vom As-
zung in Form von JVM Agents verwen-
Im Eclipse-Projekt Equinox Aspects pekt-Bundle hinzugefügt. Analog dazu
[17] sind nun verschiedene Hooks reali- werden bei Eclipse-SupplementImpor-
Checkliste für siert, insbesondere ein BundleFileWrap- ter und Eclipse-SupplementExporter
Aspekt-Bundles perFactoryHook und ein ClassLoading- importierte bzw. exportierte Packages
Hook, um AspectJ Load-time Weaving hinzugefügt. Im mitgelieferten Beispiel
Die folgenden Punkte müssen umgesetzt wer-
den, damit Aspekt-Bundles „funktionieren“: für Equinox zu ermöglichen. Das ver- findet man im Bundle-Manifest des As-
wendete Framework Extension Frag- pekt-Bundles de.metafinanz.demo.aop.
• Einfügen der Supplement Header für zu
ment heißt org.aspectj.osgi, und über die osgi.aspect den folgenden Eintrag:
aspektierende Bundles/Packages
System Property osgi.framework.exten-
• Exportieren der Packages mit Aspekten
sions wird es dem Hookabel Adaptor be- Eclipse-SupplementBundle: de.metafinanz.demo.aop.osgi
• Exportieren des Packages mit aop.xml
kannt gegeben:
(in der Regel org.aspectj)
Dadurch wird das Bundle de.metafinanz.
• Reexportieren der AspectJ Library
demo.aop.osgi zur Laufzeit mit einer
osgi.framework.extensions=org.aspectj.osgi
24 eclipse magazin Vol. 15 www.eclipse-magazin.de
5. Architektur
AspectJ und Equinox
Abhängigkeit auf das Aspekt-Bundle wichtig, dass die Aspekt-Bundles diese SDKs verwendet. Die oben aufgeführten
Abhängigkeit reexportieren: System Properties werden im Reiter Ar-
de.metafinanz.demo.aop.osgi.aspect
versehen (Abb. 4). guments gesetzt und die zu verwenden-
Für die Angabe der Bundles können den Bundles werden im Reiter Bundles
Require-Bundle: org.aspectj.runtime;visibility:=reexport
auch Wildcards verwendet werden, z.B. konfiguriert. Dabei ist es wichtig, den
Weaving Service (org.aspectj.osgi.service.
Eine Zusammenfassung der wichtigsten
weaving) zu starten, bevor zu aspektieren-
Konfigurationseinstellungen für die Ver-
Eclipse-SupplementBundle: de.metafinanz.*, org.eclipse.*
de Bundles geladen werden, z.B. indem ein
wendung von Equinox Aspects befindet
geeigneter Start-Level gesetzt wird.
Alle Bundles, die mit de.metafinanz oder sich im Kasten „Checkliste für Aspekt-
org.eclipse beginnen, erhalten in diesem Bundles“.
Fazit
Fall eine Abhängigkeit auf das Aspekt-
Beispiel
Bundle. Equinox Aspects verwendet zur Mit Equinox Aspects steht eine Frame-
Identifizierung der Aspekte, die beim Zur Verdeutlichung der vorgestellten work Extension für Equinox zur Verfü-
Load-time Weaving berücksichtigt wer- Konzepte dient ein stark vereinfachtes gung, mit der AspectJ Load-time Weaving
den sollen, aop.xml-„Standarddateien“ Beispiel des Performance Loggings. Das auch unter den besonderen Rahmen-
[20]. Nur die Aspekte, die dort aufge- Bundle de.metafinanz.demo.aop.osgi bedingungen von OSGi bzw. Equinox
führt sind, werden berücksichtigt. Im enthält ein „Hello World“-Command funktioniert. So lassen sich die Vorteile
mitgelieferten Beispiel enthält die aop. für die OSGi-Konsole: Wenn „hello“ auf von aspektorientierter Programmierung,
xml-Datei nur einen Aspekt: der Konsole eingegeben wird, dann wird Load-time Weaving und OSGi hervorra-
„Hello World!“ ausgegeben. Das Bundle gend ergänzen, sodass eine durchgängige
de.metafinanz.demo.aop.osgi.aspect ent- Modularisierung erzielt werden kann.
<aspectj>
hält einen Aspekt, der die Ausführungs- So konnte in einem Großprojekt der Alli-
<aspects>
<aspect name=quot;de.metafinanz.demo.aop.osgi.console. dauer dieses Kommandos misst und diese anz Deutschland AG der typische Cross-
aspect.PerfHelloquot; />
ebenfalls auf der Konsole ausgibt. Cutting Concern Performance Logging
</aspects>
Um die Beispielapplikation auszufüh- mithilfe von AspectJ Load-time Weaving
</aspectj>
ren, wird der OSGi-Launcher des Eclipse elegant realisiert werden.
Über die System Property org.aspectj.
weaver.loadtime.configuration wird
Harald Griesbeck arbeitet bei der
Heiko Seeberger leitet die Market
Equinox Aspects mitgeteilt, welche aop. Allianz Deutschland AG als Client-
Unit Enterprise Architecture der
xml-Dateien herangezogen werden sol- Architekt im ABS-Projekt. Er ist seit
metafinanz GmbH (www.metafinanz.
len. Als Standard hat sich hier org/as- über zehn Jahren im Java-Umfeld
de). Er erstellt seit etwa zehn
pectj/aop.xml etabliert, aber natürlich tätig, mit Schwerpunkt Client-Fra-
Jahren Enterprise Applications mit
meworks und Integration von Java-Client-Anwen-
sind beliebige andere Pfade möglich. Java, wobei sein aktueller Fokus auf Eclipse und
dungen in die Allianz-Anwendungslandschaft.
AspectJ liegt.
Kontakt: harald.griesbeck@allianz.de.
Kontakt: heiko.seeberger@metafinanz.de.
org.aspectj.weaver.loadtime.configuration=org/aspectj/
aop.xml
>>Links & Literatur
Selbstverständlich gilt auch für Aspekt-
Bundles, dass nur exportierte Packages
[13] ant.apache.org
[1] Handelsblatt Nr. 220, 14.11.2006, S. 28:
für abhängige Bundles sichtbar sind. Das ALLIANZ: Der Versicherer macht sich fit [14] PDB-Bug: https://bugs.eclipse.org/bugs/
bedeutet, dass sowohl die Packages, die für die Zukunft. show_bug.cgi?id=147432/
Aspekte enthalten, als auch die Packages, [2] sueddeutsche.de, 25.11.2007: www.sued- [15] AspectJ-LTW: www.eclipse.org/
welche die aop.xml-Dateien enthalten, deutsche.de/,ra3m1/wirtschaft/ aspectj/doc/released/devguide/
exportiert werden müssen. Ansonsten artikel/850/144524/ ltw-configuration.html
findet entweder kein Weaving statt oder [3] www.eclipse.org/platform/ [16] Hookable Adaptor: wiki.eclipse.org/index.
das Weaving bricht mit Fehler ab. Im mit- php/Adaptor_Hooks/
[4] www.eclipse.org/equinox/
gelieferten Beispiel werden die folgenden [17] Equinox Aspects: www.eclipse.org/equin-
[5] de.wikipedia.org/wiki/
Packages exportiert: ox/incubator/aspects/
Cross-Cutting_Concern/
18] Equinox Aspects Update Site: download.
[
[6] en.wikipedia.org/wiki/
eclipse.org/tools/aspectj/dev/update/
Separation_of_Concerns/
Export-Package: de.metafinanz.demo.aop.osgi.console.
aspect, [19] Equinox Aspects Getting Started: www.
[7] de.wikipedia.org/wiki/
eclipse.org/equinox/incubator/aspects/
Aspektorientierte_Programmierung/
org.aspectj
getting_started.php
[8] www.eclipse.org/aspectj/
[
20] aop.xml: www.eclipse.org/aspectj/doc/
Da die Aspekte von der AspectJ Runtime [9] www.eclipse.org/ajdt/
released/devguide/ltw-configuration.html
Library abhängig sind, entsteht beim 10] de.wikipedia.org/wiki/
[
[21] Peter Friese, Martin Lippert,
Weaving eine mittelbare Abhängigkeit Komponente_%28Software%29/
Heiko Seeberger: Security does
der zu aspektierenden Bundles von der [11] www.osgi.org
matter, Eclipse Magazin Vol. 12
AspectJ Runtime Library. Daher ist es [12] www.eclipse.org/pde/pde-build/
25
www.eclipse-magazin.de eclipse magazin Vol. 15