💡
原文约800字/词,阅读约需3分钟。
📝
内容提要
本文讨论了在OpenResty中实现Java类热重载的过程。通过创建新的类加载器并打破父委托模型,作者实现了一个动态类加载器,允许在不修改现有Java应用代码的情况下进行类重载。使用时,只需在调用ngx.load_ffi()时在类名后加问号。
🎯
关键要点
- 本文讨论了在OpenResty中实现Java类热重载的过程。
- 通过创建新的类加载器并打破父委托模型,作者实现了一个动态类加载器。
- 动态类加载器允许在不修改现有Java应用代码的情况下进行类重载。
- Java类加载器采用父委托模型,加载类时会优先从父类加载器查找。
- 要实现类重载,需要创建新的类加载器并打破父委托模型。
- 使用时,只需在调用ngx.load_ffi()时在类名后加问号。
❓
延伸问答
什么是Java类热重载?
Java类热重载是指在不修改现有Java应用代码的情况下,动态加载和替换Java类的过程。
如何在OpenResty中实现Java类热重载?
在OpenResty中实现Java类热重载需要创建新的类加载器并打破父委托模型,使用时在调用ngx.load_ffi()时在类名后加问号。
Java类加载器的父委托模型是什么?
父委托模型是指类加载器在加载类时,首先会尝试从其父类加载器中查找类,如果找不到才会自己加载。
为什么需要打破父委托模型进行类重载?
打破父委托模型是为了允许新的类加载器加载类,从而实现类的动态重载,而不受限于已加载类的缓存。
在使用Java类热重载时,如何调用新的类?
在调用新的类时,只需在类名后加问号,例如:ngx.load_ffi('ffi_java', 'demo.http2.App?,init,')。
动态类加载器的作用是什么?
动态类加载器允许在不修改现有代码的情况下,动态加载和重载Java类,支持热重载功能。
➡️