package com.javamonitor.mbeans;
import static com.javamonitor.JmxHelper.objectNameBase;
import static java.lang.System.getProperty;
/**
* The application server helper mbean. This mbean is responsible for
* aggregating the various server's mbeans into a single view.
*
* @author Kees Jan Koster <kjkoster@kjkoster.org>
*/
public class Server implements ServerMBean {
private Throwable lastException = null;
private final ServerMBean actualServer;
/**
* The object name for the application server helper mbean.
*/
public static final String serverObjectName = objectNameBase + "Server";
/**
* The attribute name of the lowest HTTP port attribute.
*/
public static final String httpPortAttribute = "HttpPort";
/**
* The attribute name of the application server name attribute.
*/
public static final String nameAttribute = "Name";
/**
* The attribute name of the application server version attribute.
*/
public static final String versionAttribute = "Version";
/**
* Create a new server info aggregator bean. Here we try to find out in what
* server we're running and instantiate the correct server-specific MBean.
*
* Note that we have to test for Tomcat after the others, because Tomcat is
* used here and there as an embedded server. In such a case, we want to
* detect the outer server, not the embedded Tomcat.
*/
public Server()
{
if (ServerOpenfire.runningInOpenfire())
{
actualServer = new ServerOpenfire();
} else {
actualServer = null;
}
}
/**
* @see com.javamonitor.mbeans.ServerMBean#getName()
*/
public String getName() throws Exception {
if (actualServer == null) {
return "Java VM";
}
return actualServer.getName();
}
/**
* @see com.javamonitor.mbeans.ServerMBean#getVersion()
*/
public String getVersion() throws Exception {
if (actualServer == null) {
return getProperty("java.version");
}
return actualServer.getVersion();
}
/**
* @see com.javamonitor.mbeans.ServerMBean#getHttpPort()
*/
public Integer getHttpPort() throws Exception {
if (actualServer == null) {
return null;
}
return actualServer.getHttpPort();
}
/**
* @see com.javamonitor.mbeans.ServerMBean#getLastException()
*/
public Throwable getLastException() {
return lastException;
}
/**
* Set the last exception that the probe saw.
*
* @param lastException
* The last exception to set.
*/
public void setLastException(final Throwable lastException) {
this.lastException = lastException;
}
}