
org.jolokia.service.discovery.JolokiaDiscovery Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jolokia-service-discovery Show documentation
Show all versions of jolokia-service-discovery Show documentation
Jolokia :: Service :: Agent Discovery
package org.jolokia.service.discovery;
import java.io.IOException;
import java.util.List;
import javax.management.ObjectName;
import org.jolokia.server.core.service.api.*;
import org.json.simple.JSONArray;
import static org.jolokia.service.discovery.AbstractDiscoveryMessage.MessageType.QUERY;
/**
* Discover Jolokia agents via multicast
*
* @author roland
* @since 31.01.14
*/
public class JolokiaDiscovery extends AbstractJolokiaService
implements JolokiaDiscoveryMBean, JolokiaService.Init {
// Name has we have been registered
private ObjectName objectName;
/**
* Constructor to be called when called as a service
* @param pOrder service order
*/
public JolokiaDiscovery(int pOrder) {
super(JolokiaService.Init.class,pOrder);
}
/**
* Constructor called for programmatic lookup of the agent
*
*/
public JolokiaDiscovery() {
super(JolokiaService.Init.class, 0);
}
@Override
public void init(JolokiaContext pJolokiaContext) {
super.init(pJolokiaContext);
objectName = registerJolokiaMBean(JolokiaDiscovery.OBJECT_NAME,this);
}
@Override
public void destroy() throws Exception {
unregisterJolokiaMBean(objectName);
super.destroy(); // Important, must be after any method using a JolokiaContext
}
/** {@inheritDoc} */
public List lookupAgents() throws IOException {
return lookupAgentsWithTimeout(1000);
}
/** {@inheritDoc} */
public List lookupAgentsWithTimeout(int pTimeout) throws IOException {
JolokiaContext ctx = getJolokiaContext();
DiscoveryOutgoingMessage out =
new DiscoveryOutgoingMessage.Builder(QUERY)
.agentId(ctx.getAgentDetails().getAgentId())
.build();
List discovered = MulticastUtil.sendQueryAndCollectAnswers(out, pTimeout, ctx);
JSONArray ret = new JSONArray();
for (DiscoveryIncomingMessage in : discovered) {
ret.add(in.getAgentDetails().toJSONObject());
}
return ret;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy