代码之家  ›  专栏  ›  技术社区  ›  Esko Luontola

在使用OSGi时是否可以进行字节码操作?

  •  9
  • Esko Luontola  · 技术社区  · 16 年前

    我在做什么 an application server equals hashCode @Entity ). 现在我给JVM一个Java代理(Java代理) -javaagent 选项)使用 ASM .

    OSGi ,但我不知道它是否允许我进行必要的字节码操作。

    1. 有没有可能在其他包不知道的情况下指定其他包需要某些字节码操作?例如,所有在服务器上运行的应用程序都必须被操作,但是应用程序不需要知道它。
    2. 一个bundle是否可以声明它自己,依赖它的所有bundle都必须被字节码操纵?这将使我很容易声明,所有依赖于包含
    2 回复  |  直到 16 年前
        1
  •  7
  •   rancidfishbreath    5 年前

    OSGi4.3增加了 WeavingHook

        2
  •  3
  •   Patrick Roumanoff    16 年前

    1) 是的,可以在OSGi中进行字节码操作。与标准java有点不同,您需要使用这里描述的扩展程序模式 http://www.osgi.org/blog/2007/02/osgi-extender-model.html . 我相信Eclipse正在equinox aspect项目中使用它: http://www.eclipse.org/equinox/incubator/aspects/ . Spring DM 绝对是使用这种模式来自动配置osgi dm模块。

    4) 我相信这是可能的,因为在包启动之前,它必须解析并启动依赖项,然后您的扩展程序可以分析包依赖项并启动字节码操作。