2021년 10월 17일 일요일

[자바네크워크]JMX,HelloWorld,커넥터이용

 [자바네크워크]JMX,HelloWorld,커넥터이용



1. HelloMBean.java

public interface HelloMBean {
   public void setMessage(String message);
   public void sayHello();
}


2. Hell.java

public class Hello implements HelloMBean {
   private String message = null;
 
   public Hello() {
      message = "Hello, world";
   }
 
   public Hello(String message) {
      this.message = message;
   }
 
   public void setMessage(String message) {
      this.message = message;
   }
 
   public void sayHello() {
      System.out.println(message);
   }
}


3. HelloAgent.java

import java.rmi.registry.LocateRegistry;

import javax.management.MBeanServer;
import javax.management.MBeanServerFactory;
import javax.management.ObjectName;
import javax.management.remote.JMXConnectorServer;
import javax.management.remote.JMXConnectorServerFactory;
import javax.management.remote.JMXServiceURL;
 
public class HelloAgent {
   private MBeanServer mbs = null;
 
   public HelloAgent() {
   
      // Get  MBeanServer
      mbs = MBeanServerFactory.createMBeanServer("JmxAgent"); 
 
      // Unique identification of MBeans
      Hello helloBean = new Hello();
      ObjectName helloName = null; 
      JMXServiceURL serviceUrl = null;      
 
      try {
       LocateRegistry.createRegistry(7777); 
          serviceUrl = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:7777/server"); 
 
          //HelloWorld MBean Name 정의 
          helloName = new ObjectName("FOO:name=HELLO"); 
          
          //Client에서 접속하도록 커넥터 생성
          JMXConnectorServer connector = JMXConnectorServerFactory 
                          .newJMXConnectorServer(serviceUrl, null, mbs); 
          
          //helloName으로 helloBean을 등록 
          mbs.registerMBean(helloBean, helloName);
          
          connector.start(); 
          
      } catch(Exception e) {
         e.printStackTrace();
      }
   }
 
   // Utility method: so that the application continues to run
   private static void waitForEnterPressed() {
      try {
         System.out.println("Press  to continue...");
         System.in.read();
      } catch (Exception e) {
         e.printStackTrace();
      }
    }
 
   public static void main(String argv[]) {
      new HelloAgent();
      System.out.println("SimpleAgent is running...");
      HelloAgent.waitForEnterPressed();
   }
}


4. HelloClient.java

import java.util.Arrays;

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

public class HelloClient {
public static void main(String[] args) {
foo();
}

public static void foo() {

try {
    JMXServiceURL url = new JMXServiceURL(
        "service:jmx:rmi:///jndi/rmi://localhost:7777/server");
    JMXConnector jmxc = JMXConnectorFactory.connect(url, null);

    // Get an MBeanServerConnection
    MBeanServerConnection mbsc = jmxc.getMBeanServerConnection();

    // Get domains from MBeanServer
    String domains[] = mbsc.getDomains();
    Arrays.sort(domains);
    for (String domain : domains) {
       System.out.println(domain);
    }     
    
    //JMXServer에서 등록한 ObjectName 생성
    ObjectName mbeanName = new ObjectName("FOO:name=HELLO");

    // Create a dedicated proxy for the MBean instead of
    // going directly through the MBean server connection
    HelloMBean hello = JMX.newMBeanProxy(mbsc, mbeanName,
        HelloMBean.class, true);

// start job
hello.setMessage("방가방가~~");
hello.sayHello();

} catch (RuntimeErrorException e) {
System.out.println("Error --->" + e);
e.printStackTrace();
} catch (Exception e) {
System.out.println(e);
e.printStackTrace();
}
}
}



5. 실행

[서버]
SimpleAgent is running...
Press  to continue...
방가방가~~

[클라이언트]
FOO
JMImplementation

댓글 없음:

댓글 쓰기

(C#교육동영상)C# ADO.NET 실습 ODP.NET/ODAC 설치 오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원

  (C#교육동영상)C# ADO.NET 실습  ODP.NET/ODAC 설치  오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원 https://www.youtube.com/watch?v=qIPU85yAlzc&list=PLxU-i...