【问题标题】:JMX MBeans not visible after deploy部署后 JMX MBean 不可见
【发布时间】:2011-04-11 08:45:49
【问题描述】:

环境 NetBeans 6.9.1、GlassFish 3.1、METRO 2.1

我想列出可用的 Web 服务,因此我在 JMX MBeanServer 中查询 *:type=WSEndpoint,*。问题是,部署后只有约 56 个 Mbean,并且 WSEndpoint bean 未注册。如果我使用 JMXterm 连接,MBean 计数会上升到 ~380,并且所有 WSEndpoint bean 都是可见的。在 JConsole 中,我没有看到任何 folder,但在运行 JMXterm 之后我看到了。

即使我调用 Web 服务,MBean 仍保持未注册状态。 METRO监控默认是开启的,我就这样离开了;部署后会显示控制台消息INFO: Metro monitoring rootname successfully set to: amx:pp=/mon/server-mon[server],type=WSEndpoint,name=...

JMXterm 做了什么以使所有 MBean 都可见?它是否对MBeanServer 进行任何方法调用?有什么解决方案,让我可以在部署后立即访问WSEndpoint bean?

【问题讨论】:

  • +1 只是为了让我了解 Jmxterm ;-)

标签: java glassfish jmx java-metro-framework


【解决方案1】:

您可以通过对 MBean amx-support:type=boot-amx 执行 JMX 操作 bootAMX 来触发所有 AMX MBean 的注册。

【讨论】:

  • 谢谢,这正是我想要的!对于 JMX 新手,调用如下:mBeanServer.invoke(new ObjectName("amx-support:type=boot-amx"), "bootAMX", new Object[0], new String[0]);.
【解决方案2】:

同时,我在 METRO 用户指南中找到了答案:19.5. Notes

AMX mbean 是延迟创建的。因此,如果在 GlassFish 中部署一个端点,然后使用 JConsole 查找 Metro WSEndpoint mbean,则有时 AMX mbean 不会出现。要激活它,请启动 asadmin GUI 或 CLI。或者使用 jmxterm 并发出它的 domain 命令。

在某些情况下,Metro 端点 mbean 在端点收到其第一个客户端调用之前不会出现。

如果存根仅用于一次调用然后立即关闭,则 WSClient mbean 可以快速出现和消失。使用可靠消息传递或安全对话的存根通常保持活动更长时间,因为它很可能会用于多个呼叫。

但是,在运行 asadmin GUI 或 CLI 没有帮助后,我只能通过使用 JMXterm 连接到 JVM 来解决它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-07
    • 1970-01-01
    • 1970-01-01
    • 2011-08-09
    • 2018-07-26
    • 1970-01-01
    • 1970-01-01
    • 2022-01-15
    相关资源
    最近更新 更多