Architektur                                                                                      AspectJ und Equinox




P...
Architektur
AspectJ und Equinox



                                               gang nennt man Weaving. AspectJ bietet
f...
Architektur                                                                                             AspectJ und Equino...
Architektur                                                                                                  AspectJ und E...
Architektur
AspectJ und Equinox



Abhängigkeit auf das Aspekt-Bundle                         wichtig, dass die Aspekt-Bun...
Nächste SlideShare
Wird geladen in …5
×

Eclipse Magazin15 - Performance Logging

1.737 Aufrufe

Veröffentlicht am

Veröffentlicht in: Technologie, Bildung
0 Kommentare
0 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Keine Downloads
Aufrufe
Aufrufe insgesamt
1.737
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
3
Aktionen
Geteilt
0
Downloads
21
Kommentare
0
Gefällt mir
0
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Eclipse Magazin15 - Performance Logging

  1. 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. 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. 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. 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. 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

×