JMX监控weblogic问题

hushowly 2008-09-02 06:27:11
工作须要,得监控weblogic的指标,例如:连接池、线程数、JMS明细、EJB明细,等指标!在网上了解了一下JMX原理,也做了一个JMX的Hello例子,但是要监控weblogic不知道如何动手,得到了与weblogic的Mbeanserverconnection,但是不知道怎么得到我要的监控指标,是还要注册相应的Mbean?该Mbean要怎么写呀?又怎么从Mbean上得到相应的监控数据,自己做的JMX例子好像太浅,希望哪位JMX老手指点一下,能否提供点JMX资料!我得到Mbeanserverconnection的代码如下:
private static MBeanServerConnection lookupMBeanServer9(String ip, String port, String name, String pass)
{
String protocol;
String s5;
protocol = "t3";
s5 = "/jndi/weblogic.management.mbeanservers.runtime";
MBeanServerConnection mbeanserverconnection;
try
{
//JarLoader jarloader = new JarLoader((new StringBuilder()).append(".").append(File.separator).append("working").append(File.separator).append("classes").append(File.separator).append("weblogicclient9.jar").toString());
//Thread.currentThread().setContextClassLoader(jarloader);
JMXServiceURL jmxserviceurl = new JMXServiceURL(protocol,ip, Integer.parseInt(port), s5);
Hashtable hashtable = new Hashtable();
hashtable.put("java.naming.security.principal", name);
hashtable.put("java.naming.security.credentials", pass);
hashtable.put("jmx.remote.protocol.provider.pkgs", "weblogic.management.remote");
JMXConnector jmxconnector = JMXConnectorFactory.connect(jmxserviceurl, hashtable);
mbeanserverconnection = jmxconnector.getMBeanServerConnection();

return mbeanserverconnection;
}catch(Exception ex){
ex.printStackTrace();
}
return null;
}
...全文
1705 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
iAskEngineer 2011-01-20
  • 打赏
  • 举报
回复
这个例子应该可以作为一个starting point了:

http://download.oracle.com/docs/cd/E12840_01/wls/docs103/jmx/accessWLS.html#wp1114746


-------------------------------------------------
爱问易 - 非官方技术支持互助平台
http://www.iaskengineer.com
-------------------------------------------------
几块钱就能解决的问题,何必困扰好几天?
-------------------------------------------------
马勒格彼得 2010-03-23
  • 打赏
  • 举报
回复
有代码吗?
huoyin 2008-10-01
  • 打赏
  • 举报
回复
你说的这些wls应当已经提供了相应的mbean,不需要你重新注册一个你自己的mbean,这个应当有一个标准叫做jsr77的,你可以看看。
YuLimin 2008-09-28
  • 打赏
  • 举报
回复
查看WLS的e-docs,里面有比较详细的说明与代码示例
bing910 2008-09-04
  • 打赏
  • 举报
回复
连接池、线程数、JMS明细、EJB明细这些是不需要注册的,直接去查找官网查询对应的MBean就可以了,还有很多都是。
首先你可以创建好顶级的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不同版本考虑实现的兼容性问题。
qingkangxu 2008-09-03
  • 打赏
  • 举报
回复
但是不知道怎么得到我要的监控指标,是还要注册相应的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以及他们的说明。



67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧