[자바JMX,웹예제]contextInitialized에서 MBean등록하기
- test라는 이름으로 Dynamic Web Project 생성
- 아래 파일을 만들자
[Counter.java]
package example.jmx.mbean;
import java.util.Date;
import example.jmx.web.MyCounter;
public class Counter implements CounterMBean {
private String name;
public Counter() {
this.name = "InitialName";
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public void resetCounter() {
MyCounter.resetCounter();
}
@Override
public void resetCounter(int start) {
MyCounter.resetCounter(start);
}
@Override
public int getCurrentCount() {
return MyCounter.getCurrentCount();
}
@Override
public Date getCurrentTime() {
return new Date();
}
@Override
public long getCurrentTimeMilis() {
return System.currentTimeMillis();
}
}
[CounterMBean.java]
package example.jmx.mbean;
import java.util.Date;
public interface CounterMBean {
void resetCounter();
void resetCounter(int start);
int getCurrentCount();
Date getCurrentTime();
long getCurrentTimeMilis();
}
[CounterServlet.java]
package example.jmx.web;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/count")
public class CounterServlet extends HttpServlet {
private static final long serialVersionUID = 886395215542306826L;
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setAttribute("COUNT", MyCounter.incrementAndGet());
request.getRequestDispatcher("/WEB-INF/views/view.jsp").forward(request, response);
}
}
[MyCounter.java]
package example.jmx.web;
import java.util.concurrent.atomic.AtomicInteger;
public class MyCounter {
private static AtomicInteger counter = new AtomicInteger(0);
public static int incrementAndGet() {
return counter.incrementAndGet();
}
public static int getCurrentCount() {
return counter.get();
}
public static void resetCounter() {
resetCounter(0);
}
public static void resetCounter(int start) {
counter = new AtomicInteger(start);
}
}
[RegisterMBenasListener.java]
package example.jmx.web;
import java.util.concurrent.atomic.AtomicInteger;
public class MyCounter {
private static AtomicInteger counter = new AtomicInteger(0);
public static int incrementAndGet() {
return counter.incrementAndGet();
}
public static int getCurrentCount() {
return counter.get();
}
public static void resetCounter() {
resetCounter(0);
}
public static void resetCounter(int start) {
counter = new AtomicInteger(start);
}
}
[/WEB-INF/views/view.jsp]
<html>
</head>
<body>
<h1>JmxExample :: Count</h1>
<p>Current count is ${COUNT}.</p>
<ul>
<li><a href="home.jsp">Home</a></li>
<li><a href="count">Counter Servlet</a></li>
</ul>
</body>
</html>
[home.jsp]
<html>
</head>
<body>
<h1>JmxExample :: Home</h1>
<ul>
<li><a href="index.jsp">Home</a></li>
<li><a href="count">Counter Servlet</a></li>
</ul>
</body>
</html>
[카운터 서블릿을 실행해서 브라우저에서 확인하자.]
http://localhost:8080/test/count
[ jconsole 실행 후 JmxExampleApp의 Counter MBean을 찾아서 메소드를 실행하자.]
c:> jconsole
댓글 없음:
댓글 쓰기