我有一个使用Spring注释通过JMX公开的Spring bean,但是参数名称仍然是空白的,并且操作和参数描述没有显示出来。可以在不诉诸繁琐的XML定义文件的情况下解决这个问题吗?
我在a blog post之后密切实施了这一点。这是我的简化代码:
import org.springframework.jmx.export.annotation.ManagedOperation;
import org.springframework.jmx.export.annotation.ManagedOperationParameter;
import org.springframework.jmx.export.annotation.ManagedOperationParameters;
import org.springframework.jmx.export.annotation.ManagedResource;
@ManagedResource(objectName="group:name=foo", description="Does a lot of fooing")
public class Foo {
@ManagedOperation(description="Changes the period of the given task and applies it immediately if the task is enabled.")
@ManagedOperationParameters({
@ManagedOperationParameter(name="index", description="the 0-based index of the fizzle"),
@ManagedOperationParameter(name="baz", description="the baz value to set on the fizzle")
})
public void changeFizzle(int index, long baz) {
// impl
}
}
相关的spring应用程序上下文定义从上面链接的博客文章中逐字复制。
答案 0 :(得分:1)
您需要为MBeanExporter定义正确的MetadataMBeanInfoAssembler:
<property name="assembler">
<bean id="assembler" class="org.springframework.jmx.export.assembler.MetadataMBeanInfoAssembler">
<property name="attributeSource">
<bean class="org.springframework.jmx.export.annotation.AnnotationJmxAttributeSource" />
</property>
</bean>
</property>