public interface LoginStatsMBean { public int getFailedLogins(); public int getSuccessLogins(); } 这两个方法简单地返回成功和失败登陆的数目。LoginStatsMBean的实现-LoginStats,为上面两种方法提供了一种具体的实现。让我们分析一下getFailedLogins()实现:
public int getFailedLogins() { ServletContext context = Config.getServletContext(); Integer val = (Integer) context.getAttribute( Constants.FAILED_LOGINS_KEY); return (val == null) ? 0 : val.intValue(); } 该方法返回一个存储在ServletContext中的值。getSuccessLogins()方法是以相似的方式实现的。
五、 创建和保护一个JMX代理
管理应用程序的JMX相关方面的JMXAgent类有以下几个责任:
1. 创建一个MBeanServer。
2. 用MBeanServer注册LoginStatsMBean。
3. 创建一个JMXConnector以允许远程客户进行连接。
o 包含对JNDI的使用。
o 也必须有一个RMI注册运行。
4. 使用一个用户名和口令保护JMXConnector。
5. 分别在应用程序启动和停止时,启动和停止JMXConnector。
JMXAgent的类轮廓是:
public class JMXAgent { public JMXAgent() { //初始化JMX服务器 } public void start() { //启动JMX服务器 } //在应用程序结束时调用 public void stop() { //停止JMX服务器 } } 让我们理解在该构造器的这部分代码-它能够使得客户远程地监控该应用程序。