AOP绝对是个好东西,但是因为大部分的AOP实现都是通过修改字节码实现的,这就给Hot Deploy带来问题,在进行Hot Code Replace的时候JVM会抛错:Hot code replace failed – Hierarchy change not implemented,根据字面的意思,我猜测是JVM判断出原始的字节码有变化,但是JVM中的字节码是修改过的,类似子类的结构。目前还没有找到比较权威的解释,另外我对AOP也不是很熟悉,所以仅仅是猜测
(Visited 427 times, 1 visits today)
2007年8月2日 at 19:56
只要这样想:AOP框架都会动态生成一个子类(名气大的类库就是CGLib),当你hot deploy的时候,JVM找不到该动态子类的class文件,呵呵……
2007年8月2日 at 21:27
JVM应该不是找class文件,而是替换内存中的类定义就行,应该是JVM不支持这样的关联替换。
而一般的类,如果修改了父类,那么子类也会重新编译,那么Hot Code Replace的时候会全部更换。
2007年8月3日 at 08:50
试一试动态代理实现AOP
2007年8月3日 at 21:25
呵呵,产品中,不可能随便换AOP组件的 :em35: