
se.l4.vibe.backend.JmxBackend Maven / Gradle / Ivy
package se.l4.vibe.backend;
import java.lang.management.ManagementFactory;
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 se.l4.vibe.event.Events;
import se.l4.vibe.internal.jmx.ProbeBean;
import se.l4.vibe.internal.jmx.ServiceMBeanBridge;
import se.l4.vibe.internal.jmx.SamplerBean;
import se.l4.vibe.internal.service.Service;
import se.l4.vibe.internal.service.ServiceImpl;
import se.l4.vibe.probes.Probe;
import se.l4.vibe.probes.Sampler;
import se.l4.vibe.timer.Timer;
/**
* JMX backend that will export everything via JMX.
*
* @author Andreas Holstenson
*
*/
public class JmxBackend
implements VibeBackend
{
private final MBeanServer server;
private final String root;
public JmxBackend()
{
this("vibe");
}
public JmxBackend(String root)
{
this(root, ManagementFactory.getPlatformMBeanServer());
}
public JmxBackend(MBeanServer server)
{
this("vibe", server);
}
public JmxBackend(String root, MBeanServer server)
{
// Cut of last . if any
this.root = root.charAt(root.length() - 1) == '.'
? root.substring(0, root.length() - 1)
: root;
this.server = server;
}
/**
* Translate a path into a JMX location.
*
* @param path
* @return
*/
private String toJmxLocation(String path)
{
StringBuilder builder = new StringBuilder(path.length());
int lastSeparator = path.lastIndexOf('/');
if(! "".equals(root))
{
// Append the root domain
builder
.append(root)
.append(".");
}
if(lastSeparator == -1)
{
// No separator, append name directly
builder.append(":name=");
}
for(int i=0, n=path.length(); i series)
{
export(path, new SamplerBean(series));
}
@Override
public void export(String path, Probe> probe)
{
export(path, new ProbeBean(probe));
}
@Override
public void export(String path, Events> events)
{
// TODO Auto-generated method stub
}
@Override
public void export(String path, Timer timer)
{
// TODO Auto-generated method stub
}
@Override
public void close()
{
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy