1. DiskStatus.java
package jmx;
import java.io.IOException;
import java.io.PrintWriter;
import javax.management.MalformedObjectNameException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class DiskStatus extends HttpServlet {
private static final long serialVersionUID = 5205766527888153877L;
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws IOException {
DiskStatusInquiry dsi = new DiskStatusInquiry();
try {
dsi.diskStatus();
} catch (MalformedObjectNameException e) {
e.printStackTrace();
} catch (NullPointerException e) {
e.printStackTrace();
}
String dview = dsi.viewDiskCapacity();
PrintWriter out = res.getWriter();
out.println(dview);
}
}
-------------------------------------------------------------------
2. DiskStatusInquiry.java
package jmx;
import java.io.IOException;
import java.net.MalformedURLException;
import java.text.NumberFormat;
import java.util.Map;
import javax.management.MBeanServerConnection;
import javax.management.MBeanServerInvocationHandler;
import javax.management.MalformedObjectNameException;
import javax.management.ObjectName;
import javax.management.RuntimeErrorException;
import javax.management.remote.JMXConnector;
import javax.management.remote.JMXConnectorFactory;
import javax.management.remote.JMXServiceURL;
import org.apache.commons.io.FileSystemUtils;
public class DiskStatusInquiry implements DiskStatusInquiryMBean {
public DiskStatusInquiry() {
}
public String viewDiskCapacity() {
StringBuffer status = new StringBuffer();
long freeSpace=0;
try {
freeSpace = FileSystemUtils.freeSpaceKb("C:/");
} catch (IOException e) {
e.printStackTrace();
}
NumberFormat nf = NumberFormat.getInstance();
status.append("C Drive FreeSpace : ");
status.append(nf.format(freeSpace));
status.append("Kb");
return status.toString();
}
public void diskStatus() throws MalformedObjectNameException,
NullPointerException, IOException {
ObjectName resourceControlMBeanName = null;
Map<String, ?> creationEnvironment = null;
Map<String, ?> connectionEnvironment = null;
try {
resourceControlMBeanName = new ObjectName(
"JmxAgent:name=diskStatus");
JMXServiceURL serviceURL = new JMXServiceURL(
"service:jmx:rmi:///jndi/rmi://localhost:7777/server");
JMXConnector cntor = JMXConnectorFactory.newJMXConnector(
serviceURL, creationEnvironment);
cntor.connect(connectionEnvironment);
MBeanServerConnection mbsc = cntor.getMBeanServerConnection();
DiskStatusInquiryMBean resource = MBeanServerInvocationHandler
.newProxyInstance(mbsc, resourceControlMBeanName,
DiskStatusInquiryMBean.class, false);
resource.viewDiskCapacity();
cntor.close();
} catch (RuntimeErrorException e) {
e.printStackTrace();
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
}
-------------------------------------------------------------------
3. DiskStatusInquiryMBean.java
package jmx;
public interface DiskStatusInquiryMBean {
public String viewDiskCapacity();
}
--------------------------------------------------------------------
4. JmxAgent.java
package jmx;
import java.rmi.registry.LocateRegistry;
import java.util.HashMap;
import java.util.Map;
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");
initAgent();
}
public void initAgent() {
JMXServiceURL serviceUrl = null;
ObjectName connectorName = null;
ObjectName diskStatusInquiryMBeanName = null;
try {
LocateRegistry.createRegistry(7777);
serviceUrl = new JMXServiceURL(
"service:jmx:rmi:///jndi/rmi://localhost:7777/server");
Map<String, String> environment = new HashMap<String, String>();
environment.put(RMIConnectorServer.JNDI_REBIND_ATTRIBUTE, "true");
connectorName = new ObjectName("JmxAgent:name=RmiConnector");
diskStatusInquiryMBeanName = new ObjectName(
"JmxAgent:name=diskStatus");
JMXConnectorServer connector = JMXConnectorServerFactory
.newJMXConnectorServer(serviceUrl, environment, server);
server.registerMBean(new DiskStatusInquiry(),
diskStatusInquiryMBeanName);
server.registerMBean(connector, connectorName);
connector.start();
} catch (Exception e) {
e.printStackTrace();
}
}
}
-------------------------------------------------------------------
5. JmxListener.java
package jmx;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class JmxListener implements ServletContextListener{
public void contextInitialized (ServletContextEvent event) {
new JmxAgent();
}
public void contextDestroyed (ServletContextEvent event) {}
}
-------------------------------------------------------------------
6. web.xml
<?xml version="1.0" encoding="euc-kr"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<servlet>
<servlet-name>DiskStatus</servlet-name>
<servlet-class>jmx.DiskStatus</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DiskStatus</servlet-name>
<url-pattern>/DiskStatus</url-pattern>
</servlet-mapping>
<listener>
<listener-class>
jmx.JmxListener
</listener-class>
</listener>
</web-app>
package jmx;
import java.io.IOException;
import java.io.PrintWriter;
import javax.management.MalformedObjectNameException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class DiskStatus extends HttpServlet {
private static final long serialVersionUID = 5205766527888153877L;
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws IOException {
DiskStatusInquiry dsi = new DiskStatusInquiry();
try {
dsi.diskStatus();
} catch (MalformedObjectNameException e) {
e.printStackTrace();
} catch (NullPointerException e) {
e.printStackTrace();
}
String dview = dsi.viewDiskCapacity();
PrintWriter out = res.getWriter();
out.println(dview);
}
}
-------------------------------------------------------------------
2. DiskStatusInquiry.java
package jmx;
import java.io.IOException;
import java.net.MalformedURLException;
import java.text.NumberFormat;
import java.util.Map;
import javax.management.MBeanServerConnection;
import javax.management.MBeanServerInvocationHandler;
import javax.management.MalformedObjectNameException;
import javax.management.ObjectName;
import javax.management.RuntimeErrorException;
import javax.management.remote.JMXConnector;
import javax.management.remote.JMXConnectorFactory;
import javax.management.remote.JMXServiceURL;
import org.apache.commons.io.FileSystemUtils;
public class DiskStatusInquiry implements DiskStatusInquiryMBean {
public DiskStatusInquiry() {
}
public String viewDiskCapacity() {
StringBuffer status = new StringBuffer();
long freeSpace=0;
try {
freeSpace = FileSystemUtils.freeSpaceKb("C:/");
} catch (IOException e) {
e.printStackTrace();
}
NumberFormat nf = NumberFormat.getInstance();
status.append("C Drive FreeSpace : ");
status.append(nf.format(freeSpace));
status.append("Kb");
return status.toString();
}
public void diskStatus() throws MalformedObjectNameException,
NullPointerException, IOException {
ObjectName resourceControlMBeanName = null;
Map<String, ?> creationEnvironment = null;
Map<String, ?> connectionEnvironment = null;
try {
resourceControlMBeanName = new ObjectName(
"JmxAgent:name=diskStatus");
JMXServiceURL serviceURL = new JMXServiceURL(
"service:jmx:rmi:///jndi/rmi://localhost:7777/server");
JMXConnector cntor = JMXConnectorFactory.newJMXConnector(
serviceURL, creationEnvironment);
cntor.connect(connectionEnvironment);
MBeanServerConnection mbsc = cntor.getMBeanServerConnection();
DiskStatusInquiryMBean resource = MBeanServerInvocationHandler
.newProxyInstance(mbsc, resourceControlMBeanName,
DiskStatusInquiryMBean.class, false);
resource.viewDiskCapacity();
cntor.close();
} catch (RuntimeErrorException e) {
e.printStackTrace();
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
}
-------------------------------------------------------------------
3. DiskStatusInquiryMBean.java
package jmx;
public interface DiskStatusInquiryMBean {
public String viewDiskCapacity();
}
--------------------------------------------------------------------
4. JmxAgent.java
package jmx;
import java.rmi.registry.LocateRegistry;
import java.util.HashMap;
import java.util.Map;
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");
initAgent();
}
public void initAgent() {
JMXServiceURL serviceUrl = null;
ObjectName connectorName = null;
ObjectName diskStatusInquiryMBeanName = null;
try {
LocateRegistry.createRegistry(7777);
serviceUrl = new JMXServiceURL(
"service:jmx:rmi:///jndi/rmi://localhost:7777/server");
Map<String, String> environment = new HashMap<String, String>();
environment.put(RMIConnectorServer.JNDI_REBIND_ATTRIBUTE, "true");
connectorName = new ObjectName("JmxAgent:name=RmiConnector");
diskStatusInquiryMBeanName = new ObjectName(
"JmxAgent:name=diskStatus");
JMXConnectorServer connector = JMXConnectorServerFactory
.newJMXConnectorServer(serviceUrl, environment, server);
server.registerMBean(new DiskStatusInquiry(),
diskStatusInquiryMBeanName);
server.registerMBean(connector, connectorName);
connector.start();
} catch (Exception e) {
e.printStackTrace();
}
}
}
-------------------------------------------------------------------
5. JmxListener.java
package jmx;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class JmxListener implements ServletContextListener{
public void contextInitialized (ServletContextEvent event) {
new JmxAgent();
}
public void contextDestroyed (ServletContextEvent event) {}
}
-------------------------------------------------------------------
6. web.xml
<?xml version="1.0" encoding="euc-kr"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<servlet>
<servlet-name>DiskStatus</servlet-name>
<servlet-class>jmx.DiskStatus</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DiskStatus</servlet-name>
<url-pattern>/DiskStatus</url-pattern>
</servlet-mapping>
<listener>
<listener-class>
jmx.JmxListener
</listener-class>
</listener>
</web-app>
댓글 없음:
댓글 쓰기