解惑

解己之惑,解人之惑

使用AOP带来的问题

AOP绝对是个好东西,但是因为大部分的AOP实现都是通过修改字节码实现的,这就给Hot Deploy带来问题,在进行Hot Code Replace的时候JVM会抛错:Hot code replace failed – Hierarchy change not implemented,根据字面的意思,我猜测是JVM判断出原始的字节码有变化,但是JVM中的字节码是修改过的,类似子类的结构。目前还没有找到比较权威的解释,另外我对AOP也不是很熟悉,所以仅仅是猜测

(Visited 374 times, 1 visits today)

4 Comments

  1. 只要这样想:AOP框架都会动态生成一个子类(名气大的类库就是CGLib),当你hot deploy的时候,JVM找不到该动态子类的class文件,呵呵……

  2. JVM应该不是找class文件,而是替换内存中的类定义就行,应该是JVM不支持这样的关联替换。
    而一般的类,如果修改了父类,那么子类也会重新编译,那么Hot Code Replace的时候会全部更换。

  3. 试一试动态代理实现AOP

  4. 呵呵,产品中,不可能随便换AOP组件的 :em35:

发表评论

邮箱地址不会被公开。 必填项已用*标注

© 2024 解惑

本主题由Anders Noren提供向上 ↑