【问题标题】:JMX and two network interfacesJMX 和两个网络接口
【发布时间】:2012-06-03 03:41:10
【问题描述】:

在工作中,我们有两台装有 Windows XP 和 JDK 1.6.0_07 的 PC(目前无法更新 Java),都有两个网络接口 (NIC),第一个具有 190.1.XXX.XXX 形式的 IP (我们称之为 IA),第二个有 190.2.XXX.XXX (IB)。 “ipconfig /all”为两个 NIC 带来主机名 HOSTNAME,“nbtstat /a IA”和“nbtstat /a IB”也是如此。从 IB 到 IA 不存在 ping(我想,没有从 IA 到 IB,虽然没有检查)。为了健壮性,我们应该确保我们的实际应用程序在两个 NIC 上都使用 JMX。问题从这里开始。通过以下方式可能会观察到相同的行为:

java -Dcom.sun.management.jmxremote.port=9000 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -jar <JDK_HOME>/demo/jfc/Java2D/Java2Demo.jar

在第二台 PC 上,带上 JConsole 并使用以下之一附加到远程进程:IA:9000 或 IB:9000 或 HOSTNAME:9000。他们都工作。但是,如果我在第一台 PC(运行 Java2Demo 的地方)上禁用 IA,则根本不可能有任何附件(IB 和 HOSTNAME 都没有)。 IB 的 Ping 有效,mstsc 也有效(因此 IB 建立了连接)。但是如果我禁用 IB,我会同时通过 IA 和 HOSTNAME 获得附件。

  1. 我只是不明白在这种情况下 JConsole 不会附加到 IB 上。 AFAIK,如果我们没有定义 java.rmi.server.hostname,JMX 使用 0.0.0.0 并监听两个 NIC。如果这与网络本身有关,请提出向 IT 部门询问的建议。
  2. 我们的实际应用程序有一个解决方法:在第一台 PC 上,它启动 2 个单独的进程,每个进程仅在一个 NIC 上具有 JMX,第三个进程将来自客户端的数据与第三个 JMX 合并。这三个进程分别从 .bat 文件启动。我真的很想改变这一点,在两个 NIC 上都有一个带有一个 JMX 的进程;或者至少,如果可能的话,使用两个 JMX 启动一个进程,每个 NIC 一个。是吗?

非常感谢。

【问题讨论】:

    标签: java network-programming jmx nic multihomed


    【解决方案1】:

    您可以使用 JMXConnectorServerFactory 在同一个 jvm 上启动多个 JMXConnectorServer(网上有很多示例/教程)。您可以公开平台 MBeanServer 或您自己的自定义 MBeanServer。

    【讨论】:

    • 实际上,在我看来,连接问题是因为绑定到 IA 的 RMIRegistry。根据this,有可能解决这个问题。根据that,一个必须运行 2 个 JVM。我应该正确检查问题,但我会非常乐意得到一些帮助。谢谢
    • 根据我的建议,您将设置 2 个单独的 rmi 注册表,因此这不是问题。你真的试过了吗?
    • 感谢您的回复。是的,我做到了。不幸的是,它没有用。能否请您发布任何教程的链接,这可能对我的情况有帮助?同样,根据我发布的链接,有些人认为在一个 JVM 中是不可能的。如果您愿意,我可以发布我编写的参考应用程序,其行为方式与我们的主应用程序相同。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多