JMX中M-let Class Loader的动态下载方式
在JMX的规范中,可以将Agent layer和instrumentation layer放在被管理应用,这样可以用MBean进行本地的资源管理,如果Agent layer和instrumentation layer和被管理应用分离,用JMX的实现管理多个远程应用的情况下,则需要JMX的M-let服务下载远程的MBean来进行资源管理。JMX规范中不只提供了动态加载MBean,而且提供了远程下载MBean的方法。本文介绍一下M-let服务进行动态远程下载java class的方式。
首先要知道的是M-let Class Loader作为JMX的一个服务,也是以MBean的形式存在的,因此需要实现MLetMBean接口;为了实现该MBean的下载功能,需要继承java.net.URLClassLoader。因为M-let Class Loader是一个MBean,因此可以被JMX中的代理直接的调用,也可以被management application远程调用和管理。本文假设MletTest(继承了URLClassLoader并且实现了MLetMBean接口)作为一个M-let Class Loader,下面介绍一下M-let Class Loader的动态下载方式。
1.利用M-let文件进行远程下载
M-let文件和xml文件极为相似,在JMX规范中规定了M-let的书写结构,可以参考JMX in Action或者Sun官方的文档。例如: