读书人

Spring注解JMX(非Web项目)遇到的有关

发布时间: 2012-06-26 10:04:13 作者: rapoo

Spring注解JMX(非Web项目)遇到的问题

??? 在Web项目中使用Spring对JMX的支持非常方便,通过简单的配置即可创建MBeanServer和注册一个普通的JavaBean为MBean。如下所示配置:

??? 因为是Web项目,所以直接通过org.springframework.web.context.ContextLoaderListener初始化Spring的配置,非常方便,但是我们的Agent端是一个普通的Java项目,而我们也希望使用Spring对JMX的支持,于是我使用如下方式去加载xml文件:

@Component@ManagedResource(objectName = "Agent:name=tomcat", description = "Tomcat Operations.", log = true, logFile = "jmx.log")public class TomcatMbean {@ManagedOperation(description = "Start Tomcat.")@ManagedOperationParameters( { @ManagedOperationParameter(name = "tomcatInfo", description = "tomcatInfo.") })public ResultInfo start(TomcatInfo tomcatInfo) {ResultInfo result = new ResultInfo();ASService asService = new ASService(tomcatInfo);CmdExecutor executor = ExecutorFactory.getExecutor(EXECUTOR_TYPE.SCRIPT_EXECUTOR.getTypeCode(),tomcatInfo.getId());asService.setExecutor(executor);if (asService.start()) {result.setSuccess(true);return result;} else {result.setErrorInfo("启动Tomcat失败!");result.setSuccess(false);return result;}}

??? 我们通过@Component将这个TomcatMbean注册为Spring的Bean注册为Spring的一个Bean,然后通过JMX的注解来声明这个MBean,如果这些注解看不懂的话,可以参考Spring的官方文档。

??? 奇怪的事情发生了~~

??? 通过调试发现,这个Spring的MBean已经被注册上了,也就是说那个@Component注解生效了,但是这个JMX的注解死活不行,然后各种查文档、采用xml方式、各种使用Spring的官方文档的配置方式,反正,就是不行!

??? 最后,将GenericApplicationContext改成了ClassPathXmlApplicationContext,万事ok!!郁闷死~~

??? 其实一开始也想到这点了,但是觉得不可能就绕过去了,哎,回头还得继续读读Spring的源码~~

?

读书人网 >Web前端

热点推荐