/*_##########################################################################
_##
_## Copyright (C) 2013 Kaito Yamada
_##
_##########################################################################
*/
package com.github.kaitoy.sneo.giane.servletlistener;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import com.github.kaitoy.sneo.jmx.HttpJmxAgent;
import com.github.kaitoy.sneo.util.Constants;
public class JmxAgentStarter implements ServletContextListener {
private static HttpJmxAgent jmxAgent;
private static Object lock = new Object();
public static HttpJmxAgent getJmxAgent() {
return jmxAgent;
}
public void contextInitialized(ServletContextEvent servletContextEvent) {
synchronized (lock) {
if (jmxAgent == null) {
int httpPort = getPortFromSystemProperty(Constants.JMX_HTTP_PORT_KEY, 8090);
int rmiPort = getPortFromSystemProperty(Constants.JMX_RMI_PORT_KEY, 10099);
jmxAgent = new HttpJmxAgent(httpPort, rmiPort);
jmxAgent.start();
}
}
}
public void contextDestroyed(ServletContextEvent servletContextEvent) {
synchronized (lock) {
if (jmxAgent != null) {
jmxAgent.stop();
jmxAgent = null;
}
}
}
private int getPortFromSystemProperty(String key, int dflt) {
int port;
try {
port = Integer.parseInt(System.getProperty(key));
if (port < 1 || port > 65535) {
port = dflt;
}
} catch (Exception e) {
port = dflt;
}
return port;
}
}