Wie integrieren JMX mit Frühling?

Habe ich einfache Klasse über JMX:
Schnittstelle HelloMBean:

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

Klasse Hallo, implementiert die von der Schnittstelle HelloMBean:

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;
    }

}

Dann erstelle ich eine Klasse client:

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);
    }
}

Und class Server:

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); 
   }
}

Affter mit rmiregistry 7271. Ich habe das erstellen von einfachen client und server mittels JMX. Aber ich kann nicht Integration mit Spring JMX (JMX behandelt mit Feder). Ich habe versucht, aber erfolglos. Keine Lösung für Sie??

InformationsquelleAutor Google New | 2013-06-09

Schreibe einen Kommentar