package org.simpleframework.demo.jmx;
import java.lang.management.ManagementFactory;
import javax.management.MBeanServer;
import javax.management.ObjectName;
import org.springframework.jmx.export.annotation.ManagedResource;
import com.sun.jdmk.comm.AuthInfo;
import com.sun.jdmk.comm.CommunicatorServer;
import com.sun.jdmk.comm.HtmlAdaptorServer;
/**
* This provides a means of management for the host service via a web
* browser. All controls exposed are JMX attributes or operations which
* allows various components to be manipulated for management.
*
* @author Niall Gallagher
*/
@ManagedResource(description="Web administration tool")
public class WebAdministrator {
private final WebConfiguration config;
private final WebPageParser parser;
public WebAdministrator(WebConfiguration config) {
this(config, null);
}
public WebAdministrator(WebConfiguration config, WebObjectIntrospector introspector) {
this.parser = new WebPageParser(config, introspector);
this.config = config;
}
public void start() {
try {
int port = config.getPort();
String login = config.getLogin();
String password = config.getPassword();
MBeanServer platformServer = ManagementFactory.getPlatformMBeanServer();
HtmlAdaptorServer adapterServer = new HtmlAdaptorServer();
AuthInfo authInfo = new AuthInfo(login, password);
ObjectName serverName = new ObjectName("com.yb.fix.manage.jmx:name=WebAdministratorServer,type=HtmlAdaptorServer");
ObjectName parserName = new ObjectName("com.yb.fix.manage.jmx:name=WebPageParser,type=WebPageParser");
platformServer.registerMBean(parser, parserName);
adapterServer.setPort(port);
adapterServer.addUserAuthenticationInfo(authInfo);
platformServer.registerMBean(adapterServer, serverName);
adapterServer.start();
adapterServer.setParser(parserName);
adapterServer.waitState(CommunicatorServer.ONLINE, 1000);
} catch (Exception e) {
e.printStackTrace();
}
}
}