2013년 10월 18일 금요일

JMX 와 RMI를 이용한 원격지 자원관리 (1) JMX패키지..

StartTomcatBean.java

package jmx;


public interface StartTomcatMBean{

    public abstract int tomcatStart();

    public abstract int tomcatStop();
}


======================================================================

StartTomcat.java


package jmx;
import java.io.*;

public class StartTomcat
    implements StartTomcatMBean
{

    public StartTomcat()
    {
    }

    public int tomcatStart()
    {
        int code = 0;
        try
        {
            Runtime r = Runtime.getRuntime();
            Process pro = r.exec("E:\\apache-tomcat-5.5.27\\bin\\startup.bat");
            BufferedReader stdInput = new BufferedReader(new InputStreamReader(pro.getInputStream()));
            String s = null;
            System.out.println("shutdown Tomcat....");
            while((s = stdInput.readLine()) != null)
                System.out.println(s);
            code = pro.waitFor();
        }
        catch(Exception e)
        {
            System.out.println("tmocatStart_error...");
            e.printStackTrace();
        }
        return code;
    }

    public int tomcatStop()
    {
        int code = 0;
        try
        {
            Runtime r = Runtime.getRuntime();
            Process pro = r.exec("E:\\apache-tomcat-5.5.27\\bin\\shutdown.bat");
            BufferedReader stdInput = new BufferedReader(new InputStreamReader(pro.getInputStream()));
            for(String s = null; (s = stdInput.readLine()) != null;)
                System.out.println(s);

            code = pro.waitFor();
        }
        catch(Exception exception) { }
        return code;
    }
}

======================================================================

jmxAgent.java



package jmx;

import java.io.PrintStream;
import java.rmi.registry.LocateRegistry;
import java.util.HashMap;
import java.util.Map;
import javax.management.*;
import javax.management.remote.*;

// Referenced classes of package jmx:
//            StartTomcat

public class jmxAgent
{

    public jmxAgent()
    {
        server = null;
        server = MBeanServerFactory.createMBeanServer("JmxAgent");
        intiAgent();
    }

    public void intiAgent()
    {
        JMXServiceURL serviceUrl = null;
        ObjectName connectorName = null;
        ObjectName WeblogicControlMBeanName = null;
        try
        {
            LocateRegistry.createRegistry(7777);
            serviceUrl = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:7777/server");
            Map environment = new HashMap();
            environment.put("jmx.remote.jndi.rebind", "true");
            connectorName = new ObjectName("JmxAgent:name=RmiConnector");
            WeblogicControlMBeanName = new ObjectName("JmxAgent:name=tomcatControl");
            JMXConnectorServer connector = JMXConnectorServerFactory.newJMXConnectorServer(serviceUrl, environment, server);
            server.registerMBean(new StartTomcat(), WeblogicControlMBeanName);
            server.registerMBean(connector, connectorName);
            connector.start();
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }

    public static void main(String args[])
    {
        new jmxAgent();
        System.out.println("jmxAgent Start.........");
    }

    private MBeanServer server;
}

======================================================================

Client.java

package jmx;

import java.io.IOException;
import java.io.PrintStream;
import java.net.MalformedURLException;
import javax.management.*;
import javax.management.remote.*;

// Referenced classes of package jmx:
//            StartTomcatMBean

public class Client
{

    public Client()
    {
    }

    public void foo()
        throws MalformedObjectNameException, NullPointerException, IOException
    {
        ObjectName resourceControlMBeanName = null;
        java.util.Map creationEnvirnoment = null;
        java.util.Map connectionEnvironment = null;
        try
        {
            resourceControlMBeanName = new ObjectName("JmxAgent:name=tomcatControl");
            JMXServiceURL serviceURL = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:7777/server");
            JMXConnector cntor = JMXConnectorFactory.newJMXConnector(serviceURL, creationEnvirnoment);
            cntor.connect(connectionEnvironment);
            javax.management.MBeanServerConnection mbsc = cntor.getMBeanServerConnection();
            StartTomcatMBean resource = (StartTomcatMBean)MBeanServerInvocationHandler.newProxyInstance(mbsc, resourceControlMBeanName, StartTomcatMBean.class, false);
            resource.tomcatStart();
            cntor.close();
        }
        catch(RuntimeErrorException e)
        {
            System.out.println((new StringBuilder("Error 1--->")).append(e).toString());
            e.printStackTrace();
        }
        catch(MalformedURLException e)
        {
            System.out.println((new StringBuilder("Error 2--->")).append(e).toString());
            e.printStackTrace();
        }
    }
}




댓글 없음:

댓글 쓰기