我正在制作一个应用程序服务器,在其中我需要使用一些字节码操作(例如,将自定义equals
和hashCode
方法插入到带有注释的类中@Entity
)。现在我给 JVM 一个 Java 代理(-javaagent选项),它使用ASM进行字节码转换。
我一直在考虑使用OSGi,但我不知道它是否允许我进行必要的字节码操作。
- 使用 OSGi 时是否可以进行字节码操作?如何?
- 捆绑包是否可以声明自己,它需要一些字节码操作才能工作?例如,应用程序服务器要求对它自己的一些核心类进行操作。
- 是否可以指定某个其他捆绑包需要一些字节码操作,而该捆绑包不知道它?例如,所有在服务器上运行的应用程序都必须被操纵,但应用程序不需要知道它。
- 捆绑包是否可以声明自己,所有依赖于它的捆绑包都必须进行字节码操作?这将使我很容易声明所有依赖于包含
@Entity
注释的 API 包的人都必须被操纵。