`
ruijf
  • 浏览: 71201 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

远程调用JMX开放的方法

 
阅读更多

JMX的功能主要通过远程调用RMI来实现。本文以获取c3po连接池连接数量为例(本文对c3po稍做了修改,以便监控):具体实现如下

import java.util.HashMap;
import java.util.Map;
import javax.management.MBeanServerConnection;
import javax.management.ObjectName;
import javax.management.remote.JMXConnector;
import javax.management.remote.JMXConnectorFactory;
import javax.management.remote.JMXServiceURL;


public class JmxService {
	private static final String  C3P0_REGISTRY_OBJNAME ="com.mchange.v2.c3p0:type=C3P0Registry";
	private static final String  C3P0_REGISTRY_OPERNAME ="getPooledDataSourcesIdentity";
	private String username = "controlRole";
	private String password = "123qwe";
	
	public void setUsername(String username) {
		this.username = username;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	
	//sign 参数类型的说明
	public Object invokeMBeanMethod(String url,String operName,Object[] params,String[] signs) throws Exception{
		JMXConnector connector = null;
		try {
			JMXServiceURL serviceURL = new JMXServiceURL(url);
			if(username == null || username.length()==0){
				//不需要权限认证的连接器
				connector = JMXConnectorFactory.connect(serviceURL);
			}else{
				Map<String,Object> environment = new HashMap<String,Object>();   
				environment.put(JMXConnector.CREDENTIALS, new String[] {username,password}); 
				connector = JMXConnectorFactory.connect(serviceURL,environment);
			}
			//得到MBean服务连接
			MBeanServerConnection connection =connector.getMBeanServerConnection();
			//调用JMX功能方法,得到返回值
			Object pdsId = connection.invoke(new ObjectName(C3P0_REGISTRY_OBJNAME), C3P0_REGISTRY_OPERNAME, new String[]{null}, new String[] {"java.lang.String"});
			String objName = "com.mchange.v2.c3p0:type=PooledDataSource["+pdsId+"]";
			Object res = connection.invoke(new ObjectName(objName), operName, params, signs);
			return res;
		} finally{
			if(connector!=null)
				connector.close();
		}
	}
	
	public static void main(String[] args)throws Exception {
		String url      = "service:jmx:rmi:///jndi/rmi://192.168.6.3:9998/jmxrmi";
		String operName = "getMaxPoolSize";
		//String operName = "allIdentityTokens";
		Object[] params = null;
		String[] signs  = null;
		
		JmxService jmxService = new JmxService();
		Object res = jmxService.invokeMBeanMethod(url,operName, params, signs);
		System.out.println(res);
	}
}

 执行结果:10

分享到:
评论

相关推荐

    JMX 远程服务器信息监控

    RMI允许跨网络调用对象方法,而JMX Connectors则是JMX和外部世界的桥梁,支持多种协议如JMX Remote Protocol,允许客户端通过网络连接到MBeanServer。 五、监控CPU利用率 在JMX中,可以使用MBeans获取操作系统级别...

    jmx.rar_jmx

    代理类提供了与MBean相同的方法,简化了对远程资源的调用。 5. **连接器(Connector)**:JMX连接器提供客户端与MBeanServer之间的通信。有多种类型的连接器,如RMI(Remote Method Invocation)、JMXMP(JMX ...

    jmx例子一则

    `incrementCounter()`方法可以被调用来增加计数器的值,而`getCounter()`返回当前值。 接下来,MBeans需要注册到MBean服务器,这是JMX的核心组件,它负责管理所有的MBeans并处理管理请求。这通常通过`MBeanServer`...

    jmx所需jar包

    在Java应用中,JMX允许你监控性能指标,控制应用程序配置,甚至远程管理应用程序。 在标题和描述中提到的"jmx所需jar包",通常是指为了在Java环境中使用JMX功能而必需的库文件。这些JAR文件包含了JMX API和其他相关...

    jmxri.jar和jmxtools.jar 1.2.1

    - **MBean Server**:MBean Server是JMX架构的核心,负责管理MBean的生命周期,包括创建、注册、查找、删除MBean,以及调用MBean的方法。 - **MBean操作和属性**:MBean的操作和属性定义了MBean的功能和状态。属性...

    JVM JMX java

    2. **栈内存管理**:每个线程都有一个独立的栈,用于存储方法调用帧,包括局部变量、操作数栈和方法返回地址。 3. **垃圾回收**:JVM自动进行垃圾回收,释放不再使用的对象所占用的内存。GC策略包括分代收集、标记-...

    论文研究-JMX技术在网络监控中的应用.pdf

    例如,可以使用JMX API编写代码动态地调用MBean服务器的接口来创建新的MBean,或者发送通知来启动监控中的某些特定任务。这种能力极大地增强了网络监控系统的灵活性和动态配置能力。 综上所述,JMX技术在网络监控中...

    jmx tool jar 备用

    MBeans可以是标准的、开放的或私有的,它们通过MBeanServer进行注册,然后可以通过JMX客户端工具进行访问和操作。MBeanServer是JMX架构的核心,它负责管理MBeans,并提供查询、通知和远程访问等功能。 "jmx-1_2_1-...

    论文研究-基于JMX的网络管理系统.pdf

    JMX允许通过RMI(远程方法调用)或HTTP等协议进行远程访问,提供了比SNMP更为复杂的管理功能。 JMX体系结构在网络管理系统中的应用,使得开发者能够轻松地整合多种管理功能到应用程序中,而不需要关注底层的网络...

    cmdline-jmxclient-0.10.3

    JMX是一种Java平台的标准,它提供了一种管理和监控应用程序、操作系统和网络设备的方法。 描述中提到“用于获得JMX的相关信息”,这意味着cmdline-jmxclient-0.10.3是一个实用程序,允许用户通过命令行界面查询和...

    sqlproc-archetype-simple-jdbc-2.2.3.zip

    CloudBees JMX Invoker允许通过脚本方式远程调用JMX服务,执行特定的管理操作或者获取应用程序的属性信息。这对于系统管理员和运维人员来说非常有用,因为他们可以远程监控和调整Java应用,而无需直接访问运行应用的...

    JMX应用技术架构系统(包括具体开发说明)

    - **操作**:客户端调用MBean的方法,执行管理任务。 - **通知**:MBean向客户端发送通知,报告状态变化。 ### 3.3 四种类型MBean介绍 - **标准MBean**:遵循预定义的Java接口。 - **模型MBean**:基于动态生成的...

    JMX1.4 规范 翻译 第一章(介绍)(至1.6节)

    所有对MBeans的操作都通过MBean服务器进行,包括创建、删除、查询和调用MBean的方法。 ### 4. MBean代理 MBean代理是访问MBean服务器的一种方式,它提供了更抽象的接口,简化了对MBeans的操作。JMX API提供了`...

    JMX Console Tools-开源

    - 自动化运维任务,通过脚本调用JMX接口进行批量操作。 开源软件的特性使得JMX Console Tools对社区开放,任何人都可以查看其源代码,贡献自己的改进,或者根据需要定制功能。这样的开放性促进了技术的共享和持续...

    IntelliJ远程调试教程.doc

    远程调试的核心是通过特定的网络通信协议(如JMX或JDWP)建立本地IDE与远程服务器之间的连接。IDE作为客户端发起调试请求,远程服务器上的应用响应这些请求,并根据请求执行相应的操作(如设置断点、查看变量值等)...

    idea13远程服务器TOMCAT调试

    - 当远程服务器上的应用程序执行到断点时,IDEA将暂停并显示变量值,允许单步执行、查看调用堆栈、修改变量等操作。 7. **源码关联**: - 为了在IDEA中查看服务器端的源代码,需要确保IDEA中的项目已经包含了正确...

    Argus JMX Browser-开源

    3. **MBean操作**:用户可以直接通过Argus JMX Browser执行MBean的操作方法,如调用方法、设置属性值,以实现对应用的动态调整。 4. **数据导出**:对于分析或报告需求,Argus提供了导出监控数据的功能,可以将收集...

    guava-gwt-12.0-rc2.zip

    4. **RMI**:RMI是Java语言中的一种远程调用机制,使得一个Java对象可以在一个JVM上执行另一个JVM上的对象的方法。RMI常用于分布式系统,如构建服务端和客户端之间的通信。 5. **JMX-RMI代理**:结合JMX和RMI,可以...

    java远程监控

    在远程监控中,这种模式常见于安全考虑,因为服务器通常有更多的权限和更开放的网络环境,如果服务器直接连接客户端,可能会引入安全隐患。通过反向连接,客户端可以控制何时、何地以及是否允许服务器获取其状态信息...

Global site tag (gtag.js) - Google Analytics