gpt4 book ai didi

java - 如何将 JMX 与 Spring 集成?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:17:52 24 4
gpt4 key购买 nike

我有关于 JMX 的简单类(class):接口(interface) HelloMBean:

public interface HelloMBean {
public void sayHello();
public String getName();
public void setName(String name);
public String conCat(String s1, String s2);
}

Hello 类从 HelloMBean 接口(interface)实现:

import javax.management.AttributeChangeNotification;
import javax.management.Notification;
import javax.management.NotificationBroadcasterSupport;

public class Hello extends NotificationBroadcasterSupport implements HelloMBean {

private String m_name;

@Override
public void sayHello() {

System.out.print("I say hello");
}

@Override
public String getName() {

return null;
}

@Override
public void setName(String name) {

Notification n = new AttributeChangeNotification(
this, 0,
System.currentTimeMillis(),
"My name is changed",
"setName", "String", m_name, name);
sendNotification(n);
m_name = name;
}

@Override
public String conCat(String s1, String s2) {

return null;
}

}

然后,我创建一个类客户端:

import javax.management.JMX;
import javax.management.MBeanServerConnection;
import javax.management.ObjectName;
import javax.management.remote.JMXConnector;
import javax.management.remote.JMXConnectorFactory;
import javax.management.remote.JMXServiceURL;

public class HelloClient {
public static void main(String[] args) throws Exception {
JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:7271/Hello");
JMXConnector cn = JMXConnectorFactory.connect(url);
MBeanServerConnection msc = cn.getMBeanServerConnection();
ObjectName helloObjName = new ObjectName("com:service=Hello1");
HelloMBean hello = JMX.newMBeanProxy(msc, helloObjName, HelloMBean.class);
hello.sayHello();
System.out.println(hello.conCat("I am", " a hello mbean"));
Thread.sleep(Long.MAX_VALUE);
}
}

和类服务器:

import java.lang.management.ManagementFactory;
import javax.management.MBeanServer;
import javax.management.ObjectName;
import javax.management.remote.JMXConnectorServer;
import javax.management.remote.JMXConnectorServerFactory;
import javax.management.remote.JMXServiceURL;


public class HelloMain {

public static void main(String[] args) throws Exception {
MBeanServer ms = ManagementFactory.getPlatformMBeanServer();
ObjectName helloMBName = new ObjectName("com:service=Hello1");
Hello hello = new Hello();
ms.registerMBean(hello, helloMBName);
JMXServiceURL url = new JMXServiceURL(
"service:jmx:rmi:///jndi/rmi://localhost:7271/Hello");
JMXConnectorServer cs = JMXConnectorServerFactory.newJMXConnectorServer(url, null, ms);
cs.start();//
Thread.sleep(Long.MAX_VALUE);
}
}

在使用 rmiregistry 7271 之后。我使用 JMX 创建了简单的客户端和服务器。但我无法将 JMX 与 Spring 集成(JMX 由 Spring 处理)。我尝试过但没有成功。有解决办法吗??

最佳答案

只让 Spring manage JMX for you 容易得多.

关于java - 如何将 JMX 与 Spring 集成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17010651/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com