`
can_do
  • 浏览: 258105 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Jolokia相关

阅读更多
>>测试代码

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import org.jolokia.client.J4pClient;
import org.jolokia.client.request.J4pExecRequest;
import org.jolokia.client.request.J4pExecResponse;
import org.jolokia.client.request.J4pReadRequest;
import org.jolokia.client.request.J4pReadResponse;

public class TestClient {

public static void main(String[] args) throws Exception {
  J4pClient j4pClient = new J4pClient("http://cnd:8161/jolokia");

  // 执行execute操作==>通过jolokia获取MBean信息==>mBeanServersInfo
  if (false) {
   // 1.构造请求参数,指定MBean的对象名称和方法及参数
   String[] params = {};// 注意,如果是无参数的方法,则需要传入一个空的数组,而不能是null的数组。
   J4pExecRequest reqForExec = new J4pExecRequest(
     "jolokia:type=ServerHandler", "mBeanServersInfo()",
     (Object[]) params);

   // 2.提交请求
   J4pExecResponse respForExec = j4pClient.execute(reqForExec);

   // 3.处理响应结果
   System.out.println("=response is:=" + respForExec.getValue()
     + "=end=");

  }

  // 执行read操作,获取Broker属性
  if (false) {
   // 1.构造请求参数,指定MBean的名称
   J4pReadRequest req = new J4pReadRequest(
     "com.rf.emq:type=Broker,brokerName=broker-cnd");

   // 2.提交请求
   J4pReadResponse resp = j4pClient.execute(req);

   // 3.将获取的值转化为Map
   Map<String, Object> vals = resp.getValue();
   for (Iterator<String> iter = vals.keySet().iterator(); iter
     .hasNext();) {
    String key = iter.next();
    System.out.println("=" + key + " is:=" + vals.get(key)
      + "=end=");

   }
  }

  // 执行read操作,获取队列属性
  if (false) {
   // 1.构造请求参数,指定MBean的名称
   J4pReadRequest req = new J4pReadRequest(
     "com.rf.emq:type=Broker,brokerName=broker-cnd,destinationType=Queue,destinationName=can_do");

   // 2.提交请求
   J4pReadResponse resp = j4pClient.execute(req);

   // 3.将获取的值转化为Map
   Map<String, Object> vals = resp.getValue();
   for (Iterator<String> iter = vals.keySet().iterator(); iter
     .hasNext();) {
    String key = iter.next();
    System.out.println("=" + key + " is:=" + vals.get(key)
      + "=end=");

   }

  }

  // 执行read操作,获取JVM运行时属性
  if (false) {
   // 1.构造请求参数,指定MBean的名称
   J4pReadRequest req = new J4pReadRequest("java.lang:type=Runtime");

   // 2.提交请求
   J4pReadResponse resp = j4pClient.execute(req);

   // 3.将获取的值转化为Map
   Map<String, Object> vals = resp.getValue();
   for (Iterator<String> iter = vals.keySet().iterator(); iter
     .hasNext();) {
    String key = iter.next();
    System.out.println("=" + key + " is:=" + vals.get(key)
      + "=end=");

   }

  }

  // 执行read操作,获取OS属性
  if (true) {
   // 1.构造请求参数,指定MBean的名称
   J4pReadRequest req = new J4pReadRequest(
     "java.lang:type=OperatingSystem");

   // 2.提交请求
   J4pReadResponse resp = j4pClient.execute(req);

   // 3.将获取的值转化为Map
   Map<String, Object> vals = resp.getValue();
   for (Iterator<String> iter = vals.keySet().iterator(); iter
     .hasNext();) {
    String key = iter.next();
    System.out.println("=" + key + " is:=" + vals.get(key)
      + "=end=");

   }

  }

  // 执行read操作,获取线程属性
  if (false) {
   // 1.构造请求参数,指定MBean的名称
   J4pReadRequest req = new J4pReadRequest("java.lang:type=Threading");

   // 2.提交请求
   J4pReadResponse resp = j4pClient.execute(req);

   // 3.将获取的值转化为Map
   Map<String, Object> vals = resp.getValue();
   for (Iterator<String> iter = vals.keySet().iterator(); iter
     .hasNext();) {
    String key = iter.next();
    System.out.println("=" + key + " is:=" + vals.get(key)
      + "=end=");

   }

  }

  // 执行read操作,获取JVM内存属性
  if (false) {
   // 1.构造请求参数,指定MBean的名称
   J4pReadRequest req = new J4pReadRequest("java.lang:type=Memory");

   // 2.提交请求
   J4pReadResponse resp = j4pClient.execute(req);

   // 3.将获取的值转化为Map
   Map<String, Object> vals = resp.getValue();
   for (Iterator<String> iter = vals.keySet().iterator(); iter
     .hasNext();) {
    String key = iter.next();
    System.out.println("=" + key + " is:=" + vals.get(key)
      + "=end=");

   }

  }

  // 执行read操作,获取装载类的信息属性
  if (false) {
   // 1.构造请求参数,指定MBean的名称
   J4pReadRequest req = new J4pReadRequest(
     "java.lang:type=ClassLoading");

   // 2.提交请求
   J4pReadResponse resp = j4pClient.execute(req);

   // 3.将获取的值转化为Map
   Map<String, Object> vals = resp.getValue();
   for (Iterator<String> iter = vals.keySet().iterator(); iter
     .hasNext();) {
    String key = iter.next();
    System.out.println("=" + key + " is:=" + vals.get(key)
      + "=end=");

   }

  }

  // 执行execute操作==>添加队列==>addQueue
  if (false) {
   // 1.构造请求参数,指定MBean的对象名称和方法及参数
   String[] params = { "can_do" };
   J4pExecRequest reqForExec = new J4pExecRequest(
     "com.rf.emq:type=Broker,brokerName=broker-cnd", "addQueue",
     (Object[]) params);

   // 2.提交请求
   J4pExecResponse respForExec = j4pClient.execute(reqForExec);

   // 3.处理响应结果
   System.out.println("=response is:=" + respForExec.getValue());

  }

  // 执行execute操作==>删除队列==>removeQueue
  if (false) {
   // 1.构造请求参数,指定MBean的对象名称和方法及参数
   String[] params = { "can_do" };
   J4pExecRequest reqForExec = new J4pExecRequest(
     "com.rf.emq:type=Broker,brokerName=broker-cnd",
     "removeQueue", (Object[]) params);

   // 2.提交请求
   J4pExecResponse respForExec = j4pClient.execute(reqForExec);

   // 3.处理响应结果
   System.out.println("=response is:=" + respForExec.getValue());

  }

  // 执行execute操作==>发送消息==>sendTextMessage==>
  // 有多个同名方法时,通过jolokia调用问题,==>重载方法的话,需要通过signature来指定具体用哪个方法
  // sendTextMessageWithProperties is ok
  if (false) {
   // 1.构造请求参数,指定MBean的对象名称和方法及参数
   String[] params = { "can_do" };
   J4pExecRequest reqForExec = new J4pExecRequest(
     "com.rf.emq:type=Broker,brokerName=broker-cnd,destinationType=Queue,destinationName=can_do",
     "sendTextMessage(java.lang.String)", (Object[]) params);

   // 2.提交请求
   J4pExecResponse respForExec = j4pClient.execute(reqForExec);

   // 3.处理响应结果
   System.out.println("=response is:=" + respForExec.getValue());

  }

  // 执行execute操作==>发送消息==>sendTextMessage==>发送消息时指定消息的属性
  // 有多个同名方法时,通过jolokia调用问题,==>重载方法的话,需要通过signature来指定具体用哪个方法
  // sendTextMessageWithProperties is ok
  // 没法发送持久化消息,因为持久化消息的发送,是通过Producer的属性设置进去的,而此处Producer是不可见的。
  // 通过jolokia可以对系统进行监控,而不要试图去替代jms所能做到的方面
  if (false) {
   // 1.构造请求参数,指定MBean的对象名称和方法及参数
   Map<String, String> msgHeader = new HashMap<String, String>();
   //此处消息属性怎么设置进Map中?
   msgHeader.put("JMSDeliveryMode", "true");//JMSDeliveryMode||priority
   Object[] params = { msgHeader,"can_do" };
   J4pExecRequest reqForExec = new J4pExecRequest(
     "com.rf.emq:type=Broker,brokerName=broker-cnd,destinationType=Queue,destinationName=can_do",
     "sendTextMessage(java.util.Map,java.lang.String)", params);

   // 2.提交请求
   J4pExecResponse respForExec = j4pClient.execute(reqForExec);

   // 3.处理响应结果
   System.out.println("=response is:=" + respForExec.getValue());

  }

  // 执行execute操作==>浏览队列==>browse
  if (false) {
   // 1.构造请求参数,指定MBean的对象名称和方法及参数
   String[] params = {};// 注意,如果是无参数的方法,则需要传入一个空的数组,而不能是null的数组。
   J4pExecRequest reqForExec = new J4pExecRequest(
     "com.rf.emq:type=Broker,brokerName=broker-cnd,destinationType=Queue,destinationName=can_do",
     "browse()", (Object[]) params);

   // 2.提交请求
   J4pExecResponse respForExec = j4pClient.execute(reqForExec);

   // 3.处理响应结果
   System.out.println("=response is:=" + respForExec.getValue());

  }

  // 执行execute操作==>清空队列消息==>purge
  if (false) {
   // 1.构造请求参数,指定MBean的对象名称和方法及参数
   String[] params = {};// 注意,如果是无参数的方法,则需要传入一个空的数组,而不能是null的数组。
   J4pExecRequest reqForExec = new J4pExecRequest(
     "com.rf.emq:type=Broker,brokerName=broker-cnd,destinationType=Queue,destinationName=can_do",
     "purge()", (Object[]) params);

   // 2.提交请求
   J4pExecResponse respForExec = j4pClient.execute(reqForExec);

   // 3.处理响应结果
   System.out.println("=response is:=" + respForExec.getValue());

  }

}

}

////////////////////////////////////////////////////////////////
分享到:
评论

相关推荐

    jolokia-extra-war-1.2.2.zip

    标题 "jolokia-extra-war-1.2.2.zip" 提示我们这可能是一个与Jolokia相关的开源项目,它是一个用于远程Java管理的代理,允许通过HTTP/JSON进行JMX(Java Management Extensions)操作。"war"后缀表明这是一个Web应用...

    jolokia-jsr160-1.2.2.zip

    "pedal-tx"可能是指Pedal框架中的事务管理部分,因为"tx"通常与数据库事务(transaction)相关。在Java应用中,事务管理是确保数据一致性的重要机制,特别是在并发操作和可能出现错误的环境中。 从压缩包子文件的...

    base64utils jar 包下载

    然后,通过导入相关的类和方法,你就可以在代码中使用Base64Utils的功能了。 总的来说,`base64utils.jar`是Java开发中的一个实用工具,它简化了Base64编码和解码任务,提高了代码的可读性和效率。无论你是初学者...

    hawtio-online:OpenShift上的Hawtio控制台

    您可能需要阅读如何使用CLI入门,以获取有关oc客户端工具的更多信息。 根据以下特征,可以选择不同的OpenShift模板: 模板 描述 Deployment-cluster.yml 使用需要创建cluster-admin角色的OAuth客户端。 Hawtio ...

    marge-gateway:通用网关,其中加入了鉴权与签名和IP策略以及限流等控制,目前仅开源了大部分的代码,下载实际应用时还需要调整pom文件的相关依赖和部分代码调整!

    1项目结构 ├─marge-cloud │ │ │ ├─marge-auth----------------------...│ | ├─marge-monitor-admin------------------------spring boot admin监控(env,metrics,dump,jolokia,info,configprops,trace,logfil

    反编译android工具

    最后,`jdgui`是Java反编译器的一种图形界面版本,由Jolokia团队提供。`jd-gui.exe`是Windows平台上的可执行文件,它允许用户打开.jar或.dex文件,查看和搜索Java源代码,同时提供了一个直观的界面来浏览和分析反...

    hawtio-dozer-schemagen-1.2-M10.zip

    1. **hawtio**: hawtio 是一个基于AngularJS的Web应用,提供了丰富的功能,如JMX监控、操作,以及与各种Java框架和工具的集成,如Spring、Jolokia、Docker等。它允许开发者通过浏览器查看和操作Java应用的内部状态。...

    Tomcat中间件监控配置&amp;指标.doc

    这份名为“Tomcat中间件监控配置&指标.doc”的文档旨在提供有关如何有效地监控Tomcat以及应关注的关键指标的指导。 监控Tomcat主要包括以下几个方面: 1. **性能指标**: - **CPU利用率**:监视Tomcat进程的CPU...

    一文搞懂并学会使用SpringBoot的Actuator运行状态监控组件的详细教程

    5. `jolokia`: 如果安装了Jolokia,可以提供JMX操作的REST接口。 6. `loggers`: 查看和调整应用的日志级别。 通过`http://localhost:9091/sys/health`可以访问健康检查端点,获取应用的健康状态。而`...

    SpringBoot_Debug

    在处理数据库相关的调试时,我们可以利用Spring Data JPA的`@Query`注解配合HQL语句进行调试,或者利用`spring.jpa.show-sql=true`显示SQL语句。对于复杂的事务处理,理解Spring的事务管理机制,如 propagation 和 ...

    springboot参考指南

    1. 介紹 2. I. Spring Boot文档 i. 1....ii. 2....iii....iv....v....vi....vii....3. II....i....ii....i....iii....i....i....ii....ii....i....ii....iii....iv....v....vi....iii....iv....v....vi....vii....i.... 自定义'白标'(whitelabel,可以了解下相关理念)错误页面 x. 71...

Global site tag (gtag.js) - Google Analytics