我正在创建一个应用程序服务器,在其中我需要使用一些字节码操作(例如,将自定义equals
和hashCode
方法插入到带注释的类中@Entity
).现在我给JVM一个Java代理(-javaagent选项),它使用ASM进行字节码转换.
我一直在考虑使用OSGi,但我不知道它是否允许我进行必要的字节码操作.
使用OSGi时是否可以进行字节码操作?怎么样?
bundle是否有可能声明自己,它需要一些字节码操作才能工作?例如,应用程序服务器要求操作它自己的一些核心类.
是否可以指定其他一些bundle需要一些字节码操作,而没有那个bundle知道它?例如,必须操纵在服务器上运行的所有应用程序,但应用程序不需要知道它.
bundle是否有可能声明自己,所有依赖它的bundle必须是字节码操作的?这将使我很容易声明所有依赖于包含@Entity
注释的API包的人都必须被操纵.
rancidfishbr.. 7
OSGI 4.3添加了WeavingHook,它允许您使用您选择的字节代码操作符进行字节代码操作.我在我的一个项目中使用JavaAssist并且效果很好.
OSGI 4.3添加了WeavingHook,它允许您使用您选择的字节代码操作符进行字节代码操作.我在我的一个项目中使用JavaAssist并且效果很好.