서버쪽에있는 어플리케이션을 실행 시키는 예제(예:WebLogic 서버)
===========================================================
========================JmxAgent.java========================
===========================================================
package agent;
import mbean.*;
import java.rmi.registry.LocateRegistry;
import java.util.HashMap;
import java.util.Map;
import java.lang.management.*;
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;
import javax.management.remote.rmi.RMIConnectorServer;
public class JmxAgent {
private MBeanServer server = null;
public JmxAgent() {
server = MBeanServerFactory.createMBeanServer("JmxAgent");
startAgent();
}
private void startAgent() {
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(RMIConnectorServer.JNDI_REBIND_ATTRIBUTE,"true");
connectorName = new ObjectName("JmxAgent:name=RmiConnector");
//Process 관리를 위한 MBean Name 정의
WeblogicControlMBeanName = new ObjectName("JmxAgent:name=weblogicControl");
JMXConnectorServer connector = JMXConnectorServerFactory
.newJMXConnectorServer(serviceUrl, environment, server);
//Agent에 MBean 등록
server.registerMBean(new StartWeblogic(), WeblogicControlMBeanName);
server.registerMBean(connector, connectorName);
connector.start();
} catch (Exception e) {
}
}
public static void main(String[] args) {
new JmxAgent();
System.out.println("=================================================");
System.out.println("= =");
System.out.println("= =");
System.out.println("= JMX AGENT START!!! =");
System.out.println("= =");
System.out.println("= =");
System.out.println("= =");
System.out.println("= =");
System.out.println("= =");
System.out.println("= =");
System.out.println("= =");
System.out.println("=================================================");
System.out.println("= Agent is Ready for Service... =");
System.out.println("=================================================");
}
}
===========================================================
========================StartWeblogic.java====================
===========================================================
package mbean;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.InputStreamReader;
public class StartWeblogic implements mbean.StartWeblogicMBean {
public void startWeblogic() {
try {
Runtime r = Runtime.getRuntime();
//Process p = r.exec("C:\\bea\\user_projects\" +
// "domains\\mydomain\\setEnv.cmd");
Process p = r.exec("c:\\run.bat");
BufferedReader stdInput = new BufferedReader(
new InputStreamReader(p.getInputStream()));
String s = null;
while ((s = stdInput.readLine()) != null) {
System.out.println(s);
}
p.wait();
} catch (Exception e) {
e.printStackTrace();
}
}
public void stopWeblogic() {
}
}
===========================================================
========================StartWeblogicMBean.java=============
===========================================================
package mbean;
public interface StartWeblogicMBean {
void startWeblogic();
void stopWeblogic();
}
===========================================================
========================JmxClient.java=======================
===========================================================
package client;
import java.util.Map;
import javax.management.MBeanServerConnection;
import javax.management.MBeanServerInvocationHandler;
import javax.management.ObjectName;
import javax.management.remote.JMXConnector;
import javax.management.remote.JMXConnectorFactory;
import javax.management.remote.JMXServiceURL;
import javax.management.RuntimeErrorException;
import mbean.StartWeblogicMBean;
public class JmxClient {
public void foo() {
//ObjectName processControlMBeanName = null;
ObjectName resourceControlMBeanName = null;
Map creationEnvironment = null;
Map connectionEnvironment = null;
try {
// 서버에서 등록한 MBean을 이름으로 검색(batch 관리용)
resourceControlMBeanName = new ObjectName("JmxAgent:name=weblogicControl");
JMXServiceURL address = new JMXServiceURL(
"service:jmx:rmi:///jndi/rmi://localhost:7777/server");
JMXConnector cntor = JMXConnectorFactory.newJMXConnector(address, creationEnvironment);
cntor.connect(connectionEnvironment);
MBeanServerConnection mbsc = cntor.getMBeanServerConnection();
//WeblogicControl용
StartWeblogicMBean resource = (StartWeblogicMBean) MBeanServerInvocationHandler.newProxyInstance(mbsc,
resourceControlMBeanName,StartWeblogicMBean.class, false);
//start job
resource.startWeblogic();
cntor.close();
} catch (RuntimeErrorException e) {
System.out.println("Error --->" + e);
e.printStackTrace();
}
catch(Exception e) {
System.out.println(e);
e.printStackTrace();
}
}
public static void main(String[] args) {
new JmxClient().foo();
}
}
===========================================================
========================JmxAgent.java========================
===========================================================
package agent;
import mbean.*;
import java.rmi.registry.LocateRegistry;
import java.util.HashMap;
import java.util.Map;
import java.lang.management.*;
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;
import javax.management.remote.rmi.RMIConnectorServer;
public class JmxAgent {
private MBeanServer server = null;
public JmxAgent() {
server = MBeanServerFactory.createMBeanServer("JmxAgent");
startAgent();
}
private void startAgent() {
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(RMIConnectorServer.JNDI_REBIND_ATTRIBUTE,"true");
connectorName = new ObjectName("JmxAgent:name=RmiConnector");
//Process 관리를 위한 MBean Name 정의
WeblogicControlMBeanName = new ObjectName("JmxAgent:name=weblogicControl");
JMXConnectorServer connector = JMXConnectorServerFactory
.newJMXConnectorServer(serviceUrl, environment, server);
//Agent에 MBean 등록
server.registerMBean(new StartWeblogic(), WeblogicControlMBeanName);
server.registerMBean(connector, connectorName);
connector.start();
} catch (Exception e) {
}
}
public static void main(String[] args) {
new JmxAgent();
System.out.println("=================================================");
System.out.println("= =");
System.out.println("= =");
System.out.println("= JMX AGENT START!!! =");
System.out.println("= =");
System.out.println("= =");
System.out.println("= =");
System.out.println("= =");
System.out.println("= =");
System.out.println("= =");
System.out.println("= =");
System.out.println("=================================================");
System.out.println("= Agent is Ready for Service... =");
System.out.println("=================================================");
}
}
===========================================================
========================StartWeblogic.java====================
===========================================================
package mbean;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.InputStreamReader;
public class StartWeblogic implements mbean.StartWeblogicMBean {
public void startWeblogic() {
try {
Runtime r = Runtime.getRuntime();
//Process p = r.exec("C:\\bea\\user_projects\" +
// "domains\\mydomain\\setEnv.cmd");
Process p = r.exec("c:\\run.bat");
BufferedReader stdInput = new BufferedReader(
new InputStreamReader(p.getInputStream()));
String s = null;
while ((s = stdInput.readLine()) != null) {
System.out.println(s);
}
p.wait();
} catch (Exception e) {
e.printStackTrace();
}
}
public void stopWeblogic() {
}
}
===========================================================
========================StartWeblogicMBean.java=============
===========================================================
package mbean;
public interface StartWeblogicMBean {
void startWeblogic();
void stopWeblogic();
}
===========================================================
========================JmxClient.java=======================
===========================================================
package client;
import java.util.Map;
import javax.management.MBeanServerConnection;
import javax.management.MBeanServerInvocationHandler;
import javax.management.ObjectName;
import javax.management.remote.JMXConnector;
import javax.management.remote.JMXConnectorFactory;
import javax.management.remote.JMXServiceURL;
import javax.management.RuntimeErrorException;
import mbean.StartWeblogicMBean;
public class JmxClient {
public void foo() {
//ObjectName processControlMBeanName = null;
ObjectName resourceControlMBeanName = null;
Map creationEnvironment = null;
Map connectionEnvironment = null;
try {
// 서버에서 등록한 MBean을 이름으로 검색(batch 관리용)
resourceControlMBeanName = new ObjectName("JmxAgent:name=weblogicControl");
JMXServiceURL address = new JMXServiceURL(
"service:jmx:rmi:///jndi/rmi://localhost:7777/server");
JMXConnector cntor = JMXConnectorFactory.newJMXConnector(address, creationEnvironment);
cntor.connect(connectionEnvironment);
MBeanServerConnection mbsc = cntor.getMBeanServerConnection();
//WeblogicControl용
StartWeblogicMBean resource = (StartWeblogicMBean) MBeanServerInvocationHandler.newProxyInstance(mbsc,
resourceControlMBeanName,StartWeblogicMBean.class, false);
//start job
resource.startWeblogic();
cntor.close();
} catch (RuntimeErrorException e) {
System.out.println("Error --->" + e);
e.printStackTrace();
}
catch(Exception e) {
System.out.println(e);
e.printStackTrace();
}
}
public static void main(String[] args) {
new JmxClient().foo();
}
}
댓글 없음:
댓글 쓰기