/** * Resets the impl for unittests. */ void reset() { cleanup(); // cleaning up all context before reseting producer registry instance listeners.clear(); registry.clear(); String junittest = System.getProperty("JUNITTEST"); if (junittest != null && junittest.equalsIgnoreCase("true")) // preventing listener's initialization for JUnit run's return; addListener(new JMXBridgeListener()); }
/** * Creates JMX name for a producer. * @param producerId target producerId. * @param statName target statName. * @return the name for JMXBean. */ private String createName(String producerId, String statName) { String appName = encodeAppName(MoskitoConfigurationHolder.getConfiguration().getApplicationName()); return "MoSKito."+(appName.length()>0 ? appName+ '.' :"")+"producers:type="+producerId+ '.' +statName; }
@Override public void notifyProducerRegistered(IStatsProducer<S> producer) { if (producer instanceof BuiltInProducer) return; List<S> stats = producer.getStats(); if (stats == null) return; for (IStats s : stats){ try{ MBeanUtil.getInstance().registerMBean(s, createName(producer.getProducerId(), s.getName())); } catch(Exception e){ log.warn("can't register "+s.getName()+" in "+producer.getProducerId()+", ignored.", e); } } }
@Override public void notifyProducerUnregistered(IStatsProducer<S> producer) { List<S> stats = producer.getStats(); if (stats == null) return; for (IStats s : stats){ try{ boolean isUnregistered = MBeanUtil.getInstance().unregisterMBean(createName(producer.getProducerId(), s.getName())); if(!isUnregistered) log.debug("can't unregister "+s.getName()+" in "+producer.getProducerId()+ ", MBean with such name is not registered"); }catch(Exception e){ log.warn("can't unregister "+s.getName()+" in "+producer.getProducerId()+", ignored.", e); } } }