gpt4 book ai didi

java - 强制 Spring 的 MBeanExporter 使用特定的 MBeanServer

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:58:45 26 4
gpt4 key购买 nike

我有一个在 JBoss 4.2.2 上运行的 Web 应用程序。为了监控性能,我启用了 Java 5 附带的内部平台 JMX 服务器。换句话说,我添加了:

-Dcom.sun.management.jmxremote

JBoss 的启动脚本。这按预期工作。然而,作为一个结果,所有的 MBean 现在都在平台 MBeanServer 上注册了。我不想那样,我希望它们在 JBoss 的 MBeanServer 上注册。

困难在于我使用 Spring 来注册我的托管 bean。为此,使用了 MBeanExporter。因此,我需要告诉我的 MBeanExporter 在注册 bean 时使用 JBoss 的 MBeanServer。但是,MBeanExporter 中唯一公开的影响所用服务器的方法是 setServer(MBeanServer mBeanServer)。问题是我只知道如何以编程方式获取对正确 MBeanServer 的引用,而不是在声明 MBeanExporter 的 Spring XML 中。

我的选择似乎是:

  1. MBeanExporter 编写一个子类,覆盖某些方法,以便加载正确的 MBeanServer
  2. 写一个 PostBeanProcessor 找到 JBoss 的 MBeanServer 然后调用 setServer
  3. JNDI?仅当 MBeanServer 在 JNDI 中公开时才有效,但我找不到它。

最惯用的方式是什么?我真的在做傻事吗?

最佳答案

您可以使用 JBoss API 中的静态工厂方法将 MBeanServer 注入(inject) MBeanExporter:

<bean class="org.springframework.jmx.export.MBeanExporter">
<property name="server">
<bean class="org.jboss.mx.util.MBeanServerLocator" factory-method="locateJBoss"/>
</property>
<!-- Add the rest of your MBeanExporter properties here -->
</bean>

关于java - 强制 Spring 的 MBeanExporter 使用特定的 MBeanServer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1294312/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com