JMX之通过RMI方式连接JMX Server

除了可以在HTML中管理MBean之外,我们还可以通过程序来连接JMX管理MBean。这就需要用到了JMX的Connectior,JMX提供了两种Connector:RMI Connector和JMXMP Connector(JMX message protocol Connector)。下面介绍RMI Connector。

首先还是要创建MBean接口和实现

package com.jmx.client;

public interface HelloMBean {
	public String getName();
	
	public void setName(String name);
	
	public void helloWorld();
	
	public void helloWorld(String name);
	
	public String getTelephone();
	
}

package com.jmx.client;

public interface HelloMBean {
	public String getName();
	
	public void setName(String name);
	
	public void helloWorld();
	
	public void helloWorld(String name);
	
	public String getTelephone();
	
}

创建JMXServer和JMXConnectorServer(通过RMI注册URL提供客户端连接)

package com.jmx.client;

import java.io.IOException;
import java.lang.management.ManagementFactory;
import java.net.MalformedURLException;
import java.rmi.registry.LocateRegistry;

import javax.management.InstanceAlreadyExistsException;
import javax.management.MBeanRegistrationException;
import javax.management.MBeanSer
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
可以通过JMX获取Redis客户端连接池信息,具体步骤如下: 1.启动Redis服务,并在redis.conf文件中添加如下配置: ``` # 开启JMX监控 jmx-enabled yes # JMX监控端口 jmx-port 9999 # JMX监控认证密码 requirepass yourpassword ``` 2.在Java代码中连接Redis,并通过JMX获取连接池信息,示例代码如下: ```java import javax.management.MBeanServerConnection; import javax.management.ObjectName; import javax.management.remote.JMXConnector; import javax.management.remote.JMXConnectorFactory; import javax.management.remote.JMXServiceURL; import java.util.HashMap; import java.util.Map; public class RedisJmxClient { public static void main(String[] args) throws Exception { // 连接JMX String jmxUrl = "service:jmx:rmi:///jndi/rmi://localhost:9999/jmxrmi"; Map<String, Object> env = new HashMap<>(); env.put(JMXConnector.CREDENTIALS, new String[]{"admin", "yourpassword"}); JMXConnector connector = JMXConnectorFactory.connect(new JMXServiceURL(jmxUrl), env); MBeanServerConnection mbsc = connector.getMBeanServerConnection(); // 获取连接池信息 ObjectName poolName = new ObjectName("redis.clients.jedis.JedisPool:name=pool"); int active = (int) mbsc.getAttribute(poolName, "NumActive"); int idle = (int) mbsc.getAttribute(poolName, "NumIdle"); int waiters = (int) mbsc.getAttribute(poolName, "NumWaiters"); System.out.println("Active connections: " + active); System.out.println("Idle connections: " + idle); System.out.println("Waiting threads: " + waiters); // 关闭JMX连接 connector.close(); } } ``` 该代码通过JMX连接到Redis服务,获取连接池的活跃连接数、空闲连接数和等待线程数等信息,并输出到控制台。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值