>>测试代码
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相关的开源项目,它是一个用于远程Java管理的代理,允许通过HTTP/JSON进行JMX(Java Management Extensions)操作。"war"后缀表明这是一个Web应用...
"pedal-tx"可能是指Pedal框架中的事务管理部分,因为"tx"通常与数据库事务(transaction)相关。在Java应用中,事务管理是确保数据一致性的重要机制,特别是在并发操作和可能出现错误的环境中。 从压缩包子文件的...
然后,通过导入相关的类和方法,你就可以在代码中使用Base64Utils的功能了。 总的来说,`base64utils.jar`是Java开发中的一个实用工具,它简化了Base64编码和解码任务,提高了代码的可读性和效率。无论你是初学者...
您可能需要阅读如何使用CLI入门,以获取有关oc客户端工具的更多信息。 根据以下特征,可以选择不同的OpenShift模板: 模板 描述 Deployment-cluster.yml 使用需要创建cluster-admin角色的OAuth客户端。 Hawtio ...
1项目结构 ├─marge-cloud │ │ │ ├─marge-auth----------------------...│ | ├─marge-monitor-admin------------------------spring boot admin监控(env,metrics,dump,jolokia,info,configprops,trace,logfil
最后,`jdgui`是Java反编译器的一种图形界面版本,由Jolokia团队提供。`jd-gui.exe`是Windows平台上的可执行文件,它允许用户打开.jar或.dex文件,查看和搜索Java源代码,同时提供了一个直观的界面来浏览和分析反...
1. **hawtio**: hawtio 是一个基于AngularJS的Web应用,提供了丰富的功能,如JMX监控、操作,以及与各种Java框架和工具的集成,如Spring、Jolokia、Docker等。它允许开发者通过浏览器查看和操作Java应用的内部状态。...
这份名为“Tomcat中间件监控配置&指标.doc”的文档旨在提供有关如何有效地监控Tomcat以及应关注的关键指标的指导。 监控Tomcat主要包括以下几个方面: 1. **性能指标**: - **CPU利用率**:监视Tomcat进程的CPU...
5. `jolokia`: 如果安装了Jolokia,可以提供JMX操作的REST接口。 6. `loggers`: 查看和调整应用的日志级别。 通过`http://localhost:9091/sys/health`可以访问健康检查端点,获取应用的健康状态。而`...
在处理数据库相关的调试时,我们可以利用Spring Data JPA的`@Query`注解配合HQL语句进行调试,或者利用`spring.jpa.show-sql=true`显示SQL语句。对于复杂的事务处理,理解Spring的事务管理机制,如 propagation 和 ...
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...