Java类热重载

Java类热重载

💡 原文约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类,支持热重载功能。

➡️

继续阅读