/** * Register any {@link org.apache.solr.core.SolrInfoMBean}s * @param infoRegistry The Info Registry */ public void inform(Map<String, SolrInfoMBean> infoRegistry) { for (SolrInfoMBean bean : infoMBeans) { infoRegistry.put(bean.getName(), bean); } } /**
private ObjectName getObjectName(String key, SolrInfoMBean infoBean) throws MalformedObjectNameException { Hashtable<String, String> map = new Hashtable<String, String>(); map.put("type", key); if (infoBean.getName() != null && !"".equals(infoBean.getName())) { map.put("id", infoBean.getName()); } return ObjectName.getInstance(jmxRootName, map); }
private <T> void addIfNotPresent(Map<String ,T> registry, String name, Class<? extends T> c){ if(!registry.containsKey(name)){ T searchComp = (T) resourceLoader.newInstance(c.getName()); registry.put(name, searchComp); if (searchComp instanceof SolrInfoMBean){ infoRegistry.put(((SolrInfoMBean)searchComp).getName(), (SolrInfoMBean)searchComp); } } }
/** * Register any {@link org.apache.solr.core.SolrInfoMBean}s * @param infoRegistry The Info Registry */ public void inform(Map<String, SolrInfoMBean> infoRegistry) { // this can currently happen concurrently with requests starting and lazy components // loading. Make sure infoMBeans doesn't change. SolrInfoMBean[] arr; synchronized (infoMBeans) { arr = infoMBeans.toArray(new SolrInfoMBean[infoMBeans.size()]); waitingForResources.clear(); } for (SolrInfoMBean bean : arr) { try { infoRegistry.put(bean.getName(), bean); } catch (Throwable t) { log.warn("could not register MBean '" + bean.getName() + "'.", t); } } }
public MBeanInfo getMBeanInfo() { ArrayList<MBeanAttributeInfo> attrInfoList = new ArrayList<MBeanAttributeInfo>(); for (String stat : staticStats) { attrInfoList.add(new MBeanAttributeInfo(stat, String.class.getName(), null, true, false, false)); } try { NamedList dynamicStats = infoBean.getStatistics(); if (dynamicStats != null) { for (int i = 0; i < dynamicStats.size(); i++) { String name = dynamicStats.getName(i); if (!staticStats.contains(name)) attrInfoList.add(new MBeanAttributeInfo(dynamicStats.getName(i), String.class.getName(), null, true, false, false)); } } } catch (Exception e) { LOG.warn( "Could not getStatistics on info bean " + infoBean.getName(), e); } MBeanAttributeInfo[] attrInfoArr = attrInfoList .toArray(new MBeanAttributeInfo[attrInfoList.size()]); return new MBeanInfo(getClass().getName(), infoBean .getDescription(), attrInfoArr, null, null, null); }