开发过程中,有时会遇到需要连接访问某些服务的开放的JMX方法,如部署C3P0连接池后,C3P0开放了一些MBean接口,可以通过这些接口获取数据库连接的一些信息或进行一些重置操作等。
通过以下代码可以方便的连接访问JMX服务中的MBean方法:
import javax.management.MBeanServerConnection;
import javax.management.ObjectName;
import javax.management.remote.JMXConnector;
import javax.management.remote.JMXServiceURL;
import javax.management.remote.rmi.RMIConnector;
public class MBeanClientTest {
// 创建到Server端的连接
private static JMXServiceURL jmxUrl = null;
private static MBeanServerConnection mbsConn = null;
private static ObjectName objname = null;
// 注册时的objectName
private static String objectName = "";
private static String monitorPath = "127.0.0.1";
private static String dbUser = "root";
private static String dbPass = "root";
private static String port = "8788";
private static void init() {
try {
jmxUrl = new JMXServiceURL(
"service:jmx:rmi://"+monitorPath+"/jndi/rmi://"+monitorPath+":"+port+"/jmxrmi");
// 如果Server端启动没有带-Dcom.sun.management.jmxremote.authenticate=false
// 即需要认证时,需要传入认证参数
// 该用户名密码在jmxremote.password文件中配置,路径是jre/lib/managerment目录下
String user = "controlRole";
String pass = "R&D";
Map<String, String[]> env = new HashMap<String, String[]>();
String[] credentials = new String[] {user,pass};
env.put(JMXConnector.CREDENTIALS, credentials);
// 启动rmi连接,也可以调用JMXConnectorFactory.connect(jmxUrl, map)获取连接
RMIConnector client = new RMIConnector(jmxUrl, null);
client.connect();
// 获得MBean服务连接
mbsConn = client.getMBeanServerConnection();
// 该ObjectName就是Server端注册的ObjectName
objname = new ObjectName(objectName);
} catch (Exception e) {
}
}
public static void main(String[] args) {
rmiClient();
}
private static void rmiClient() {
try {
Object getNumBusyConnections = mbsConn.invoke(objname, "getNumBusyConnections", new String[]{dbUser, dbPass}, new String[]{String.class.getName(), String.class.getName()});// 调用服务端的方法
Object str = mbsConn.invoke(objname, "sampleLastCheckinFailureStackTraceDefaultUser", null, null);// 调用服务端的方法
} catch (Exception e) {
e.printStackTrace();
}
}
}
分享到:
相关推荐
通过分析`jmxdemo`项目的源代码,你可以学习如何创建自定义MBeans,如何将它们注册到MBean服务器,以及如何使用JMX客户端进行交互。这将帮助你理解和掌握JMX技术,从而更好地在实际项目中实现管理和监控功能。 此外...
**JMX客户端** 的角色在jmxterm中体现得淋漓尽致,它连接到服务器上的JMX代理(MBean服务器),并使用JMX协议来获取或修改MBean的属性、调用MBean的操作以及订阅和处理通知。jmxterm作为一个开源工具,它的可定制性...
**文件名称列表:** "JMXHelloWorld"很可能是这个压缩包中的主程序或者项目文件夹,包含了实现JMX HelloWorld示例的所有文件,如Java源代码文件、配置文件等。 **详细知识点:** 1. **JMX简介**:JMX是Java平台的...
jmxdemo的代码示例将帮助你理解以下关键点: 1. 如何创建和注册MBeans。 2. 如何配置MBean服务器监听端口。 3. 如何设置JMX安全性和权限。 4. 客户端如何连接到服务端,获取并操作MBeans。 5. 如何在VisualVM中配置...
这些例子可能包括MBean的实现、注册、查询以及使用JMX客户端进行操作的代码片段。 总的来说,JMX是一个强大的工具,它让开发者能够轻松地对Java应用进行监控和管理,通过暴露管理接口,使得运维人员可以在运行时...
《JMX技术介绍》一书显然是为了深入探讨这一技术而编写的,配套源代码则提供了实践示例,帮助读者更好地理解和应用JMX。 1. JMX架构: JMX架构由管理代理(MBeans)、服务提供者接口(MBean Server)和管理客户端...
2. **示例脚本**:使用JMX客户端工具(如jconsole或jvisualvm)连接到Tomcat或JBoss服务器的示例。 3. **MBean定义**:可能包含自定义MBean的Java源代码,这些MBean可以扩展服务器的功能或提供特定的监控指标。 4. *...
// 现在可以在JConsole或其他JMX客户端中找到并管理这个MBean } ``` 在这个例子中,我们创建了一个名为`MyManagedBean`的MBean,它有一个计数器属性。然后,我们将其注册到MBean Server,并可以通过JConsole等工具...
以下是一个更新后的代码示例: ```java import java.lang.management.ManagementFactory; import javax.management.remote.*; import java.io.IOException; import java.nio.file.Paths; import java.util.HashMap;...
3. **JMX客户端工具**:如jconsole、jvisualvm等,这些都是Java自带的JMX客户端,用于可视化地监控和管理Java应用。 4. **JMX远程访问**:讲解如何配置JMX以允许远程监控和管理,包括RMI和JMX Remoting。 5. **实战...
5. 文档和示例:可能还包括了关于如何使用这些工具和库的说明,以及演示如何配置和使用`HtmlAdaptorServer`的示例代码。 在实际应用中,`jmx-tools`中的工具可以帮助开发者监控和诊断应用程序的性能问题,进行故障...
4. **客户端代码**:可能包含用于连接到JMX服务器并操作MBeans的代码,这可以是另一个Java程序或使用图形工具如JConsole。 5. **测试脚本**:如果`jmxtest`包含了测试用例,那么它可能包含了JUnit或其他测试框架的...
它包含API库、示例代码和必要的文档,帮助开发者理解和使用JMX 1.2.1的功能。 2. **jmx_remote-1_0_1_03-ri.zip**:此文件是JMX Remote API的一个实现,版本为1.0.1_03。JMX Remote API扩展了基本的JMX,使得管理...
例如,如果一个服务器集群中的某个节点出现问题,管理员可以通过部署在另一台机器上的JMX客户端来访问故障节点的MBeans,进而诊断并解决问题。 ### 2.4 其他传输协议 虽然RMI是JMX默认的远程通信协议,但JMX也支持...
这个压缩包"JMX Html适配器jar"很可能包含了实现HTML适配器功能的Java类库,可能包括了服务器端的适配器组件以及相关的配置示例。使用时,你需要将其解压并添加到你的项目类路径中,然后按照上述步骤进行配置和使用...
`JmxEgs.rar`可能是一个压缩包,包含了JMX的示例代码和案例研究,这对于初学者来说是非常宝贵的资源。你可以通过解压这个文件,阅读代码并运行例子来更好地理解JMX的工作原理。例如,你可能会看到如何创建和注册...
- **示例代码**:具体的代码实现可能包括定义一个简单的MBean类,实现一些基础的方法,并通过MBean服务器进行注册。 - **实践意义**:虽然这是一个简单的示例,但它为理解更复杂的JMX应用场景奠定了基础。 #### ...
`metrics-jmx`项目的源代码提供了实际示例,展示了如何在服务端创建和更新指标,以及如何通过JMX客户端工具(如JConsole或VisualVM)查看和操作这些指标。这对于开发者调试、优化和监控生产环境的应用非常有价值。 ...
在"JMX.rar_jmx_osgi"这个压缩包中,我们很可能找到了与JMX相关的开发资源,包括五个常用的JMX库的jar包和一些示例代码。 1. **JMX基础**:JMX的核心概念包括MBeans(Managed Beans)、Management Agents(MBeans ...
这个实例可能包括创建MBean的Java类、配置RMI的脚本或属性文件,以及演示如何从客户端进行连接和操作的测试代码。 总的来说,JMX RMI MBean提供了强大的远程管理和监控能力,使得开发者可以轻松地对Java应用进行...