Package org.mom4j.xcp.jmx

Source Code of org.mom4j.xcp.jmx.XcpServerAgent

package org.mom4j.xcp.jmx;

import com.sun.jdmk.comm.AuthInfo;
import com.sun.jdmk.comm.HtmlAdaptorServer;

import java.util.Iterator;
import java.util.Map;

import javax.management.JMException;
import javax.management.MBeanServer;
import javax.management.MBeanServerFactory;
import javax.management.ObjectName;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;


public class XcpServerAgent {
   
    private static Log log = LogFactory.getLog(XcpServerAgent.class);

    private HtmlAdaptorServer html;
    private MBeanServer       server;
    private Map               servers;
    private int               port;
    private String            user;
    private String            password;
   
    public XcpServerAgent(Map servers, int port) {
        this.servers  = servers;
        this.port     = port;
        this.user     = "admin";
        this.password = "secret";
    }
   
   
    public XcpServerAgent(Map servers, int port, String user, String password) {
        this.servers  = servers;
        this.port     = port;
        this.user     = user;
        this.password = password;
    }
   
   
    public void start() {
        this.server = MBeanServerFactory.createMBeanServer("xcp");
        this.html = new HtmlAdaptorServer(this.port);
        this.html.addUserAuthenticationInfo(new AuthInfo(this.user, this.password));
       
        try {
            //register the html-adaptor
            ObjectName on = new ObjectName("Adaptor:name=html,port=8888");
            this.server.registerMBean(this.html, on);
            //register the admin instance for the xcp-server-process
            on = new ObjectName("XcpServer:port=allPorts");
            this.server.registerMBean(new XcpServer(this.servers), on);
            //register the xcp-server-instances
            Iterator it = this.servers.keySet().iterator();
            while(it.hasNext()) {
                Integer p = (Integer)it.next();
                XcpServerAdmin admin = new XcpServerAdmin(p.intValue());
                ObjectName     oname = new ObjectName("XcpServer:port=" + p);
                this.server.registerMBean(admin, oname);
            }
        } catch(JMException ex) {
            log.error("start failed.", ex);
            this.server = null;
            this.html   = null;
            return;
        }
       
        this.html.start();
    }
   
   
    public void registerMBean(ObjectName name, Object bean)
        throws JMException
    {
        if(name == null)
            throw new IllegalArgumentException("name may not be null!");
        if(bean == null)
            throw new IllegalArgumentException("bean may not be null!");
       
        this.server.registerMBean(bean, name);
    }
   
   
    public void unregisterMBean(ObjectName name)
        throws JMException
    {
        if(name == null)
            throw new IllegalArgumentException("name may not be null!");
               
        this.server.unregisterMBean(name);
    }

   
    public void stop() {
        this.html.stop();
    }

}
TOP

Related Classes of org.mom4j.xcp.jmx.XcpServerAgent

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.