spring jmx java_Spring与JMX集成

public class MetaAttributeMBeanExporter extendsMBeanExporter

{protectedListableBeanFactory theBeanFactory;public static final String JMX_NAME = "jmxName";protected boolean initialized = false;

@Overridepublic voidsetBeanFactory(BeanFactory beanFactory) {if (beanFactory instanceofListableBeanFactory) {this.theBeanFactory =(ListableBeanFactory) beanFactory;

}else{

logger.info("MBeanExporter not running in a ListableBeanFactory: Autodetection of MBeans not available.");

}super.setBeanFactory(beanFactory);

}

@Overridepublic voidafterPropertiesSet()

{

Map beanMap = new HashMap();if (this.server == null) {this.server =JmxUtils.locateMBeanServer();

}

String[] beanNames= this.theBeanFactory.getBeanNamesForType(Object.class, true, false);for (int i = 0; i < beanNames.length; i++) {

String beanName=beanNames[i];

String beanJMXName=getBeanJMXNameIfAny(theBeanFactory, beanName);if ( beanJMXName != null) {boolean isAlreadyRegistered = false;try{

isAlreadyRegistered=server.isRegistered(getObjectName(beanName, beanJMXName));

}catch(MalformedObjectNameException e) {

logger.warn("The bean JMX Name [" + beanJMXName + "] is malformed. Skipping...");continue;

}if ( !isAlreadyRegistered )

{//Not already registered for JMX exposure.

beanMap.put(beanJMXName, beanName);if(logger.isDebugEnabled()) {

logger.debug("Bean with name '" + beanName + "' has been autodetected for JMX exposure");

}

}

}

}//finally

super.setBeans(beanMap);super.afterPropertiesSet();

}protectedString getBeanJMXNameIfAny(ListableBeanFactory beanFactory, String beanName)

{if (!(beanFactory instanceofConfigurableListableBeanFactory)) {return null;

}try{

BeanDefinition bd=((ConfigurableListableBeanFactory) beanFactory).getBeanDefinition(beanName);

BeanMetadataAttributeAccessor def=(BeanMetadataAttributeAccessor) bd;

BeanMetadataAttribute meta=def.getMetadataAttribute(JMX_NAME);if ( meta == null)

{return null;

}else{return(String)meta.getValue();

}

}catch(NoSuchBeanDefinitionException ex) {//Probably a directly registered singleton.

return null;

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值