但是不知道怎么得到我要的监控指标,是还要注册相应的Mbean?
我认为连接池、线程数、JMS明细、EJB明细这些统计功能在Server已经有了。
也就是说实现这些功能的MBean已经被注册到MBeanServer上了。现在你已经获得“MBeanServerConnection mbeanserverconnection”了。
你可以用这个mbeanserverconnection执行很多操作,比如获得Server端的MBean,调用server端MBean的方法。这里有一点你必须明白:
MBeanServerConnection 是可以调用Server的MBean的方法的,但是前提是你要知道被注册的MBean的ObjectName。ObjectName是很重要的,你要注册MBean到MBeanServer上时,是需要指定一个可以唯一标示你的MBean的ObjectName,也就是说实际上ObjectName就代表着一个MBean。所以我给你的建议是,
1,先通过mbeanserverconnection 获得所有MBean的ObjectName。
代码:Set objectNameSet = mbeanserverconnection.queryNames(null,null),
参数都设置为NULL代表你要查询所有的ObjectName,
2,通过以上的信息确定实现你需要的功能的MBean的ObjectName,
通过OBjectName这个表示去调用相应的方法
代码:mbeanserverconnection.invoke(ObjectName "能实现你要的功能的MBean的ObjectName", String "比如:get线程数", Object[] params, String[] signature)
关于invoke()方法的各参数请参照JDK补充说一下,你要获得线程数的话,JDK已经有自己的MBean,而且这个MBean的ObjectName为:你去java.lang.management包里面去看,那里有好多个实用的MBean以及他们的说明。
我认为连接池、线程数、JMS明细、EJB明细这些统计功能在Server已经有了。
也就是说实现这些功能的MBean已经被注册到MBeanServer上了。现在你已经获得“MBeanServerConnection mbeanserverconnection”了。
你可以用这个mbeanserverconnection执行很多操作,比如获得Server端的MBean,调用server端MBean的方法。这里有一点你必须明白:
MBeanServerConnection 是可以调用Server的MBean的方法的,但是前提是你要知道被注册的MBean的ObjectName。ObjectName是很重要的,你要注册MBean到MBeanServer上时,是需要指定一个可以唯一标示你的MBean的ObjectName,也就是说实际上ObjectName就代表着一个MBean。所以我给你的建议是,
1,先通过mbeanserverconnection 获得所有MBean的ObjectName。
代码:Set objectNameSet = mbeanserverconnection.queryNames(null,null),
参数都设置为NULL代表你要查询所有的ObjectName,
2,通过以上的信息确定实现你需要的功能的MBean的ObjectName,
通过OBjectName这个表示去调用相应的方法
代码:mbeanserverconnection.invoke(ObjectName "能实现你要的功能的MBean的ObjectName", String "比如:get线程数", Object[] params, String[] signature)
关于invoke()方法的各参数请参照JDK补充说一下,你要获得线程数的话,JDK已经有自己的MBean,而且这个MBean的ObjectName为:你去java.lang.management包里面去看,那里有好多个实用的MBean以及他们的说明。
解决方案 »
- org.springframework.scheduling.quartz.JobMethodInvocationFailedException
- hql inner join on 的问题
- 郁闷的HIBERANTE一对多双向关联问题
- 操作实体类及HQL中,如何将表列变为行显示!
- 不知文件编码格式,写入数据库中文是乱码。
- 为什么我在SessionBean中抛出的异常,客户端捕捉不到,Weblogic server端却会显示出来?
- 懂WSAD的人进...救命!!!
- Java 连接数据库遇到的问题,在线等!!!!
- 那位大虾可以告诉我JB自动生成的那些Enterprise1Bean_st8cog_EOImpl类有什么用
- 请问有关struts中标签的问题?
- 关于ECSIDE导出EXCEL的问题
- hibernate的事务处理配置为thread和JTA的区别
首先你可以创建好顶级的ObjectName,好像有个三个不同类型:可以参考一下http://edocs.bea.com.cn/wls/docs92/jmx/accessWLS.html
这里可以举个例子:如
ObjectName o = new ObjectNam("com.bea:Name=RuntimeService,Type=weblogic.management.mbeanservers.runtime.RuntimeServiceMBean");
因为这个ObjectName下面有很多其他的MBean:JVMRuntimeMBean就是其中一个,当然JVMRuntimeMBean下面可能还有其他
那么获取JVMRuntimeMBean的ObjectName就可以如下:
ObjectName jvm = (ObjectName) connection.getAttribute(server, "JVMRuntime");
通过调用getAttribute方法就可以去获取各个参数。
connection.getAttribute(jvm,"Name")
参数名称在官网对应的MBean有说明的。上面是针对weblogic9.x的监控,如果对于weblogic8.1等版本就跟weblogic9.x完全不一样。weblogic9.x和weblogic8.1对应的JMX版本不一样
且JDK1.5及以后把JMX包括到JDK的rt.jar中了.weblogic8.1对应的JMX为1.0在自己所带的weblogic.jar包,JDK为1.4没有实现
固在不同的JDK中还需要根据监控的weblogic不同版本考虑实现的兼容性问题。
-------------------------------------------------
爱问易 - 非官方技术支持互助平台
http://www.iaskengineer.com
-------------------------------------------------
几块钱就能解决的问题,何必困扰好几天?
-------------------------------------------------