OSGi 4.3 hinzugefügt, um die WeavingHook , die Ihnen erlaubt, do-Byte-Code-Manipulation mit einem Byte-Code-Manipulator Ihrer Wahl. Ich benutze es mit JavaAssist auf einem meiner Projekte und es funktioniert super.
Ich mache einen Anwendungsserver und in diesem muss ich einige Bytecode-Manipulationen verwenden (zB das Einfügen von benutzerdefinierten equals
und hashCode
Methoden zu Klassen, die mit @Entity
) kommentiert wurden. Jetzt gebe ich der JVM einen Java-Agenten (die Option -javaagent ), die Bytecode-Transformationen mit < a href="http://asm.objectweb.org/"> ASM .
Ich habe überlegt, OSGi zu verwenden, aber ich weiß nicht, ob es mir erlaubt, den notwendigen Bytecode zu machen Manipulation.
@Entity
-Anmerkung enthält, manipuliert werden müssen. OSGi 4.3 hinzugefügt, um die WeavingHook , die Ihnen erlaubt, do-Byte-Code-Manipulation mit einem Byte-Code-Manipulator Ihrer Wahl. Ich benutze es mit JavaAssist auf einem meiner Projekte und es funktioniert super.
1) Ja, es ist möglich, eine Bytecode-Manipulation in OSGi durchzuführen. Das Wie ist ein bisschen anders als mit Standard-Java, müssen Sie das Extender-Muster hier beschreiben Ссылка . Ich glaube, dass Eclipse das in ihrem Projekt für Tag-Nacht-Gleiche verwendet: Ссылка . Spring DM verwendet definitiv dieses Muster, um osgi dm module automatisch zu konfigurieren.
2), das wäre das Extender-Muster, das Sie verwenden. So funktioniert der Feder-Extender, indem er im Ordner META-INF / spring nach Konfigurationsdateien sucht, bevor diese von der Plattform gestartet werden.
3) Das wäre wiederum der von Ihnen definierte Extender.
4) Ich glaube, das wäre möglich, denn bevor ein Bündel gestartet werden kann, muss es aufgelöst und Abhängigkeiten gestartet werden. Ihr Extender könnte dann Bündelabhängigkeiten analysieren und die Bytecode-Manipulation starten.
Tags und Links java osgi aop bytecode-manipulation