2013-06-09 8 views
3

У меня есть простой класс о JMX: Интерфейс HelloMBean:Как интегрировать JMX с Spring?

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

Класс Hello реализует от интерфейса 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; 
    } 

} 

Затем я создаю класс клиента:

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

Affter using rmiregistry 7271. Я создал простой клиент и сервер с помощью JMX. Но я не могу интегрировать JMX с Spring (JMX обрабатывается с помощью Spring). Я стараюсь, но безуспешно. У вас есть решение?

ответ

3

Это намного проще, просто позвольте Spring manage JMX for you.

+0

вы можете отправить файл beans.xml. У меня проблемы с этим. – HaiTrieu

+0

Ваш вопрос неточен; это совсем не ясно, о чем вы просите. Вам нужно точно объяснить, что вы пытаетесь сделать. –

+0

@GaryRussell Я только что прочитал ваш ответ. Я следую вашей ссылке. Возможно, вы сможете помочь с этой проблемой: http://stackoverflow.com/q/22789428/1021970 – ruhungry

Смежные вопросы