【问题标题】:Insert MBean interceptor插入 MBean 拦截器
【发布时间】:2012-04-05 13:38:09
【问题描述】:

我正在一个实现 MBean 的 java 项目中工作,我需要在注册之前拦截 MBean 并更改/添加它们的属性。示例:

domainName:name=myMBean --> domainName:name=myMBean1,type=myType

我找到了this link,它介绍了如何应用除默认拦截器之外的拦截器,但我不知道如何在代码中执行此操作。

提前致谢。

【问题讨论】:

  • 我添加了一个简单的答案。如果您可以使用用于注册 mbean 的框架编辑您的问题,我可以回答得更好。

标签: java jmx mbeans


【解决方案1】:

一旦注册了 bean,显然为时已晚。最简单的方法是更改​​注册的完成方式。如果您向我们展示您用于注册 bean 的框架,那么我将能够提供更多帮助。

通常进行实际注册的任何操作都在执行以下操作:

private MBeanServer mbeanServer;
...
mbeanServer.registerMBean(mbean, objectName);

因此,您可以提供不同的ObjectName

ObjectName objectName = new ObjectName("domainName:name=myMBean1,type=myType");

但我假设您不是自己进行注册。


顺便说一句,我不确定您是否可以切换到使用不同的 JMX 框架,但我最近对我的Simple JMX system 进行了最后的润色。它允许对象在发布时name themselves programmatically

【讨论】:

  • 所涉及的项目实际上是JOnAS。对于 mbeans 注册表,JOnAS 使用名为 BaseModelMBean 的 apache API 和 mbean-descriptor。我不知道这是否回答了你的问题,我在这个领域还没有很多参考资料。根据您的描述更改对象名称的级别太低。我需要更改一些 mbean(取决于要部署的应用程序中是否存在信息)。所以: 1. 在某个地方,我们要注册一个 mbean 2. “某事”检查信息的存在,并更改(如果需要)对象名。 3. 注册 mbean Remains 以找到这个“东西”:-)。提前致谢。
  • 对不起,我不知道那个框架。我不确定您是否可以切换,但实际上我最近对我的 Simple JMX 系统进行了最后的润色。它允许对象以编程方式命名自己:256.com/sources/simplejmx
  • 我需要的另一方面可以看作是默认 MBeanServer 的“代理”。在这个代理中,我们可以处理请求。除了允许在注册之前处理 mbean 以及访问 mbean 的代码之外,代理还将实现相同的接口(例如,应用程序只能访问 type=myType 的 mbean)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-27
  • 2015-11-22
  • 1970-01-01
  • 2014-03-10
  • 2013-06-25
  • 2018-08-09
  • 1970-01-01
相关资源
最近更新 更多