JMX开发:从基础代理到标准MBean的全面指南
立即解锁
发布时间: 2025-08-18 02:06:04 阅读量: 2 订阅数: 5 

### JMX开发:从基础代理到标准MBean的全面指南
在JMX(Java Management Extensions)开发中,构建一个完整的管理系统需要多个组件的协同工作。下面将详细介绍从创建代理类到使用标准MBean的整个过程。
#### 编写JMXBookAgent类
`JMXBookAgent`类是整个代理的核心,其中`startRMIConnector`方法用于启动RMI连接器。以下是该方法的代码:
```java
protected void startRMIConnector()
{
RmiConnectorServer connector = new RmiConnectorServer();
ObjectName connectorName = null;
try
{
connector.setPort( 2099 );
connectorName = new ObjectName(
"JMXBookAgent:name=RMIConnector");
server.registerMBean( connector, connectorName );
connector.start();
}
catch(Exception e)
{
ExceptionUtil.printException( e );
}
}
```
该方法的实现与`startHTMLAdapter`方法类似。首先创建`RmiConnectorServer`实例,然后使用`ObjectName`将其注册到`MBeanServer`上,最后启动连接器以接收客户端连接。
`main`方法用于从命令行启动代理:
```java
public static void main(String[] args)
{
System.out.println("\n~~~~~~~~~~~~~~~~~~~~~~~" +
"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
System.out.println("\n>>> START of JMXBook Agent");
System.out.println("\n>>> CREATE the agent...");
JMXBookAgent agent = new JMXBookAgent();
System.out.println("\nAgent is Ready for Service...\n");
}
```
这个方法简单地创建了一个`JMXBookAgent`实例,并向用户输出相关信息。
#### 编写RMIClientFactory类
`RMIClientFactory`类用于方便地获取一个RMI客户端来连接到JMX代理。以下是该类的代码:
```java
package jmxbook.ch3;
import javax.management.*;
import com.sun.jdmk.comm.*;
public class RMIClientFactory
{
public static RmiConnectorClient getClient()
{
RmiConnectorClient client = new RmiConnectorClient();
RmiConnectorAddress address = new RmiConnectorAddress();
address.setPort( 2099 );
System.out.println("\t\tTYPE\t= " +
address.getConnectorType ());
System.out.println("\t\tPORT\t= " + address.getPort());
System.out.println("\t\tHOST\t= " + address.getHost());
System.out.println("\t\tSERVER\t= " + address.getName());
try
{
client.connect( address );
}
catch( Exception e )
{
ExceptionUtil.printException( e );
}
return client;
}
}
```
`getClient`方法创建一个`RmiConnectorClient`对象,并使用`RmiConnectorAddress`对象进行初始化,配置地址对象以定位端口为2099的RMI服务器。
#### 编写ExceptionUtil类
`ExceptionUtil`类用于打印`MBeanException`异常类的整个异常层次结构。以下是该类的代码:
```java
package jmxbook.ch3;
import javax.management.*;
public class ExceptionUtil
{
public static void printException( Exception e )
{
StringBuffer exceptionName = new StringBuffer();
Exception exc = null;
System.out.println("-------[ Exception ]-------");
e.printStackTrace();
if (e instanceof MBeanException)
{
boolean hasEmbeddedExceptions = true;
Exception embeddedExc = e;
while (hasEmbeddedExceptions)
{
embeddedExc = (( MBeanException )
```
0
0
复制全文
相关推荐










