如何使用 OSGi 本机注释来注释 JMX bean?

How to annotate JMX beans with OSGi native annotations?

我有一个 JMX bean,它在 felix scr 注释(AEM 6.4.8,Java 8)上 运行,我想重构它,以便它改用 OSGi 注释。基本上,很清楚该怎么做,我猜只有一个很小的“=”需要转义? 旧代码如下所示:

@Component(immediate=true)
@Property(name="jmx.objectname", value={"com.mypackage.monitoring:type=HierarchyModificationListenerMbean"})
@Service
public class HierarchyModificationListenerMbeanImpl
extends AnnotatedStandardMBean
implements ListenerStats {

重构后的代码将是:

@Component(immediate=true, service = ListenerStats.class, property = {"jmx.objectname=com.mypackage.monitoring:type=HierarchyModificationListenerMbean"})
public class HierarchyModificationListenerMbeanImpl
extends AnnotatedStandardMBean
implements ListenerStats {

我不确定如何处理这种情况下的“:type=”。

有什么想法吗?

看看这个页面 https://aem.redquark.org/2018/10/day-16-creating-jmx-mbeans-in-aem.html 看起来您的 属性 定义应该可以解决问题

我觉得你的代码不错。唯一的问题是,你有接口 HierarchyModificationListenerMbean 吗?你的实现 class 应该声明它实现了这样的接口

示例:

public interface MyMBean {

}

@Component(service = DynamicMBean.class, property = {
        "jmx.objectname=com.yourproject.osgi:type=MyMBean"
})
public class MyMBeanImpl extends AnnotatedStandardMBean implements MyMBean {
   public MyMBeanImpl() {
       super(MyMBean.class)
   }
}