[java]代码库
package cn.rtdata.jmx;
import java.io.IOException;
import java.lang.management.ManagementFactory;
import java.rmi.registry.LocateRegistry;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import javax.management.InstanceAlreadyExistsException;
import javax.management.MBeanRegistrationException;
import javax.management.MBeanServer;
import javax.management.MalformedObjectNameException;
import javax.management.NotCompliantMBeanException;
import javax.management.ObjectName;
import javax.management.remote.JMXConnectorServer;
import javax.management.remote.JMXConnectorServerFactory;
import javax.management.remote.JMXServiceURL;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import cn.rtdata.Config;
import com.sun.jdmk.comm.AuthInfo;
import com.sun.jdmk.comm.HtmlAdaptorServer;
public class JMXService {
    private static Log logger = LogFactory.getLog(JMXService.class);
    private MBeanServer mbs = null;
    private HtmlAdaptorServer htmlAdaptor = null;
    private JMXConnectorServer cs = null;
    private static JMXService jmx = null;
    public boolean init() {
        Config config = Config.getInstance();
        // 取得JMX配置信息
        Properties jmxPro = config.getJmxPrams();
        try {
            mbs = ManagementFactory.getPlatformMBeanServer();
            // htmlAdaptor
            htmlAdaptor = new HtmlAdaptorServer();
            final ObjectName htmlAdaptorON = new ObjectName(
                    "com.example.mbeans:name=HtmlAdaptor");
            int port = Integer.parseInt(jmxPro.getProperty("htmlAdaptorPort",
                    "9876"));
            htmlAdaptor.setPort(port);
            // htmlAdaptor验证信息
            AuthInfo login = new AuthInfo();
            login.setLogin(jmxPro.getProperty("htmlUser"));
            login.setPassword(jmxPro.getProperty("htmlPasswd"));
            // 添加用户验证
            htmlAdaptor.addUserAuthenticationInfo(login);
            // 注册该模块
            mbs.registerMBean(htmlAdaptor, htmlAdaptorON);
            System.out.println("注册应用程序启动入口");
            Launcher_jmxMBean launcher = new Launcher_jmx();
            mbs.registerMBean(launcher, new ObjectName(
                    "cn.rtdata:launcher=ILauncherMBean"));
            htmlAdaptor.start();
            System.out.println("启动JMX的HtmlAdaptor,端口号:" + port);
            int jmxServiceURIPort = Integer.parseInt(jmxPro.getProperty(
                    "jmxServiceURIPort", "9999"));
            // if(LocateRegistry.getRegistry(jmxServiceURIPort)==null)s
            LocateRegistry.createRegistry(jmxServiceURIPort);
            String jmxServiceURI_ = jmxPro.getProperty("jmxServiceURI");
            String jmxServiceURI = jmxServiceURI_.substring(1,
                    jmxServiceURI_.length() - 1);
            // 密码文件
            /**
             * 内容为键值对 admin 111111 user 111111
             */
            String userFile = "config//jmx//passwd.txt";
            Map<String, String> env = new HashMap<String, String>();
            env.put("jmx.remote.x.password.file", userFile);
            JMXServiceURL url = new JMXServiceURL(jmxServiceURI);
            cs = JMXConnectorServerFactory.newJMXConnectorServer(url, env,
                    mbs);
            cs.start();
        } catch (MalformedObjectNameException e) {
            logger.error("JMX服务启动异常", e);
            e.printStackTrace();
            return false;
        } catch (InstanceAlreadyExistsException e) {
            logger.error("JMX服务启动异常", e);
            e.printStackTrace();
            return false;
        } catch (MBeanRegistrationException e) {
            logger.error("JMX服务启动异常", e);
            e.printStackTrace();
            return false;
        } catch (NotCompliantMBeanException e) {
            logger.error("JMX服务启动异常", e);
            e.printStackTrace();
            return false;
        } catch (NullPointerException e) {
            logger.error("JMX服务启动异常", e);
            e.printStackTrace();
            return false;
        } catch (IOException e) {
            logger.error("JMX服务启动异常", e);
            e.printStackTrace();
            return false;
        }
        return true;
    }
    public static JMXService getInstance() {
        if (jmx == null) {
            jmx = new JMXService();
        }
        return jmx;
    }
    private JMXService() {
    }
    public void stopService() {
        if (htmlAdaptor != null)
            htmlAdaptor.stop();
        if (cs != null) {
            try {
                cs.stop();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
}