public MBeanNotificationCache(ServerInvoker invoker, MBeanServer server) throws Exception { this.server = server; this.serverInvoker = invoker; this.localServerId = JMXUtil.getServerId(server); networkRegistry = NetworkRegistryFinder.find(server); if(networkRegistry == null) { throw new Exception("Couldn't find the required NetworkRegistryMBean in this MBeanServer"); } // add ourself as a listener for detection failed events server.addNotificationListener(networkRegistry, this, null, this); }
/** * called by MBeanServer to start the mbean lifecycle * * @throws Exception */ public void start() throws Exception { // get our own identity myself = Identity.get(mbeanserver); // add my domain if domains empty and xml not set if(domains.isEmpty() && xml == null) { domains.add(myself.getDomain()); } // find our NetworkRegistry registryObjectName = NetworkRegistryFinder.find(mbeanserver); if(registryObjectName == null) { log.warn("Detector: " + getClass().getName() + " could not be loaded because the NetworkRegistry is not registered"); log.warn("This means that only the broadcasting of detection messages will be functional and will not be able to discover other servers."); } else { networkRegistry = (NetworkRegistryMBean)MBeanServerInvocationHandler.newProxyInstance(mbeanserver, registryObjectName, NetworkRegistryMBean.class, false); } startPinger(getPingerDelay(), getPingerPeriod()); startHeartbeat(getHeartbeatDelay(), getHeartbeatPeriod()); }
networkRegistry = NetworkRegistryFinder.find(myserver); if(networkRegistry == null)