如何使用 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)
}
}
我有一个 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)
}
}