请教各位一个有关jmx的问题

03-11-10 烤串
这段时间看了一些jmx方面的资料

并调试了jmx自带的例子

现在有一个问题想不清楚:

我理解的jmx是通过一个agent来管理实现了jmx特定模式的一些class

以jmx自带StandardMBean的例子为例

特定的模式指:“public interface SimpleStandardMBean”

实现该模式的class指

“public class SimpleStandard implements SimpleStandardMBean ”

然后可以通过"StandardAgent"可以把"SimpleStandardMBean "载入内存

并显示以及调用其方法。

以上这些操作的具体实现是在“com.sun.jmx.interceptor.DefaultMBeanServerInterceptor”

中。

我的问题是把一个class载入内存并调用其方法实际上是通过java的reflection机制来实现的,这应该不是jmx自身的特性吧?

jmx是用来作设备管理的,就是要动态的修改jvm中实例的状态然后立即生效而不用重新加载该实例(比如重新启动server),那么,我要怎么来调用这个被jmx所管理的实例呢?

如果以一个数据库连接池为例,我认为如果要通过jmx对其进行管理的话,要走如下几步:

1. 这个数据库连接池要按照jmx的模式来实现。

2. 在第一次被调用的时候载入内存并只维护一个实例

3. 管理员可以通过jmx agent来修改该实例的状态比如最大连接数,但不需要重新加载该连接池以更新内存中的实例

4. 用户继续使用更新过的实例

在这几部中,是否需要一个支持jmx的server?

这个server和MBeanServer有什么不同?

MBeanServer.createMBean以及MBeanServer.registerMBean之后是不是说就可以通过一种方式来获得MBeanServer中的这个object?

如果是的话通过何种方式?

不知我这样的理解有什么问题,请各位指点。

烤串
2003-11-10 17:31
新手上路

请各位多多指点

烤串
2003-11-11 17:10
顶一下

猜你喜欢